leapmindのblue-oil メモ1(TFグラフ変換)

何者か知らなかったのでちょっとだけ覗いてみた。

github.com

blueoilにはlmnetとdlkというものがあった。

lmnet

lmnetはTensorflowによる学習や推論をサポートしている。 分散学習するかどうかもconfig_fileに設定できてhorovodを利用している。

dlk

Tensorflowのprotocol buffer or onnix形式を受け取り、独自グラフに変換している
pb->graph_def->dlk的な感じ.(以下TFの場合)
generate_project.pyを実行すると, pb->graph_defの変換をTensorFlowIOにて行う.そしてoptimize_graph_stepが実行されTFのgraph_defからdlkのグラフに変換される. そしてその後,dlkグラフの最適化処理を行っている.

  • グラフ変換(TF)

importerクラスでtf->dlkグラフに変換. Importerメンバー関数のcreate_new_nodeでTFとdlk用のopの変換を行っている. 変換はnode.op_typeを見て判断(1部opはDLK_OPERATOR_MAPで事前に変換(BiasAdd->Addとか))
dlk側のopはoperater.pyに記述