はじめに
StableDiffusionをProxmoxVE上で動いているUbuntuServerで動かした備忘録兼レポートです。
間違いとかあったらごめんなさい。
構成
- CPU:Ryzen 5 3600
- M/B:Asrock A520M-HDV
- MEM:DDR4-2666 16GB
- GPU:GTX1070
StableDiffusion動かすのには役不足なGPUですが余っていたものを使うため採用しています。
UEFI設定
ゲストOSでGPUを使うにはPCI Passthroughをする必要があり、PassthroughするにはUEFIの設定を変える必要があります。
私はとりあえずSVM Mode(デフォルトでenable),SR-IOV,IOMMUをenableにしています。
その後ProxmoxのコンソールからGRUBの設定を変更します。
#初期設定
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
# 以下のように修正
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
変更後は
update-grub
reboot
で設定適用後再起動します。
ゲストOSインストール
今回はUbuntu Server 24.04LTSを使用しています。
インストール時の設定は、
- マシン:q35
- BIOS:OVMF(UEFI)
です。リソースは好きなだけ振ってください。
起動時にコンソール画面でEscを連打し、UEFIの設定を開いてSecure bootをdisableにします。これをしないとGPUのドライバインストールでうまくいきません。
あとは画面に従ってインストールします。
インストールが終わったら
sudo apt update && sudo apt upgrade
しておきましょう
GPUドライバーインストール
仮想マシンのページを開いてハードウェア→追加→PCI→Rawデバイスを選択し接続しているGPUを選び、
- 全機能
- プライマリGPU
- PCI-Express
にチェックを入れてOKを押して再起動します。
次にこのサイトからCUDAToolkitとドライバーをダウンロードします。
ページ開くとOSとか色々聞かれるのでポチポチします。こんな感じに答えておきます。
そしたら出てきたコマンドを叩いてインストールしましょう。ドライバーはChoose one optionと言われていますのでどっちか叩きます。(openのドライバいれると事故るらしいので上のlegacyの方使ったほうが良いです。)
完了したら
nvidia-smi
を叩いてドライバがあたっているか確認しましょう。
StableDiffusionインストール
AUTOMATIC1111版のStablediffusionを入れていきます。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-NVidia-GPUs
ここにnvidiaのGPU使った各OS向けのインストール方法が書いており、Linuxは書いてあるコマンド通りやればインストールできます。
全部叩くとインストールされ初回起動まで行われます。初回は時間が掛かるし起動し終わったタイミングが分かりづらいのですが、
のようにモデル読み込んだみたいな表示が出れば起動が完了しています。
しかしこのままではWebUIを開くことができないのでCtrl+Cで終了させます。
#export COMMANDLINE_ARGS=""
のところを
export COMMANDLINE_ARGS="--listen --enable-insecure-extension-access"
に変更します。
listenでLAN内からアクセスできるようになります。ただこれを有効にするとプラグインを追加できません。なのでenable-insecure-extension-accessも有効にしています。
そしてWebUIを起動させます。
bash webui.sh
を叩き、LAN内の別端末から
192.168.x.xx(仮想マシンのIP):7860にアクセスするとWebUIを開くことができます。
参考
https://qiita.com/ynott/items/343c119e8e8b48c740c3
https://qiita.com/s059ff/items/8595bfcc4909c0d1a4f1