ローカル環境でQwen3-Omniを動かす
はじめに
Qwen3-Omni-30B-A3B-InstructがQwenよりリリースされた。
手元のマシンを使ってローカル環境でも動かせることがわかったので、備忘録的に記事にまとめる。
環境
- 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にしたい場合は下記を参考にされたい。
環境構築
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人もいる。
一方、ローカル版は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