1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hugging Face モデルをONNX形式で使いたい。あとNSC2で文字起こしがしたい

Last updated at Posted at 2025-01-12

大学の講義でICT実践なるものがあり、RaspberryPi5 8GBモデルを使ってスマートスピーカーを作ることに挑戦している。

この記事をベースにして制作しているのだが……

自分の場合、学生で金もないためお高いGPUをサーバーとして使うこともできない。
この記事でも多くの処理をRaspberryPi上ではなく、
外部サーバに任せることでスムーズな実行を行っている。
(割と取り返しのつかない時期に気づいた。)

このままでは、一回の応答にn時間かかるスマートじゃないスピーカーが出来上がってしまう。
さて、どうしたものか……

あれなんだこれ

先輩が残していった遺物です。(販売終了済み)
希望の光が見えてきた。

そしていろいろ調べて何とかうまくいきそうなとこまできました。
ONNX形式やIR形式についていろいろ調べてぶつかりまくったので、備忘録として残しておきます。

以降のコマンドは、wslかつpyenv上で実行したコマンドです
pythonのバージョンは3.8.20です。
openVINOなどの互換性を調べたらこのあたりが無難そうだったからです。

Hugging FaceモデルをONNX形式に変換するには

ChatGPT君が出すコードどれもエラーでした。
結局自分でググって、自分で解決しました😢

僕が全然知らなかっただけでみんな知ってるかもしれませんが……
kotoba-whisper-v2.0なら、こんな感じで

optimum-cli export onnx --model kotoba-tech/kotoba-whisper-v2.0 ./kotoba-v2_onnx/

簡単に変換できます。
リポジトリ名のところを見れば規則性が明らかですね。

pip install optimum

としてやれば簡単に使えるコマンドです。

コードでも変換できるのかもしれませんが、
エラーが消えなくて諦めました。

一行で変換できちゃうのは楽でいいですね!

参考

ONNX形式からIR形式に変換

こちら、ChatGPTが使い物にならず。
moはもう使えないらしい。

結局公式ドキュメントのコードをそのままパクりました。

こんな感じ

ovc model/encoder_model.onnx --output_model model/encoder_model.xml --compress_to_fp16=False

ちなみに、compress_to_fp16=Falseというのは、重み行列などを16bit float型に圧縮させませんよーという意味です。(デフォルトでfp16に圧縮するよう設定されている)

わかりやすいですね。
このコマンドはデフォルトで圧縮されるので、
=False
としてやることで、32bit float型のままIR形式に変換しろという意味です。

オプションとかも書いてあるのでここが一番わかりやすいです。

謎のonnx_data形式が出現?!

こいつ、まじクソ。
公式サイトでこの拡張子を書いてないから調べるのに手間取った。

どうやら、onnxファイルのサイズが2GBを超える場合、
別途外部にファイルを作成するとかなんとか。
わかるけどさー。
せめて拡張子くらい書いてくれ。

一応、onnxをIRに変換するときは
自動で結合して変換してくれるので気にしなくて大丈夫です。

onnx_data形式の正体について気づくきっかけになった公式ドキュメント

あとはNCS2とラズパイがまともに動作するか……
わからねぇ……

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?