Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a

23
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
Witam, zachęcony wrzutą użytkownika AstreaZero: https://jbzd.com.pl/obr/2678382/poradnik-jak-zmajstrowac-sobie-wlasna-ai-witkorianska-dziewczyne
chciałem sam coś zmajstrować, niestety jako że używam karty graficznej od AMD to dany poradnik u mnie nie zadziała.
Udało mi się użyć Stable Diffusion na windowsie wykorzystując wersję direct-ml: https://github.com/lshqqytiger/stable-diffusion-webui-directml
niestety jego wydajnośc na AMD jest dość niska, na mojej karcie graficznej RX6600 XT 8GB to zaledwie: 0.2it/s.
Jeste też wersja wykorzystująca Vulkan: https://github.com/nod-ai/SHARK
Wydajnośc znacznie lepsza bo nawet 2.4it/s, niestety jest ona mocno ograniczona, tzw. brak możliwości instalacji nowych modułów(controlnet, mov2mov itd.) a sama zmiana modelu do generacji obrazków trwa dobrych 10 minut.
Okazuje się jednak że jakiś czas temu AMD zapewniło wspracie ROCM dla kart konsumenckich, coś ala CUDA od NVIDII, niestety narazie jedynie pod Linuxem. Na Linuxie udało mi się osiągnąć wydajność na poziomie 4.3-4.9it/s z zachowaniem wszystkich możliwości Stable Diffusion.
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
Niestety nie udało mi się to na maszynie wirtualnej więc osobiście dołożyłem stary dysk HDD 500gb z laptopa do swojego pc, dysk wymagany dla całości to przynajmniej 100gb, sam SD z 3 modelami oraz wszystkimi modelami controlnet zajmuje około 50gb.
To teraz w punktach opisze wam całą procedurę instalacji:
1. zainstalować lub posiadać Linux'a, osobiście wybrałem Linux Mint
2. Zainstalować sterowniki AMD z oficjalnej strony: https://www.amd.com/en/support/linux-drivers
3. Zaktualizować system  Linux za pomocą komend terminala:

sudo apt update
sudo apt upgrade

4 Za pomocą terminala dodać swoje konto użytkownika do grup video i render:

sudo usermod -a -G render twojanazwauzytkownika   
sudo usermod -a -G video twojanazwauzytkownika

5. Zainstalować ROCM:

sudo amdgpu-install --usecase=rocm –no-dkms

6. Zresetować komputer

sudo reboot

7. jeśli poprzednie komendy się udały po wpisaniu komendy rocminfo powinien wam taki tekst się pojawić:
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
8. Instalujemy GIT oraz klonujemy repozytorium SD webui:

sudo apt-get install git
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

9. Instalujemy venv dla pythona:

apt install python3-venv

10. Instalujemy pip

sudo apt install python3-pip
python3 -m pip install –upgrade pip wheel

11. Instalujemy ibstdc++-12-dev:

sudo apt install ibstdc++-12-dev

12. Przechodzimy do folderu z stable diffusion i w plikach requirements.txt oraz requirements_versions.txt dodajemy znak # przy torch jak na załączonym obrazku
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
13. Modyfikujemy zawartość pliku webui-user.sh:
Na samym końcu dodajemy wpis:

export HSA_OVERRIDE_GFX_VERSION=10.3.0

a 13 wiersz zmieniamy na:

export COMMANDLINE_ARGS="--opt-sub-quad-attention --medvram --disable-nan-check --always-batch-cond-uncond –opt-sdp-attention"

oczywiście możecie użyć innych argumentów jakie znajdziecie na stronach, manualu czy jakiś forach, te jak na razie dały mi największa wydajność
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
14. Modyfikujemy plik webui.sh dokładnie interesuje nas 129 linijka kodu zmieniamy ją na:

    export TORCH_COMMAND="pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/rocm5.4.2"
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
15. W terminalu przechodzimy do miejsca gdzie mamy sklonowanego SD i nadajemy możliwość wykonywania pliku webui.sh:

cd stable-diffusion-webui

sudo chmod +x webui.sh


16. Pobieramy interesujący nas model do naszego SD ze strony: https://civitai.com/ i kopiujemy do katalogu stable-diffusion-webui/models/Stable-diffusion

17. Tworzymy venv jest to zabezpieczenie że to co SD potrzebuje zostanie stworzone w nim a nie zmienione w całym systemie, najlepiej obydwie linijki wkleić do terminala równocześnie za pomocą ctrl+shift+v:

python3 -m venv venv
source venv/bin/activate

jeżeli się nam powiodło powinien się pojawić napis (venv) przed naszą nazwą użytkownika:
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
18. Teraz zostało nam zwyczajnie uruchomienie webui co robimy za pomocą komendy:

./webui.sh

w tym momencie webui zacznie pobierać wszystkie niezbędne rzeczy do jego poprawnego działania co może chwile potrwać. Gdy w terminalu wyświetli się nam już informacja z adresem lokalnym możemy zacząć korzystać z SD webui.
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
Za każdym razem jak chcecie uruchomić SD ponownie należy wejść terminalem do foledru Sd i użyć komend:

python3 -m venv venv
source venv/bin/activate
./webui.sh

Dlatego polecam osobiście stworzyć plik w folderze SD o nazwie jakiej chcecie ja użyłem run-webui.sh i zawartości:

#!/usr/bin/bash
python3 -m venv venv
source venv/bin/activate
./webui.sh

i uruchamiać go tym skryptem, na Linux mint zwyczajnie podwójnym kliknięciem wybieracie uruchom w terminalu. Oczywiście musicie mu wcześniej nadać prawo wykonywania za pomocą komendy:

sudo chmod +x run-webui.sh
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
Mam nadzieję że ten poradnik przyda się kilku osobom z kartami graficznymi AMD podobno powinno zadziałać na kartach od VEGI w górę gdy macie między 4-6GB ramu nalezy zmienić w webui-user.sh medvram na lowvram.
Dla użytkowników kart graficznych NVIDIi używających Linuxa też powinien być przydatny, tzw. na pewno należy pominąć instalację sterowników AMD, ROCM, modyfikacje pliku webui.sh oraz w pliku webui-user.sh nie dodawać linijki "export HSA_OVERRIDE_GFX_VERSION=10.3.0" na końcu pliku.
Poradnik jak zmajstować własną dziewczynę wersja dla AMD i Linux'a
W celu stworzenia tego poradnika posiłkowałem się stroną:
https://github.com/fullopsec/stable-deffusion-AMD-LINUX-low-VRAM
https://github.com/RadeonOpenCompute/ROCm/issues/1889
oraz jakimś wątkiem na Reddicie który zgubiłem xD
Obrazek zwinięty kliknij aby rozwinąć ▼
0.11043405532837