最終更新:2024-11-28 (木) 08:33:26 (10d)
whisper.axera
Top / whisper.axera
https://github.com/ml-inory/whisper.axera
依存
- openai-whisper==20231117
- onnx
- onnx-simplifier?
- onnxruntime?
- torch
- zhconv?
- soundfile?
- kaldi_native_fbank?
- dfss?
model_convert
Pulsar2
PyTorch -> ONNX
- export_onnx.py?
- tinyとsmallだけ対応
model
- tiny?
- tiny.en?
- base
- base.en?
- small?
- small.en?
- medium?
- medium.en?
- large?
- large-v1?
- large-v2?
- large-v3?
- distil-medium.en?
- distil-small.en?
- distil-large-v2?
- not supported
- for fine-tuned models from icefall
- medium-aishell?
出力
tiny-decoder-loop.onnx デコーダーの反復処理部分 tiny-decoder-main.onnx デコーダ全体の初期処理部分 tiny-encoder.onnx エンコーダモジュール tiny-positional_embedding.bin 位置エンコーディング(Positional Embedding)を格納したバイナリファイル tiny-positional-embedding.npy 位置埋め込みデータのNumPy形式ファイル tiny-tokens.txt トークン化された単語リストや辞書
ONNX -> Axera
変換
- tiny
$ python generate_data.py --model tiny ./datasets/aishell_S0764/BAC009S0764W0123.wav 0: 但因为聚集了过多公共资源 但因为聚集了过多公共事员 CER: 16.666666666666664% ./datasets/aishell_S0764/BAC009S0764W0122.wav 1: 一二线城市虽然也处于调整中 12线城市虽然也处于挑众中 CER: 30.76923076923077% ./datasets/aishell_S0764/BAC009S0764W0121.wav 2: 甚至出现交易几乎停滞的情况 甚至出现交易几乎停滋的情况 CER: 7.6923076923076925% ./datasets/aishell_S0764/BAC009S0764W0125.wav 3: 标杆房企必然调整市场战略 不要敢放弃必然挑藏市场大略 CER: 66.66666666666666% ./datasets/aishell_S0764/BAC009S0764W0124.wav 4: 为了规避三四线城市明显过剩的市场风险 为了归币三四线城市明显郭胜的市场风险 CER: 22.22222222222222% total CER: 27.941176470588236% Save calibrations_tiny/encoder/mel/../mel.tar.gz Save calibrations_tiny/decoder_main/tokens/../tokens.tar.gz Save calibrations_tiny/decoder_main/n_layer_cross_k/../n_layer_cross_k.tar.gz Save calibrations_tiny/decoder_main/n_layer_cross_v/../n_layer_cross_v.tar.gz Save calibrations_tiny/decoder_loop/tokens/../tokens.tar.gz Save calibrations_tiny/decoder_loop/n_layer_self_k_cache/../n_layer_self_k_cache.tar.gz Save calibrations_tiny/decoder_loop/n_layer_self_v_cache/../n_layer_self_v_cache.tar.gz Save calibrations_tiny/decoder_loop/n_layer_cross_k/../n_layer_cross_k.tar.gz Save calibrations_tiny/decoder_loop/n_layer_cross_v/../n_layer_cross_v.tar.gz Save calibrations_tiny/decoder_loop/positional_embedding/../positional_embedding.tar.gz Save calibrations_tiny/decoder_loop/mask/../mask.tar.gz
- small
$ python generate_data.py --model small ./datasets/aishell_S0764/BAC009S0764W0123.wav 0: 但因为聚集了过多公共资源 但因为聚集了过多公共事员 CER: 16.666666666666664% ./datasets/aishell_S0764/BAC009S0764W0122.wav 1: 一二线城市虽然也处于调整中 12线城市虽然也处于调整中 CER: 15.384615384615385% ./datasets/aishell_S0764/BAC009S0764W0121.wav 2: 甚至出现交易几乎停滞的情况 甚至出现交易几乎停滞的情况 CER: 0.0% ./datasets/aishell_S0764/BAC009S0764W0125.wav 3: 标杆房企必然调整市场战略 标杆防止必然调整市场战略 CER: 16.666666666666664% ./datasets/aishell_S0764/BAC009S0764W0124.wav 4: 为了规避三四线城市明显过剩的市场风险 为了规避三四线城市明显过剩的市场风险 CER: 0.0% total CER: 8.823529411764707% Save calibrations_small/encoder/mel/../mel.tar.gz Save calibrations_small/decoder_main/tokens/../tokens.tar.gz Save calibrations_small/decoder_main/n_layer_cross_k/../n_layer_cross_k.tar.gz Save calibrations_small/decoder_main/n_layer_cross_v/../n_layer_cross_v.tar.gz Save calibrations_small/decoder_loop/tokens/../tokens.tar.gz Save calibrations_small/decoder_loop/n_layer_self_k_cache/../n_layer_self_k_cache.tar.gz Save calibrations_small/decoder_loop/n_layer_self_v_cache/../n_layer_self_v_cache.tar.gz Save calibrations_small/decoder_loop/n_layer_cross_k/../n_layer_cross_k.tar.gz Save calibrations_small/decoder_loop/n_layer_cross_v/../n_layer_cross_v.tar.gz Save calibrations_small/decoder_loop/positional_embedding/../positional_embedding.tar.gz Save calibrations_small/decoder_loop/mask/../mask.tar.gz
出力
- calibrations_tiny
.axmodelに変換
AX650?/small?
- small-encoder
pulsar2 build --input small-encoder.onnx --config config_whisper_encoder_u16.json --output_dir small_encoder --output_name small-encoder.axmodel --target_hardware AX650 --compiler.check 0
- メモリが20GBくらい必要な模様 (8GBじゃ足りなかった)
- 36分かかった
- small-decoder-main
pulsar2 build --input small-decoder-main.onnx --config config_whisper_decoder_main_u16.json --output_dir small_decoder_main --output_name small-decoder-main.axmodel --target_hardware AX650 --compiler.check 0
- small-decoder-loop
pulsar2 build --input small-decoder-loop.onnx --config config_whisper_decoder_loop_u16.json --output_dir small_decoder_loop --output_name small-decoder-loop.axmodel --target_hardware AX650 --compiler.check 0
AX650?/tiny?
- tiny-encoder
pulsar2 build --input tiny-encoder.onnx --config config_whisper_encoder_u16.json --output_dir tiny_encoder --output_name tiny-encoder.axmodel --target_hardware AX650 --compiler.check 0 --onnx_opt.enable_onnxsim true
- 4分くらいで終わった
- tiny-decoder-main
pulsar2 build --input tiny-decoder-main.onnx --config config_whisper_decoder_main_u16.json --output_dir tiny_decoder_main --output_name tiny-decoder-main.axmodel --target_hardware AX650 --compiler.check 0
- tiny-decoder-loop
pulsar2 build --input tiny-decoder-loop.onnx --config config_whisper_decoder_loop_u16.json --output_dir tiny_decoder_loop --output_name tiny-decoder-loop.axmodel --target_hardware AX650 --compiler.check 0
AX620E/small?
- small-encoder
pulsar2 build --input small-encoder.onnx --config config_whisper_encoder_u16.json --output_dir small_encoder --output_name small-encoder.axmodel --target_hardware AX620E --compiler.check 0 --onnx_opt.enable_onnxsim true --npu_mode NPU2
AX620E/tiny?
- tiny-encoder
pulsar2 build --input tiny-encoder.onnx --config config_whisper_encoder_u16.json --output_dir tiny_encoder --output_name tiny-encoder.axmodel --target_hardware AX620E --compiler.check 0 --onnx_opt.enable_onnxsim true --npu_mode NPU2- smallのconfigのまま実行したらメモリ60GB/3時間