非プログラマーのためのインフォマティクス入門。(仮)

非プログラマーがインフォマティクスについて勉強したことを記録します。主にKNIMEというソフトを使用しています。

【KNIME】ノード紹介:Parallel Chunk Start 〜多重影分身するってばよ〜

今回の記事は短めですが、活用できる場面にかなり高い確率で遭遇できると思います。

どんな場面かというと…

この処理、重いんですけど!

という時です。

 

そんな時は、Parallel Chunkを使いましょう!

 

Parallel Chunk Start (End)

 重たい処理の前後をParallel Chunk StartとEndで挟むことによって、その区間内の処理を分散させて並列処理をすることができます。

 今回は、以前に紹介したRenderer to Imageについて並列処理をしていこうと思います。

f:id:sumtat:20170822222833p:plain

Loopを使って、複数のファイルを読む方法について紹介した記事の例題で作成した、4335化合物のデータを持つテーブルの構造式部分を画像ファイル(png)に変換しようとする場面を想定してください。

Renderer to Imageノードを接続すれば目的は達成できるのですが、ちょっと処理に時間がかかるんです。私の場合は約100秒かかりました。

 

やっぱり、ちょっと重い作業を一人で抱え込むのはよくないですよね。そこで、分身を作って作業を分散させるのがParallel Chunkです。

 Start側の設定画面を見てみます。

f:id:sumtat:20170822225605p:plain

 分身をどんだけ作る?の設定です。上はおまかせ設定、下は手動で指定です。自動設定で概ね問題ないと思います。手動設定にして、分割数を増やしたから必ず速くなるわけでは無いようです。また、GPUを使った処理はできないようです。*1

 

お尻にParallel Chunk Endをくっつけて実行してみます。

f:id:sumtat:20170822232751p:plain

なんか、ぴょこっと現れました!(キャプチャの赤枠)

ダブルクリックすると中身がのぞけます。

f:id:sumtat:20170822232950p:plain

ほーら、分身してますよね。並列に分割したこの処理を、最後にまとめてくれるのがChunk Endになります。Parallel Chunk Endに関しては設定は特に要りません。

f:id:sumtat:20170822233119p:plain

無事に作業が完了すると、分身は消えます。

 

今回の場合、約40秒かかりました。

chunk無し:約100秒 → chunk有り:約40秒ということで半分以下に時間が短縮できました。

地味ですが、役に立ってくれると信じています。

 

皆様、仕事とストレスもなるべく抱え込まないように分散させましょうね。

 

 

 

 

*1:現在のところDeeplearning 4J(ディープラーニング用のノード群)のみで、唯一GPU設定が可能なようですが、今回の並列処理はあくまでCPUでということだと思います。