-
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
モデル量子化 #24
base: main
Are you sure you want to change the base?
モデル量子化 #24
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
おー!!!ありがとうございます!!!!!!
全然知らなかったのですが、キャリブレーションの流れは実際に元のモデルで推論した結果を使う流れでしょうか。
是非時間を作って試してみたいと思っています!!!
そうですね。convertで生成したonnxを使っています |
Quantization usually doesn't work well with models produce continuous values, have you tried pruning? |
@Patchethium |
This may give you a brief introduction: https://github.com/VainF/Torch-Pruning#0-how-it-works |
@Yosshi999 大変お待たせしました、試してみました!!!! 以下ログです! $ python quantize.py --onnx_dir onnxmodel/ --output_dir quantmodel/ --speaker_size 3 --use_gpu
2023-11-11 01:23:47,608 - quantize - INFO - loading calibration texts
2023-11-11 01:23:47,657 - quantize - INFO - loaded 1000 texts
2023-11-11 01:23:47,658 - quantize - INFO - loading forwarder
2023-11-11 01:23:50,020 - quantize - INFO - loaded forwarder in cuda mode
100%|█████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [12:57<00:00, 1.29it/s]
$ python test.py --baseline hiho_model/ --model quantmodel/ --speaker_id 2
loaded 20 texts
yukarin_s loaded!
yukarin_sa loaded!
yukarin_sosoa loaded!
Removing weight norm...
hifi-gan loaded!
torch: 20it [00:28, 1.41s/it]
onnx: 20it [00:11, 1.70it/s]
=== time for processing 20 texts ===
baseline: 149.125 sec
model: 84.969 sec
x1.755 faster
=== model's PSNR (higher is better) ===
26.008260494727715 dB
$ python run.py --yukarin_s_model_dir onnxmodel/ --yukarin_sa_model_dir onnxmodel/ --yukarin_sosoa_model_dir onnxmodel/ --hifigan_model_dir onnxmodel/ --method onnx --speaker_ids 1 2
$ python run.py --yukarin_s_model_dir quantmodel/ --yukarin_sa_model_dir quantmodel/ --yukarin_sosoa_model_dir quantmodel/ --hifigan_model_dir quantmodel/ --method onnx --speaker_ids 1 2 ちなみに100データだとPSNR=25.62dBでした。 onnx-.-2.mp4onnx-.-1.mp4ちなみに量子化なしがこんな感じです。 onnx-.-2.mp4onnx-.-1.mp4比較すると、全体的にホワイトノイズが乗っている感じなのかなと思いました!!! 今のアルゴリズムがわからないので適当に言っているのですが、多分hifigan部分だけ量子化する形にすると、スピード辺りの品質劣化が抑えられるのかもとか思いました。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
あ、gitignoreにonnxmodelとquantmodelを追加すると使い勝手上がるかもです!
decode onnxをstatic量子化するスクリプトを書きました。
キャリブレーションデータセット全体(1000samples)では試していませんが、30サンプルで量子化(
python quantize.py --iteration_max 30
)したところ、以下の結果になりました。torch vs onnx
torch vs 量子化onnx
つまり、音声がかなり劣化していますが、torch版より3倍、元のonnxより2倍速くなっています
テストに使ったモデルは0.0.1なので、実際のモデルでどれくらい音声が劣化するか・キャリブレーションデータセットのサイズを増やすとどうなるかは試す必要がありそうです