-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
onnxruntime-webのWebGLでdecode.onnxを読めるようにする #4
Comments
1の方法、過去のpytorchを使ってtorch.onnx.exportを使ってOPSET=8のonnxモデルを書き出そうとしてみました。 過去のpytorchで今の.pthを読み込むこと自体は可能でした。 少なくともtorch==1.1.0ではOPSET=9しか書き出せませんでした。 であれば、今のpytorchでモデル構造を変えたほうが楽だと思います。 |
ones_like的な操作をしただけでConstantOfShapeが生えてしまうのでpytorchをいじるのは難しいかもしれません https://gist.github.com/Yosshi999/3ddab2e017d8be26f3c07534718b1929 |
おお!! 参考になります!! |
別のエラーが出ます...
本来Squeezeのaxesパラメータはoptionalのはずなんですが、それが無いとエラーになってるっぽいです?? |
NetronでいうWhere_486がここなのでやはりf0のマスク関係ですね |
現状batchsizeが1に固定されている以上(固定されてますよね?)f0等のマスキングが意味を成してないので、mask周りを消してしまうと直るかもしれません |
おーーーなるほどです!! batchsizeは1で固定して大丈夫なはずなので、消せそうな気がしますね!! ちょっとコード追ったのですが、 |
↑の件ですが、maskを与える部分にNoneを入力するとそもそも無視してくれるかもしれません。
試してみたかったのですが、そういえば |
Convert method 1が動いたと思います。 |
ありがとうございます!!とりあえず違うエラーになることは確認できました・・・!
maskがないのにwhereがあるのが不思議だったのですが、どうやらexpandする際の次元の計算?に使われてるっぽかったです。(なぜ次元を計算する程度でwhereが必要なんだろう 🤔 ) vv_core_inference/vv_core_inference/make_yukarin_sosoa_forwarder.py Lines 121 to 123 in 14b85de
(whereは何箇所かあって、全部これでした。他にもexpandが使われているのかもですが、少なくともvv_core_inference内ではありませんでした。) |
|
expend の "-1を指定した次元はそのままにする" を実現する為っぽいですね > whereが必要な理由 具体的な実装はこれだと思います |
¯\(ツ)/¯ |
いやぁ・・・・・・・Expandが無いんですね・・・・・・ |
decode.onnxに使われているoperatorは以下の通りで、
このうちhttps://github.com/microsoft/onnxruntime/blob/master/js/web/docs/operators.md によれば非対応のoperatorは次の通りです。
|
Constantについてはどうも何かの処理で消えるっぽいので気にする必要は無さそうです。 |
ちなみにhifiganのみに注目すると登場する命令は
のみになり、非対応operatorは
のみになります。 これは提案ですが、yukarin_sosoaのwebgl化は諦めて、hifiganのみのwebgl化を目指してConvTransposeの解決に集中するというのはどうでしょうか?実行時間もsosoaとhifiganは大体1:10くらいの差があるので、十分な高速化が期待できると思います。 |
なるほど、現実的で面白い提案だと思います!! -rw-r--r-- 1 hihok 55K 6月 7 23:20 model/yukarin_s/model.pth
-rw-r--r-- 1 hihok 36K 6月 7 23:20 model/yukarin_sa/model.pth
-rw-r--r-- 1 hihok 1.4M 6月 7 23:20 model/yukarin_sosoa/model.pth
-rw-r--r-- 1 hihok 54M 6月 7 23:20 model/hifigan/model.pth それに、そういえばhifiganはいろんなacoustic model(sosoa)に対して統一することもできるはずで、分割しておくとちょっと便利そうです。 |
microsoft/onnxruntime#10873 (comment)
なかなか不穏なことが書かれてますね |
なるほど・・・・・・?
いろいろあるんですねぇ。。 |
概要
スマホ版VOICEVOXを作ってみたいのですが、スマホでモデルを推論する部分が一番の課題になります。
叶える方法は2つ、スマホで推論できるようCoreMLなどを頑張る方法と、onnxruntimeとWebGLを使う方法です。
このissueは後者の方法を検証します。
方法
WebGL上で動かしたいのは、一番重たいdecode.onnxだけです。
このモデルは普通にやると、例えばint64していないなどの理由でWebGL上では動きませんでした。
int64を回避しても、ConstantOfShapeなど一部のlayerがなく実行できません。
なので、未対応のonnxのlayerを迂回する必要があります。
方法は3通りほどあります。
1がダメだったので、2か3ですが、onnxの知識を身に付けるよりpytorchドメインでやったほうが簡単そうなので、2の方法が良いのかなと思っています。
実行
迂回したonnxモデルへの変換はto-onnxruntime-web-webglで頑張っています。
変換した後onnxruntime-webで動かせるかは vv_check_web で確かめられます。
The text was updated successfully, but these errors were encountered: