Open itsmeterada opened 5 months ago
2GBを超えるONNXをエクスポートした場合に、複数のpbに出力されるのは規定の動作です。出力した後で、ONNXのAPIで読み込み、all_tensors_to_one_file=Trueで書き出すと、1つのonnxと、1つのpbに結合可能です。 https://github.com/onnx/onnx/blob/main/docs/PythonAPIOverview.md
diffuserを使用しているモデルのエクスポート例です。拡散モデルなので、tokenizerとddimのsamplerのコードをdiffuserから持ってくる必要があると思います。 https://github.com/axinc-ai/ailia-models/pull/1379
@kyakuno ご教授ありがとうございます。 頂いた内容を元に移植作業を進めさせて頂きます。
ControlNetについてはcontrolnet.onnxとcontrolnet.pbに書き出し、onnxruntime.InferenceSession("controlnet.onnx")
で読み込めることを確認
@kyakuno
UNetをエクスポートするときに以下のエラーが出ます。
torch.onnx.errors.UnsupportedOperatorError: Exporting the operator 'aten::fft_fftn' to ONNX opset version 17 is not supported.
以前にも同じ問題が発生した経験がある場合、どのように対処したかご教授いただけますと幸いです
メモ:
dynamoでエクスポートするとどうでしょうか? https://github.com/pytorch/pytorch/issues/112382 ailiaのメモリについては、memory_mode=11を与えてみてください。
@kyakuno ご教授ありがとうございます。無事unetはエクスポートできました!
エクスポートしたファイルをonnxruntimeで読み込もうとするとSegumentation faultが発生して強制終了されるのでそれの原因調査中ですが、それが完了すればあとは調整のみとなります。 時間がかかっており申し訳ないですが、進捗あり次第再度共有させていただきます
@kyakuno UNetをエクスポートしたファイルをailia SDKで読み込もうとすると以下のようなエラーになるようです。
一方、onnxruntimeで開こうとするとsegmentation falutが発生する問題がまだ解決できておりません。 引き続きチェックを進めます
今まで対応した内容まとめ
onnxruntime.capi.onnxruntime_pybind11_state.Fail: [ONNXRuntimeError] : 1 : FAIL : Non-zero status code returned while running Split node. Name:'/time_proj/Slice_1/GatherSliceToSplitFusion/' Status Message: Cannot split using values in 'split' attribute. Axis=1 Input shape={1,1,320} NumOutputs=2 Num entries in 'split' (must equal number of outputs) was 2 Sum of sizes in 'split' (must equal size of selected axis) was 320
こちらの方法でonnxにしてみる(方法は同じだがパラメータが違う) https://zenn.dev/xiangze/articles/b984d5e806e1dd
https://github.com/InstantID/InstantID
https://instantid.github.io/