社内でAdvent of Codeみたいな企画があり、AlteryxではHandlingできなさそうな物量を無理やり正攻法の全件探索で解こうとしているのですが、見たことがないエラーが出てきます。(端的にいうと巡回セールスマン問題でAlteryxの限界にチャレンジしており、5億ケース、60億行になる処理を100万ケースずつに分けて500回のBatch処理をしようとしている)
このエラーが出てきた際に対処する方法はあるのでしょうか?
一応回避策はあり(Temp yxzpを分割して吐き出してManualで分けて実行)、また賢いアルゴリズムを使えば一瞬で解けたりするのですが、今後のためにアドバイスを頂ければと思います。
Alteryxは2022.3を使用、PCのHard Diskは1TB中500GBの空きあり、Alteryx設定はDefaultのままです。うまく流れれば3時間ほどで処理が終わるはずの内容です。(1/8ほど処理したところでエラーが起きる)
AMP Engineを使用するとCPUは全部使用されており、Memoryは32GBギリギリまで行ってLoop毎に下がるを繰り返しており、MacroからのOutputも最小限にしているので何とか流れると思っていたのですが、ダメでした。
恐らくBatch処理の結果がメモリ上にフルでデータ保管されており、いつしかRAMをはみ出して、仮想メモリも食いつぶし、スラッシングが起きて、強制終了という感じなのかなと想像しています。
解決済! 解決策の投稿を見る。
地図データで日本全国の数十メーターのメッシュに区切って地区ごとにマッチングみたいな処理はしたことありますが、数時間かけても特に問題なく動きました。この時はAMPエンジン出る前だったので、AMPでは試したことがないです。
めちゃくちゃデータ量が多い場合は旧エンジン(E1)の方がAMPより安定して動くように思います(それこそAdvent of CodeでもE1の方が安定していました)。
E1の方は、1レコードずつ処理していくので、時間はかかりますが(上記の処理は8時間とかかかっていましたが完走できていました)、変にメモリを莫大に使ったり、ということはないので安定しているように思います。
ちなみに、ワークフロー内部で生成されるデータ量はどれくらになっているのでしょうか?(ワークフローの%とともに出るレコード数とデータ量のことを言っています)。表示されているものがすべてメモリに乗ってくるわけではないので、メモリを見ていると思ったほど消費していないと思います(ブロッキングツールでブロックした分は消費されていると思いますが・・・)。
なお、メモリが32G乗っているPCなんですかね・・・?おそらくデフォルトではメモリ半分までしか使わないので、ワークフロー設定でオーバーライドして、24Gくらいまで使えるようにしても動くと思います(OS用に8Gくらいは残しておきたいです)。
ちなみに、HDDアクセスが100%みたいになっているときは、メモリに乗り切らないためストレージに書き出しながら処理を行っていることになります。
メモリに乗れば全然処理は早くなるので、バッチで分割処理できるのであれば、メモリに乗り切るデータ量に抑えておくことがポイントです。
あと、バッチマクロの後も処理が続いてメモリを使いそうであればいっそのことバッチマクロ内でyxdbなどに保存してからまた続きを処理するなどしても良いように思います。
あまりこのエラー見たこと無いですが、どのあたりのツールでエラーが出ているかかなり興味深いです。
@AkimasaKajitani さん、ありがとうございます。
確かにAMP Engineが原因かもしれません。以前はうまく流れないことも多かったのですが、最近はうまくいこともあったので使っていました。今試しにE1で流していますが、Memory使用量は16GB/32GBと落ち着いていて4時間位で流れそうな感じです。AMP Engine使用中は24~31.5GB/32GBとDefaultのままだと限界までMemoryを使用するみたいです。
初期に作成したWFではデータ量が300GBとか表示されていて、こんなに大きくて良く動いているなという感じでした。当時エラーが出ていたのはポリライン作成、60億行で4億個のポリラインを作ろうとしていたのでそれはさすがに無理だったかと。
その後いろいろ工夫してBatch Macro化し、一旦分割保存したyxdbも使用、一度に処理するデータ量もかなり減らしたので処理的には行けると思っていたのですが、論理プロセッサ数20個と多くAMP Engineで同時処理で爆発と言った感じだったのかもしれません。ちなみに工夫したWFでエラーが起きたのはBatch Macro部分だったので内部のデータ量は見えませんでした。
でもまぁ、ある程度安定して動いてくれないと困りますよね、、、
正直なところなぜこういう現象が起こるのか、、、ケース登録しても良いかもしれません・・・。
(時間がかかっても走り切ってほしいところです・・・)
E1モードで6時間21分で終わりました。やはりAMP Engineは複雑なWFや極端に大きなデータだと問題が出る可能性があるみたいですね。