🏜

ローカル環境でQwen3-Omniを動かす

に公開

はじめに

Qwen3-Omni-30B-A3B-InstructがQwenよりリリースされた。
手元のマシンを使ってローカル環境でも動かせることがわかったので、備忘録的に記事にまとめる。

https://x.com/gosrum/status/1970299031437082931

https://x.com/gosrum/status/1970441981039157267

環境

  • Mac Studio
  • EVO-X2

導入手順:Mac

執筆時点でまだggufへの変換ができなかったため、transformersを使って推論をする。使用した感じ、おそらくメモリは128GBないと厳しい。

環境構築

git, uvは導入済みとする。

$ git clone https://github.com/QwenLM/Qwen3-Omni.git
$ cd Qwen3-Omni
$ uv init --python 3.12
$ uv venv
$ uv pip install gradio accelerate torch torchvision soundfile qwen-omni-utils git+https://github.com/huggingface/transformers

モデルのダウンロード

予め、任意のディレクトリにQwen/Qwen3-Omni-30B-A3B-Instructをhf downloadしておく。以下はそのコマンド例。

$ uv pip install hf_transfer
$ HF_TRANSFER=1 uv run hf download Qwen/Qwen3-Omni-30B-A3B-Instruct --local-dir ../models/Qwen/Qwen3-Omni-30B-A3B-Instruct

起動

$ uv run web_demo.py --use-transformers --checkpoint-path ../models/Qwen/Qwen3-Omni-30B-A3B-Instruct

コマンドを実行すると、モデルのロードに数十秒かかる。その後* Running on local URL: http://*.*.*.*:8901と表示されればサーバーが起動しているので、webブラウザからそのアドレスにアクセスすればDemoアプリを開ける(0.0.0.0とした場合は、..*.*にその端末のIPアドレスを入力する)。

以下はコマンドオプションに--generate-audioをつけたとき、すなわち音声生成をする場合のアプリ画面である。デフォルトでSpeakerにChelsieが選ばれており、['Chelsie', 'Ethan', 'Aiden']の中から選択できる。

最初Onlineタブが表示されているが、こちらはマイクやwebカメラの入力をするときに使うものなので、とりあえず試したいときはOfflineタブに切り替えることで、必要に応じて音声、画像、動画を入力しつつ会話ができるようになる。

導入手順:EVO-X2(Ryzen AI MAX+ 395)

VRAMを96GBまたは128GBにしておく。

96GBならBIOSから変更できる。おそらくこのモデルなら96GBのVRAMがあれば動くはず。もし128GBにしたい場合は下記を参考にされたい。
https://zenn.dev/robustonian/scraps/b503f3f69646a1

環境構築

git, uvは導入済みとする。

$ git clone https://github.com/QwenLM/Qwen3-Omni.git
$ cd Qwen3-Omni
$ uv init --python 3.12
$ uv venv
$ uv pip install --index-url https://d2awnip2yjpvqn.cloudfront.net/v2/gfx1151/ rocm[libraries,devel] torch torchvision
$ uv pip install gradio accelerate soundfile qwen-omni-utils git+https://github.com/huggingface/transformers

モデルのダウンロード

予め、任意のディレクトリにQwen/Qwen3-Omni-30B-A3B-Instructをhf downloadしておく。以下はそのコマンド例。

$ uv pip install hf_transfer
$ HF_TRANSFER=1 uv run hf download Qwen/Qwen3-Omni-30B-A3B-Instruct --local-dir ../models/Qwen/Qwen3-Omni-30B-A3B-Instruct

起動

$ uv run web_demo.py --use-transformers --checkpoint-path ../models/Qwen/Qwen3-Omni-30B-A3B-Instruct

起動画面等はMacと同じ。

EVO-X2の場合は例によってROCmが公式サポートされていないためか、推論中は多少不安定になる。運が悪いとフリーズする可能性もあるため要注意。

その他

公式のQwen3-Omni-DemoページではSpeakerが17人もいる。

https://modelscope.cn/studios/Qwen/Qwen3-Omni-Demo

一方、ローカル版は3人からしか選べない。なんとかSpeakerを増やせないかと考え、色々と調べた結果、Qwen/Qwen3-Omni-30B-A3B-Instruct/config.jsonを編集すれば3人以外の音声も出力できることがわかった。

ただし、3人以外の音声にすることはできても、毎回推論するたびに声が変わってしまうようで、実用上問題がありそうなのでここでは詳しく述べないことにする。

まあ、声もガチャ要素があるというのはある意味面白いかも知れない。ただ、性別も不明なのでやはり使いづらい気がする。

まとめ

本記事では、Mac StudioおよびEVO-X2でQwen3-Omni-30B-A3B-Instructを動かす方法についてまとめました。

補足ですが、生成される音声は日本語でもかなり流暢に発音できているのは素晴らしいですね。

問題があるとすれば、生成にわりと時間がかかるということでしょうか。まあこれは、今後量子化できるようになればある程度解決できるかも知れません。
あとはどちらもNVIDIA GPUではないため、flash-attnの導入ができない(頑張ればできるかも)ので、それが使えたらもっと速くなるかもです。

ここまで見ていただきありがとうございました。次回もぜひ、よろしくお願いします。

Discussion