Stable diffusion avec un GPU AMD sous Linux
Pour qu'il puisse utiliser un GPU AMD sous Linux, il faut :
- installer ROCM via la pile logicielle AMD
- configurer pytorch pour l'utiliser.
Installation ROCm via amd-gpu-install
Stable Diffusion, en fait plutôt PyTorch, framework Python de machine learning, ne sait gérer que CUDA (donc Nvidia), ROCm (un framework développé par AMD pour le HPC et le machine learning) et bien sûr le CPU.Les performances sont bien évidemment largement meilleures en utilisant un GPU : quelques dizaines de secondes pour générer une image au lieu de plusieurs minutes.
Pour pouvoir exploiter notre GPU AMD, il faut installer ROCm sur Linux, mais, uniquement Ubuntu, RHEL et SLES sont officiellement supportés.
C'est également possible avec Fedora. Par contre, impossible avec Debian, la version de noyau n'étant pas celle attendue.
Il faut d'abord commencer par installer amdgpu-install qui est l'installeur officiel d'AMD. Il permet ensuite de choisir précisément quels composants installés parmi l'ensemble de la pile logicielle fournie par AMD.
Installation sur Ubuntu 22.04
sudo apt-get update wget https://repo.radeon.com/amdgpu-install/5.4.1/ubuntu/jammy/amdgpu-install_5.4.50401-1_all.deb sudo apt-get install ./amdgpu-install_5.4.50401-1_all.deb
Installation sous Fedora 37
sudo dnf install https://repo.radeon.com/amdgpu-install/5.4.1/rhel/9.1/amdgpu-install-5.4.50401-1.el9.noarch.rpm
Installation de ROCm
On sélectionne l'installation de ROCm uniquement, et on veut continuer à utiliser les modules du kernel déjà présents et fournis par la distribution :sudo amdgpu-install --usecase=rocm --no-dkmsIl faut rajouter notre utilisateur aux groupes video et render pour pouvoir accéder aux périphériques du GPU :
sudo usermod -a -G video,render $LOGNAMEOn peut vérifier avec rocminfo qu'il y a bien un CPU et un GPU utilisables via ROCm.
Installation de Stable diffusion
Pour installer Stable diffusion, on va passer par Stable Diffusion web UI, pour une installation simplifiée et avoir une interface Web pour une utilisation plus agréable.Récupération du code source
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
Python 3.10 pour Fedora
Fedora installe par défaut Python 3.11 qui n'est pas encore supporté par PyTorch (version 3.10 au maximum). Il faut donc installer python 3.10. et également patch qui peut ne pas être installé.sudo dnf install python3.10 patchPour Ubuntu, tout est déjà bon.
Création de l'environnement virtuel Python
cd stable-diffusion-webui python3.10 -m venv venv
Mise à jour de pip et de wheel dans l'environnement virtuel
source venv/bin/activate python -m pip install --upgrade pip wheel
Installation de PyTorch
Il ne reste plus qu'à installer PyTorch en désactivant les tests CUDA :TORCH_COMMAND='pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.2' python launch.py --skip-torch-cuda-testLa ligne de commande peut être générée sur https://pytorch.org/get-started/locally/ en choisissant bien Linux/Pip/Python/ROCm et en rajoutant --skip-torch-cuda-test à la fin.
Il est possible que le GPU ne soit pas reconnu par PyTorch :
"hipErrorNoBinaryForGpu: Unable to find code object for all current devices!"Par exemple, ma carte (AMD RX6600) n'est pas reconnue par PyTorch. Il faut alors déclarer une variable d'environnement compatible avant d'appeler TORCH_COMMAND :
export HSA_OVERRIDE_GFX_VERSION=10.3.0
Exécution de Stable Diffusion
Pour les prochains lancements, les étapes seront :cd stable-diffusion-webui source venv/bin/activate export HSA_OVERRIDE_GFX_VERSION=10.3.0 TORCH_COMMAND='pip install torch torchvision --extra-index-url https://download.pytorch.org/whl/rocm5.2' python launch.py --skip-torch-cuda-testA chaque démarrage de Stable Diffusion, le warning suivant apparaitra si le GPU n'est pas reconnu :
MIOpen(HIP): Warning [SQLiteBase] Missing system database file: gfx1030_40.kdb Performance may degrade. Please follow instructions to install: https://github.com/ROCmSoftwarePlatform/MIOpen#installing-miopen-kernels-packageet la 1ère génération d'image sera longue, mais ça sera bon sur les prochaines.
Sources
- How to Install ROCm : https://docs.amd.com/bundle/ROCm-Installation-Guide-v5.4.1/page/How_to_Install_ROCm.html
- Installing PyTorch on Linux : https://pytorch.org/get-started/locally
- Install and Run on AMD GPUs : https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs
Prompt :
a landscape by simon stalenhag of a very large realistic highly detailed imposing robotic depressing abandoned post – apocalyptic landscape, post – apocalyptic corrupted themes, artstation trending, beautiful art landscape, detailed simon stalenhag landscape
Prompt :
a highly detailed epic cinematic concept art an alien pyramid landscape , art station, landscape, concept art, illustration, highly detailed artwork cinematic, hyper realistic painting
Prompt :
higly detailed, majestic royal tall ship on a calm sea,realistic painting, by Charles Gregory Artstation and Antonio Jacobsen and Edward Moran, (long shot), clear blue sky, intricated details, 4k
Prompt :
modelshoot style, (extremely detailed 8k wallpaper),a medium shot photo of an astronaut looking at a nebula, Intricate, High Detail, dramatic ,digital art , trending on artstation , hyperdetailed , matte painting , CGSociety
Prompt :
Many friendly alien race individuals. fantasy, sharp focus, digital art, hyper realistic, 8k, unreal engine, highly detailed, hd 4k, dramatic lighting, trending on artstation
Prompt :
Wizard's tower in fantasy landscape
Prompt :
modelshoot style, (extremely detailed 8k wallpaper),a medium shot photo of Gandalf reading newspapers, Intricate, High Detail, dramatic
Prompt :
modelshoot style, (extremely detailed 8k wallpaper),a full shot body photo of Gandalf wearing black Metallica tee-shirt and playing black electric guitar, High Detail, Sauron
Prompt :
modelshoot style, (extremely detailed 8k wallpaper),a full shot body photo of gandalf making sand castles at the beach, High Detail
Prompt :
modelshoot style, (extremely detailed 8k wallpaper),a full shot body photo of a highly detailed epic cinematic concept art CG render digital painting artwork: dieselpunk steaming half man half robot. By Greg Rutkowski, Ilya Kuvshinov, WLOP, Stanley Artgerm Lau, Ruan Jia and Fenghua Zhong, trending on ArtStation, subtle muted cinematic colors, made in Maya, Blender and Photoshop, octane render, excellent composition, cinematic atmosphere, dynamic dramatic cinematic lighting, precise correct anatomy, aesthetic, very inspirational, arthouse