Janでは開発やサポート用のプラットホームとしてDiscordというコミュニケーションサービスを使っている。JanをAMDのGPUで動かせないものかと先日Discordを眺めていたら以下の情報を見つけた。
現在、マルチ GPU サポートは NVIDIA GPU でのみ利用可能であり、CUDA のインストールが必要です。 Vulkan モードで動作する AMD GPU の場合、単一の GPU のみがサポートされます。私たちは、ROCm と HIP を使用して AMD GPU のサポートを構築する方法を模索しています。将来的には、これにより AMD GPU のマルチ GPU サポートが可能になる可能性があります。現時点では、マルチ GPU 機能は、Vulkan モードが無効になっている NVIDIA GPU に制限されています。
Vulkanモードを使えばAMDの単一GPUなら動きそうだということで、今日、私の秘密基地(シェアオフィスのこと)で実験した結果、動かすことに成功したのでここにまとめておきたい。
Vulkanとは
簡単に言うと「次世代のリアルタイム3次元グラフィックAPI」というものらしい。JanではこのAPIを利用してLLMの計算(推論)をAMDのGPUで行わせることができるようだ。
Vulkanの導入方法(Windows編)
Vulkan.lunarg.comのページからWindows用のインストールプログラムをダウンロードし、インストールするだけであった。途中でコンポーネントを選択する画面が出る。基本は何も選ばなくて大丈夫のようだが、私は動作確認に必要かと思い全て選択した。
インストール終了後、導入したフォルダのBinフォルダの下にvkviaというプログラムができる。実行すると立方体がクルクル回るデモが動き、正常に導入できたことを確認できる。
JanをVulkanモードにする
- Janの画面の左下にあるSettingsのアイコンを押す
- Advanced Settingsを選ぶ
- Experimental Modeのスイッチをオンにする
- Vulkan Supportのスイッチをオンにする
ここまで操作するとGPU AccelerationのChoose device(s)が自動的に「AMD Radeon 780M Graphics」に設定される。
VulkanモードでJanを動かす
以上の設定でGPUでJanの上で生成AIを動かすことができる。AI動作中にタスクモニタを確認したところ、GPU Compute 0のところに動作状況が表示された。
性能的には14.5 token/Secとなった。CPUで動かしたときには4~9 token/Secであったと思うので2~3倍の性能アップということになる。折角GPUがあるなら使いたいというのが人情である。GPUを使うことで性能をアップさせることができて満足だ。
ただし、手放しで喜べない点もある。ELYZAのような大きいモデルサイズになるとエラーになり起動しなくなるのだ。これはGPU専用メモリが8GBしかないことが原因と思われる。モデルサイズが4GB程度であれば正常に動作しているが、5GBになるともう動かないようだ。
Janの設定をCPUモードに戻す時の注意点
Janの設定をVulkanモードからCPUのモードに戻す時に1点だけ注意が必要だ。画面で設定を戻すだけではCPUでも動かなくなる。GPUでずっと運用しないといけなくなるのかと私も一瞬焦ったが、この問題は設定ファイルを直接編集することで解決できた。
Janを導入したフォルダのsettingsフォルダにsettings.jsonというファイルがある。この中のrun_modeがgpuのままになっているのが原因だ。cpuに直すことで動作するようになった。
{ "notify": true, "run_mode": "cpu", "nvidia_driver": { "exist": false, "version": "" }, "cuda": { "exist": false, "version": "" }, "gpus": [], "gpu_highest_vram": "", "gpus_in_use": [ "" ], "is_initial": false, "vulkan": false }
まとめ
GPUでJanを動かすことで性能的に2~3倍になることを確認した。ただし動かないモデルも出てくること、性能的にそれほど差があるわけではないことから、CPUで運用したほうがよさそうだ。CPUである程度動くのはUM790 Proのメリットでもある。将来的にBIOSがアップデートされ、VRAMが32GBくらいまで使えるようになることを期待している。