最終更新:2024-11-28 (木) 08:33:26 (10d)  

whisper.axera
Top / whisper.axera

https://github.com/ml-inory/whisper.axera

依存

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
    • distil-large-v3?
    • distil-large-v3?
  • 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時間