Closed ooe1123 closed 5 months ago
ailia SDKのSTFT対応が必要。
STFTマージ済みの最新Masterで実行。
ailia.core.AiliaUnimplementedException: code: -15 (This function is not implemented.)
+ error detail : Layer:Constant_1355(Constant) Error:Tensors with data_location set to other than DEFAULT is not supported.
ConstantLayerが外部データ配置に未対応の模様。
もろもろの修正を取り込んだailia本体のmaster最新で、手元での動作を確認しました。
短い音声の場合は動作を確認しました。 長い音声の場合は、onnx runtimeでもailiaでも下記のエラーになりますね。 サンプルかonnxの方に何か調整が必要そうですね。
ailia
INFO model_utils.py (109) : reazonspeech-nemo-v2_encoder_weights.pb is prepared!
INFO reazon_speech2.py (588) : axell.wav
INFO reazon_speech2.py (599) : Start inference...
Traceback (most recent call last):
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 683, in <module>
main()
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 674, in main
recognize_from_audio(models)
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 616, in recognize_from_audio
hyp = predict(models, audio)
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 575, in predict
output = net.predict([audio, input_signal_length])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/ailia/wrapper.py", line 410, in predict
self.update()
File "/usr/local/lib/python3.11/site-packages/ailia/wrapper.py", line 726, in update
core.check_error(code, self.__net)
File "/usr/local/lib/python3.11/site-packages/ailia/core.py", line 931, in check_error
raise e(detail)
ailia.core.AiliaInvalidLayerException: code: -10 (Incorrect layer parameter. [broken or unsupported AI model file])
+ error detail : Layer:/encoder/layers.0/self_attn/Add_21_output_0(Eltwise_DNN) Error:Unacceptable broadcast size pair [output:(1,8,256,128) (stride:(262144,32768,128,1)) vs input /encoder/layers.0/self_attn/Slice_44_output_0:(1,8,5376,128) (stride:(5505024,688128,128,1))].
onnxruntime
kyakuno@mbakk reazon_speech2 % python3 reazon_speech2.py -i axell.wav --onnx
INFO arg_utils.py (13) : Start!
INFO arg_utils.py (163) : env_id: 2
INFO arg_utils.py (166) : MPSDNN-Apple M2
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (89) : ONNX file and Prototxt file are prepared!
INFO model_utils.py (109) : reazonspeech-nemo-v2_encoder_weights.pb is prepared!
INFO reazon_speech2.py (588) : axell.wav
INFO reazon_speech2.py (599) : Start inference...
2024-04-27 20:16:28.439827 [E:onnxruntime:, sequential_executor.cc:514 ExecuteKernel] Non-zero status code returned while running Add node. Name:'/encoder/layers.0/self_attn/Add_21' Status Message: /Users/runner/work/1/s/onnxruntime/core/providers/cpu/math/element_wise_ops.h:560 void onnxruntime::BroadcastIterator::Append(ptrdiff_t, ptrdiff_t) axis == 1 || axis == largest was false. Attempting to broadcast an axis by a dimension other than 1. 256 by 5376
Traceback (most recent call last):
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 683, in <module>
main()
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 674, in main
recognize_from_audio(models)
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 616, in recognize_from_audio
hyp = predict(models, audio)
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/kyakuno/Desktop/ailia/ailia-models-ax/audio_processing/reazon_speech2/reazon_speech2.py", line 577, in predict
output = net.run(None, {'input_signal': audio, 'input_signal_length': input_signal_length})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_inference_collection.py", line 220, in run
return self._sess.run(output_names, input_feed, run_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
onnxruntime.capi.onnxruntime_pybind11_state.RuntimeException: [ONNXRuntimeError] : 6 : RUNTIME_EXCEPTION : Non-zero status code returned while running Add node. Name:'/encoder/layers.0/self_attn/Add_21' Status Message: /Users/runner/work/1/s/onnxruntime/core/providers/cpu/math/element_wise_ops.h:560 void onnxruntime::BroadcastIterator::Append(ptrdiff_t, ptrdiff_t) axis == 1 || axis == largest was false. Attempting to broadcast an axis by a dimension other than 1. 256 by 5376
メモリ消費量は6.31GB。
[00:00:00.780 --> 00:00:03.500] 自動運転の未来を加速させる
[00:00:04.139 --> 00:00:11.099] アクセルの取り組みaiをより速くより使いやすくすぐに始められる
[00:00:12.380 --> 00:00:15.900] 豊かな未来を創造する企業のよき理解者になる
[00:00:17.420 --> 00:00:22.779] ai実装に必要な学習から推論までトータルソリューションを提供できる
[00:00:23.980 --> 00:00:27.579] アクセルはテクノロジーで未来を加速させる
[00:00:29.580 --> 00:00:31.419] アクセルではハードウェア
[00:00:31.899 --> 00:00:38.619] ソフトウェアヨウ素技術の3つの開発力をもとに5つの事業領域に展開をしています
[00:00:40.460 --> 00:00:45.500] 現在めざましい発展を遂げているaiや日々重要性が増している
[00:00:45.980 --> 00:00:53.339] 情報セキュリティーなどさまざまな分野でアードウェアからソフトウェアまで一貫したソリューションを提供しています
[00:00:54.620 --> 00:00:58.219] 特にaiおよび自動運転領域では
[00:00:58.700 --> 00:01:01.100] アイデアsdkをコア技術として
[00:01:01.740 --> 00:01:05.980] モデルやアプリケーションなどの快適な開発環境の構築と
[00:01:06.540 --> 00:01:11.980] それを動かす実行基盤としてのハードウェアの開発を進めることで理想的な
[00:01:12.460 --> 00:01:14.939] ai開発環境の構築を目指しています
[00:01:18.460 --> 00:01:21.659] アイデアsdkはあらゆるハードウェアで動き
[00:01:22.540 --> 00:01:27.019] c+charpfysonjavaなど
[00:01:27.500 --> 00:01:30.459] さまざまなプログラミング言語にも対応しているため
[00:01:31.260 --> 00:01:35.500] スマートモビリティファクトリーオートメーション監視カメラなど
[00:01:36.060 --> 00:01:38.060] さまざまな用途でご利用いただけます
[00:01:40.620 --> 00:01:47.099] またアイデアsdkとともにお客様に自由に使っていただけるアイデアモデルズという
[00:01:47.659 --> 00:01:53.500] 240種類を超える最新のaiモデルとサンプルをキットハブで提供しています
[00:01:54.540 --> 00:02:00.939] モデルの種類は今後も順次増えていくためお客様に最適なモデルをご提供することが可能です
[00:02:03.579 --> 00:02:09.420] またiosandroidで気軽にaiを試せるデモアプリも公開しています
[00:02:10.939 --> 00:02:15.500] そしてai用の推論用アクセラレータも開発提供しています
[00:02:17.020 --> 00:02:22.460] ハードウェアアクセラレータのため推論の拘束化省電力化が可能になっています
[00:02:23.819 --> 00:02:27.180] アクセルはaiチップ設計拠点で進めている
[00:02:27.659 --> 00:02:39.900] aiアクセラレータ開発のための評価プラットフォームの構築に協力会社として参加し強化プラットフォームの実証チップであるai1に開発したアクセラレータが搭載されました
[00:02:41.020 --> 00:02:47.020] アクセルではaiチップ設計拠点が開発したai1強化ボードを使用して
[00:02:47.500 --> 00:03:01.580] ai用の評価を行っていますアクセルドットオートはアイデアsdkと連携することでプログラムを変更することなくgpuやcpuと同じように
[00:03:02.060 --> 00:03:04.780] ハードウェアアクセラレータを使用することができます
[00:03:06.379 --> 00:03:12.540] aiの活躍フィールドとして日々研究が進むモビリティの分野でもアイデアsdk
[00:03:13.099 --> 00:03:21.660] そしてアクセルアクセルではai事業の一環としてaiの推論処理用の
[00:03:24.780 --> 00:03:27.740] 自社で新規に設計したハードウェアアクセラレーターでして
[00:03:28.379 --> 00:03:32.220] aiの推論処理を高速かつ省電力に実行することができます
[00:03:39.180 --> 00:03:46.220] 今回aiチップ設計拠点が開発する実証チップのai1というものに協力会社としてアクセルが参加させていただきました
[00:03:52.140 --> 00:04:03.100] 本来aiチップを開発しようと思えるとaiのアクセラレーターのコアの部分開発だけではなくて周辺とのインタフェスの回路であったりさまざまな回路の設計というものが同時に必要になってくるんですけれども
[00:04:03.580 --> 00:04:11.340] ai蓄積拠点の作られたプラットーンを使うことでこういった部分のaiアクセラレーターのコアの部分に注力することができます
[00:04:14.939 --> 00:04:20.939] ai1はアクセルのaiアクセラレーターが搭載した初めてのチップということで現在評価を進めております
[00:04:29.660 --> 00:04:35.819] 自動運転におけるaiの利用の場面というのは一番分かりやすい利用例としてはやはり物体の認識の部分ですね
[00:04:36.620 --> 00:04:39.579] 走行している上での障害物の検出であるとか
[00:04:40.220 --> 00:04:59.099] 対向車歩行者みたいな自動運転で使用される物体認識であるとかaiの処理における特徴としては非常に演算量が多いというところですね自動運転の車両の中でやはりその限られた電力車の中で賄える電力処理をしなければいけない機材はボンネットであるとかトランクルームみたいなところに入っておりますのでそういった点であり
[00:05:02.300 --> 00:05:05.019] 一つアクセルのaiアクセラレーターの特徴的な点として
[00:05:05.500 --> 00:05:10.060] 専用設計にしているというaiの推論という処理に特化した設計
[00:05:10.620 --> 00:05:27.740] その結果と比べて現在自動運転を実現するためのプラットフォーム特にそのハードウェアどういったハードウェアを使うかみたいなところはまだまだ研究開発の段階であると考えておりまして
[00:05:29.019 --> 00:05:40.699] 実際にaiの処理を実現する上でもどういったハードウェア例えばcpuでやるのかgpuでやるのかもしくはaiチップをでやるのかそういったところはまだまだ評価が必要な段階と考えております
[00:05:41.259 --> 00:05:47.819] そういった中でもアイデアを使うことでさまざまなプラットフォーム上でシムレスにaiの
[00:05:48.459 --> 00:05:56.539] 水論処理が可能になりますのでどういったハードウエアを使うべきかそういったような評価研究開発みたいな部分で使用できると考えております
[00:05:57.259 --> 00:06:05.500] まずアクセルとしては現在取り組んでおります自動運転向けのsocuですねこれをベースに自動運転の実証というものを進めていきたいと考えております
[00:06:06.379 --> 00:06:10.139] その先という意味では今アクセルの持っている技術力というものを生かして
[00:06:18.379 --> 00:06:27.579] 世界最高水準の性能を持ちあらゆるデバイスに実装できる独自開発のエッジaiフレームワークアイデアsdk
[00:06:28.379 --> 00:06:34.219] そしてアイデアsdkと連携する自動運転に最適化したハードウェアip
[00:06:35.019 --> 00:07:04.300] c。
INFO reazon_speech2.py (624) : Script finished successfully.
@ooe1123 現在、すべてのデコードが終わった後に、まとめて結果が表示されていると思うのですが、これを、セグメントごとに出力できるようにすることというのは可能なものでしょうか?
@kyakuno Whisperの場合、audioデータをチャンクサイズに分けてチャンクごとに推論をしていたかと思うのですが、ReasonSpeechは一気に処理しているようです。なので、audioサイズが大きければ、推論のコストも大きくなります。 セグメントごとに逐次結果を出すには、入力でなにかしらの工夫が必要そうです。
@ooe1123 確認、ありがとうございます。入力側でVADをかけて、VADで切った単位で入力する方が現実的かもしれないですね。とりあえず、現状のままでマージさせていただこうと思います。
https://github.com/axinc-ai/ailia-models/issues/1397 のPRです。