Rehber AMD için Windows ve Linux'a Stable Diffusion kurulumu ve performans karşılaştırması

İnternette AMD kullanıcıları için pek kaynak bulamadığımdan rehberi kendim hazırlamak istedim. Windows ile başlayalım.

Windows'a AMD Kartlar için Stable Diffusion kurulumu


Windows'a henüz CUDA'nın AMD karşılığı olan ROCm desteği gelmediği için şimdilik DirectML ile çalıştırılıyor. Linux'ta ROCm desteği olduğu için arada ciddi performans farkı var. Ancak yine de Linux yüklemek istemeyenler için kurulum adımları:

1-Bilgisayarınızda varolan Python'u silin ve linkten Python 3.10.6'yı indirin. Add Python to PATH kutucuğunu işaretleyip kurun. Ardından bu linkten Git'i kurun.

2- Başlat kısmına cmd yazın ve yönetici olarak çalıştırın.

3- cd kısmına nereye kurmak istiyorsanız o dosya konumunu yazın. Ben C:\ kısmına kurmak istediğimden cd C:\ yazacağım. Ardından kurulum için gerekli kodu girin.
Kod:
cd C:\
git clone https://github.com/lshqqytiger/stable-diffusion-webui-directml && cd stable-diffusion-webui-directml && git submodule init && git submodule update

Eki Görüntüle 1848235

4- Ardından kurulum yaptığınız klasöre girin ve webui-user.bat'a çift tıklayın. Kurulumu yapması için bekleyin.

1688512093638.png


5- Kurulum tamamlandıktan sonra çıkan yerel IP adresini tarayıcınıza yazın.

1688513055402.png


6- Kullanmaya başlayabilirsiniz.

1688513256703.png


6- Eğer VRAM ile ilgili hata alırsanız programı çalıştırdığımız webui-user.bat'ı not defteri ile açın ve set COMMANDLINE_ARGS='ın yanına şunu yazın:

Kod:
--opt-sub-quad-attention --medvram --disable-nan-check

Eğer VRAM hatası almaya devam ederseniz --medvram kısmını --lowvram olarak değiştirin.

1688513653841.png


Windows için rehber bu kadar. Ancak Linux'a göre alacağınız performans düşük olacaktır. Linux ile devam edelim.

Linux'a AMD Kartlar için Stable Diffusion kurulumu


Not: Anlatacağım rehber Debian tabanlı (Ubuntu, Linux Mint vs.) Linux dağıtımları için geçerlidir. Arch Linux için kurulum farklıdır.
Not 2: RDNA 3 kartlar için olan Docker imajı malesef yayından kalkmış. Neyse ki imajı torrente yükleyenler olmuş. RDNA 3 kartların rehberini daha sonra ekleyeceğim.

1688514206858.png



1- ROCm kurulumu ile başlayalım. Terminale sırasıyla aşağıdaki komutları yapıştırın.

Kod:
sudo mkdir --parents --mode=0755 /etc/apt/keyrings
wget https://repo.radeon.com/rocm/rocm.gpg.key -O - | \
    gpg --dearmor | sudo tee /etc/apt/keyrings/rocm.gpg > /dev/null

2- Distronuz Ubuntu 20.04 tabanlıysa aşağıdaki komutları yapıştırın. Ubuntu 22.04 ise 3. kısma atlayın.

Kod:
# amdgpu repository for focal
echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/5.4.1/ubuntu focal main' \
    | sudo tee /etc/apt/sources.list.d/amdgpu.list
sudo apt update
Kod:
sudo apt install amdgpu-dkms
sudo reboot
Kod:
# ROCm repositories for focal
for ver in 5.3.3 5.4.1; do
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/$ver focal main" \
    | sudo tee --append /etc/apt/sources.list.d/rocm.list
done
echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' \
    | sudo tee /etc/apt/preferences.d/rocm-pin-600
sudo apt update

3- Distronuz Ubuntu 22.04 tabanlıysa aşağıdaki komutları yapıştırın.

Kod:
# amdgpu repository for jammy
echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/amdgpu/5.4.1/ubuntu jammy main' \
    | sudo tee /etc/apt/sources.list.d/amdgpu.list
sudo apt update
Kod:
sudo apt install amdgpu-dkms
sudo reboot
Kod:
# ROCm repositories for jammy
for ver in 5.3.3 5.4.1; do
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/rocm.gpg] https://repo.radeon.com/rocm/apt/$ver jammy main" \
    | sudo tee --append /etc/apt/sources.list.d/rocm.list
done
echo -e 'Package: *\nPin: release o=repo.radeon.com\nPin-Priority: 600' \
    | sudo tee /etc/apt/preferences.d/rocm-pin-600
sudo apt update

4- ROCm paketini kuralım.

Kod:
sudo apt install rocm-hip-sdk

Kod:
sudo tee --append /etc/ld.so.conf.d/rocm.conf <<EOF
/opt/rocm/lib
/opt/rocm/lib64
EOF
sudo ldconfig

Kod:
export PATH=$PATH:/opt/rocm-5.4.1/bin:/opt/rocm-5.4.1/opencl/bin

5- Aşağıdaki kodu yazarak ROCm'in kurulup kurulmadığını doğrulayalım.

Kod:
/opt/rocm/bin/rocminfo

ROCk module is loaded yazdıysa kurulmuş demektir. Sonraki adımda Docker kurmamız gerekiyor.

6- Docker kurulumu için aşağıdaki komutları sırasıyla yapıştıralım.

Kod:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
Kod:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Bu kısımda eğer Ubuntu haricinde bir distro kullanıyorsak $VERSION_CODENAME yerine $UBUNTU_CODENAME yazacağız.


Kod:
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Kod:
sudo apt-get update

7- Docker kurulumunu yapalım.
Kod:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

8- Docker'ı aktif edelim.
Kod:
sudo systemctl enable docker

9- Docker'a gerekli yetkileri verip bilgisayarı yeniden başlatalım.
Kod:
sudo usermod -aG docker $USER

10- ROCm için Pytorch Docker imajını indirelim.

Kod:
docker pull rocm/pytorch

11- Docker imajını indirdikten sonra aşağıdaki komutu terminale girerek çalıştıralım.

Kod:
docker run -it --network=host --device=/dev/kfd --device=/dev/dri --group-add=video --ipc=host --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $HOME/dockerx:/dockerx rocm/pytorch

12- Stable Diffusion'u kurmak için aşağıdaki komutları terminale girelim.

Kod:
cd /dockerx
Kod:
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
Kod:
cd stable-diffusion-webui
Kod:
python -m pip install --upgrade pip wheel
Kod:
python -m venv venv
Kod:
source venv/bin/activate
Kod:
TORCH_COMMAND="pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2" REQS_FILE="requirements.txt" python launch.py

Kurulumda böyle bir hata aldım. Pythorch Lightning'i downgrade edelim. İleride muhtemelen düzeltirler.

1688521336352.png


Pythorch Lightning'i downgrade etmek için aşağıdaki komutu girin.

Kod:
pip install pytorch-lightning==1.6.5

Kuruluma devam etmek için aşağıdaki komutu tekrar girin ve kurulumun tamamlanmasını bekleyin.

Kod:
TORCH_COMMAND="pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2" REQS_FILE="requirements.txt" python launch.py

Eğer kurulumda hipErrorNoBinaryForGpu: Unable to find code object for all current devices! hatası alırsanız kurulum için girdiğimiz komutu aşağıdaki gibi değiştirin ve komutu tekrar girin.

Kod:
HSA_OVERRIDE_GFX_VERSION=10.3.0 TORCH_COMMAND="pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2" REQS_FILE="requirements.txt" python launch.py --opt-split-attention

Terminaldeki IP adresini kullandığınız internet tarayıcısına yapıştırın.

1688522275617.png


Kurulum tamamlandı.

1688522641551.png


Eğer kullanırken VRAM hatası alırsanız kurulum yaparken girdiğiniz komutun sonunu aşağıdaki gibi değiştirin. Programı başlatmak istediğimiz zaman bu komutu kullanacağız.

Kod:
HSA_OVERRIDE_GFX_VERSION=10.3.0 TORCH_COMMAND="pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2" REQS_FILE="requirements.txt" python launch.py --opt-split-attention --medvram

Hata almaya devam ederseniz komutun devamına --precision full --no-half ekleyin. Bu komut performansı çok düşürüyor, hata almadığınız sürece kullanmanızı tavsiye etmiyorum.

13- Programı kapattıktan sonra tekrar açmak için Docker container ismini öğrenmemiz gerekiyor. Öğrenmek için aşağıdaki komutu terminale yazalım.

Kod:
docker container ls -a

Benim container ismim tender_faraday'mış. Sizde hangi isim çıktıysa onu bir yere not edin.

1688522959035.png


14- Programı tekrar başlatmak için gereken komutlar:

Kod:
sudo systemctl enable docker
Kod:
sudo docker container restart "tırnak işareti olmadan sizdeki docker container ismi"
Kod:
sudo docker exec -it "tırnak işareri olmadan sizdeki docker container ismi" bash -c
Kod:
cd /dockerx/stable-diffusion-webui
Kod:
source venv/bin/activate

Sizdeki başlatma komutunu ekran kartınıza göre nasıl ayarladıysanız o şekilde girin.
Kod:
HSA_OVERRIDE_GFX_VERSION=10.3.0 TORCH_COMMAND="pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2" REQS_FILE="requirements.txt" python launch.py

15- Programı bash shell ile hızlı başlatmak isterseniz text dosyasına aşağıdaki komutları yapıştırın ve başlatma komutunu ekran kartınıza göre ayarlayın. (Komutun sonundaki ' işaretini silmeyin.)

Kod:
sudo systemctl enable docker
sudo docker container restart "tırnak işareti olmadan sizdeki docker container ismi"
sudo docker exec -it "tırnak işareti olmadan sizdeki docker container ismi"  bash -c 'cd /dockerx/stable-diffusion-webui && source venv/bin/activate && HSA_OVERRIDE_GFX_VERSION=10.3.0 TORCH_COMMAND="pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.4.2" REQS_FILE="requirements.txt" python launch.py --opt-split-attention'

Dosyayı kaydedin, uzantısını .sh olarak değiştirin, dosyaya sağ tıklayın özellikler kısmından gördüğünüz kutucuğu işaretleyin.

1688523960862.png


Scripti çalıştırmak için scriptin dosyasının bulunduğu lokasyonda sağ tıklayıp terminali açın ve dosya ismini terminale yazın. Dosya isminin sol tarafına ./ ekleyin ve komutu çalıştırın. Örneğin ./dosya.sh

Program üstteki komutları tek tek girmenizi gerektirmeden açılacaktır.

Windows ve Linux Stable Diffusion performans karşılaştırması

1688525180262.png

Sistem özellikleri:
  • AMD Radeon 6600 XT 8G
  • AMD Ryzen 5 5600
  • Corsair Vengeance 2x16 GB 3000MHz DDR4
  • Asus TUF Gaming X570-Plus

Linux test sonuçları:

Başlangıç komutu: --opt-split-attention

1688525646636.png


Steps: 50
Size: 512x512
VRAM kullanımı: 4017/8176 (49.13%)
Süre: 10.47s





1688525934947.png


Steps: 100
Size: 512x512
VRAM kullanımı: 4017/8176 (49.13%)
Süre 20.72s





1688526476296.png


Steps: 50
Size: 768x768
VRAM kullanımı: 6457/8176 (78.98%)
Süre: 33.48s


Windows test sonuçları:


Başlangıç komutu: --opt-split-attention

Screenshot 2023-07-05 061534.png


Steps: 50
Size: 512x512
VRAM kullanımı: 7833/8176 (%95,80)
Süre: 39.27s





Screenshot 2023-07-05 062039.png


Steps: 100
Size: 512x512
VRAM kullanımı: 7917/8176 (%96,83)
Süre: 76.23s





1688528833933.png


Steps: 50
Size: 768x768
VRAM kullanımı: 7936/8176 (%97,06)
Süre: 107.11s


Sonuç:

Stable Diffusion'u Linux'a kurmak Windows'a göre zahmetli olabilir ancak aradaki performans farkına değer. AMD ROCm Windows sürümünü yayınlayana kadar Linux'ta kullanmak en mantıklısı gibi duruyor.
s
 

Dosya Ekleri

  • Screenshot 2023-07-05 061534.png
    Screenshot 2023-07-05 061534.png
    12,2 KB · Görüntüleme: 47
  • 1688528786104.png
    1688528786104.png
    12 KB · Görüntüleme: 44
Son düzenleme:
@Burak_bjk 6 s/it berbat bir değer. R7 5800X3D işlemci ile bile 3 s/it alıyorum. DirectML ile GPU kullandığınızdan emin misiniz?

Şu ikisinden birini deneyin:

Linux'ta Nvidia / Intel / AMD ile çok hızlı çalışabiliyor.
Windows'ta AMD DirectML ile çalışıyor:

Bu da Windows'ta sadece DirectML için:
@Disty tekrardan merhabalar , konu hakkında araştırmaları yaptıktan sonra argümanlarımı değiştirmeye karar verdim ve oldukça verimli olduğunu söylemem gerek , şuan 512*512'lik 20stepslik bir görüntü için ortalama 20 saniyeden 1.14it/s alıyorum ve eskilerine nazaran çok çok iyi bir değer tabi ki fakat bir yerden sonra bu da kesmiyor çünkü bazen gpu vram hatası alıyorum bazen de örneğin video generator modüllerinde çalışamıyorum , o nedenle linux'a geçmeyi düşünüyorum , internetten bir kaç video izledim fakat anlayamadım , sizin video tavsiyeniz var mıdır? ayrıyeten rocm ne oluyor ve nasıl çalıştırabilirim?

@FalconPolat sizde sanırım 6700 var , 512*512 20stepslik bir görüntüyü kaç saniye ve it/s'de oluşturduğunuzu sorabilir miyim? birde 10gb vram'iniz var , hiç vram hatası alıyor musunuz? ben 1000 pikselin üzerine çıkarsam hata alıyorum ve üretmiyor , siz mesela upscale yapabiliyor musunuz veya en yüksek kaç piksele piksel oluşturuyorsunuz bir görüntüyü?
 
Son düzenleme:

Geri
Yukarı