Ryzen 5 5600GT を使って LLM、Stable Diffusion を動かす方法

はじめに

環境
  • Ryzen 5 5600G / Ryzen 5 5600GT (どちらも確認済み)
  • ASRock DeskMini X300
  • Memory 64 GB
  • M.2 SSD 2TB
ポイント
  • amdgpu-install 時に graphics を指定すると、フリーズしたりして、動作が不安定になる現象が発生したため、rocm だけを指定している。
  • amdgpu driver のバージョンと rocm 対応版の pytorch のバージョンの組み合わせが大事。
    • バージョンの組み合わせ次第では動作しないことがあった。
    • force-host-alloction-APU に書かれている組み合わせを参考に、今回は amdgpu-install_6.0.60002-1_all.deb と rocm6.0 を使用した。
  • cpu-x を使うと graphics で実際に使用されているメモリを確認できる。
    • ホストアロケーション化した際に、メモリがホスト側から確保されているかどうかの確認にも使用できる。
  • GPU からメモリ確保する場合は、BIOS から UMA Frame Buffer Size を 16GB に設定する。
  • force-host-alloction-APU は、rocm API wrapper として、LD_PRELOAD でライブラリを差し込んで使用する。
  • wrapper により、メモリ確保が device 側から host 側に切り替わるようになる。(BIOS で 16GB を割り当てなくてもよくなる)
参考サイト

https://github.com/segurac/force-host-alloction-APU
https://jweb.asia/26-it/ai/92-ryzen5600g-ai-gpu.html
https://qiita.com/asfdrwe/items/1ca2d07777415f399a3b

LLM、Stable Diffusion 共通セットアップ

amdgpu driver のインストール
wget https://repo.radeon.com/amdgpu-install/23.40.2/ubuntu/jammy/amdgpu-install_6.0.60002-1_all.deb
apt install ./amdgpu-install_6.0.60002-1_all.deb
amdgpu-install -y --usecase=rocm
usermod -a -G render,video user

shutdown -r now

動作確認

rocminfo
rocm 対応の Pytorch 環境の準備
mkdir -p /mnt/data01/user/generative-ai
cd /mnt/data01/user/generative-ai

Pythoon venv 環境の用意

python3.10 -m venv venv
. venv/bin/activate

pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/rocm6.0

test-rocm.py で動作確認

wget https://gist.githubusercontent.com/damico/484f7b0a148a0c5f707054cf9c0a0533/raw/43c317bfbde626d9112d44462d815613194988e0/test-rocm.py

export HSA_OVERRIDE_GFX_VERSION=9.0.0
export HSA_ENABLE_SDMA=0
python test-rocm.py
ホストアロケーション化のライブラリビルド
cd /mnt/data01/user/generative-ai
git clone https://github.com/segurac/force-host-alloction-APU
cd force-host-alloction-APU

CUDA_PATH=/usr/ HIP_PLATFORM="amd" hipcc forcegttalloc.c -o libforcegttalloc.so  -shared -fPIC

FastChat の git clone と実行

FreeChat に必要な追加パッケージのインストール

pip3 install prompt_toolkit rich psutil transformers accelerate sentencepiece protobuf

FastChat の git clone

cd /mnt/data01/user/generative-ai
git clone https://github.com/lm-sys/FastChat

vicuna-7b-v1.5-16k のダウンロード

apt install git-lfs

cd /mnt/data01/user/generative-ai
git clone https://huggingface.co/lmsys/vicuna-7b-v1.5-16k
cd vicuna-7b-v1.5-16k
git lfs pull

Pythoon venv 環境に切り替え

cd /mnt/data01/user/generative-ai
. venv/bin/activate

FastChat の実行

cd /mnt/data01/user/generative-ai/FastChat
export HSA_OVERRIDE_GFX_VERSION=9.0.0
export HSA_ENABLE_SDMA=0
python3 -m fastchat.serve.cli --style rich --model-path ../vicuna-7b-v1.5-16k --max-new-tokens 2048 --temperature=0.8 --repetition_penalty 1.1

FastChat の実行(ホストアロケーション化)

cd /mnt/data01/user/generative-ai/FastChat
export HSA_OVERRIDE_GFX_VERSION=9.0.0
export HSA_ENABLE_SDMA=0
LD_PRELOAD=/mnt/data01/user/generative-ai/force-host-alloction-APU/libforcegttalloc.so python3 -m fastchat.serve.cli --style rich --model-path ../vicuna-7b-v1.5-16k --max-new-tokens 2048 --temperature=0.8 --repetition_penalty 1.1

Stable Diffusion の git clone と実行

venv は FastChat とは、一応分けて作ったほうが、おそらくよい。
“rocm 対応の Pytorch 環境の準備” と “ホストアロケーション化のライブラリビルド” は、手順同じ。

Stable Diffusion の git clone

cd /mnt/data01/user/generative-ai
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

Pythoon venv 環境に切り替え

cd /mnt/data01/user/generative-ai
. venv/bin/activate

Stable Diffusion の実行

cd /mnt/data01/user/generative-ai/stable-diffusion-webui
export HSA_OVERRIDE_GFX_VERSION=9.0.0
export HSA_ENABLE_SDMA=0
./webui.sh

Stable Diffusion の実行(ホストアロケーション化)

cd /mnt/data01/user/generative-ai/stable-diffusion-webui
export HSA_OVERRIDE_GFX_VERSION=9.0.0
export HSA_ENABLE_SDMA=0
LD_PRELOAD=/mnt/data01/user/generative-ai/force-host-alloction-APU/libforcegttalloc.so ./webui.sh