Stable Diffusion WebUI

Generatieve neurale netwerken lijken magisch. Ze beantwoorden vragen, maken afbeeldingen en schrijven zelfs code in verschillende programmeertalen. Het succes van deze netwerken heeft twee componenten: voorgetrainde modellen en hardwareversnellers. Het is zeker mogelijk om CPU-kernen te gebruiken voor deze werklast, maar dat zou een slakkenrace zijn. Het genereren van één kleine afbeelding kan een aanzienlijke hoeveelheid tijd in beslag nemen - tientallen minuten. Het genereren van dezelfde afbeelding op een GPU zou honderden keren minder tijd kosten.
Het eerste geheim zit hem in het aantal cores. CPU cores zijn universeel en kunnen complexe instructies aan. Conventionele serverprocessors hebben echter maximaal 64 cores. Zelfs in multiprocessorsystemen is het aantal kernen zelden groter dan 256. GPU-kernen zijn eenvoudiger, maar daardoor passen er veel meer op de chip. Een NVIDIA® RTX™ 4090 heeft bijvoorbeeld 16.384 kernen.
Het tweede geheim is dat de werklast kan worden opgedeeld in veel eenvoudige taken, die in parallelle threads kunnen worden uitgevoerd op speciale GPU-kernen. Deze truc versnelt de gegevensverwerking aanzienlijk. Vandaag zullen we zien hoe het werkt en een generatief neuraal netwerk Stable Diffusion Web UI inzetten op de LeaderGPU-infrastructuur. Neem bijvoorbeeld een server met een NVIDIA® RTX™ 4090 die 16.384 GPU-kernen heeft. Als besturingssysteem hebben we de huidige LTS-release Ubuntu 22.04 gekozen en de optie "Nvidia-stuurprogramma's en CUDA® 11.8 installeren".
Systeem voorbereiden

Voordat we beginnen, moeten we even stilstaan bij het geheugen. Stable Diffusion is een groot systeem dat tot 13G op uw harde schijf in beslag kan nemen. De standaard virtuele schijf in een LeaderGPU-installatie is 100G. Het besturingssysteem neemt 25G in beslag. Als we Stable Diffusion installeren zonder de home-partitie uit te breiden, zullen we al het vrije geheugen opgebruiken en een foutmelding krijgen: "No space left on device". Het is een goed idee om onze homedirectory uit te breiden.
Thuismap uitbreiden
Eerst moeten we alle beschikbare schijven controleren.
sudo fdisk -l
Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors Disk model: INTEL SSDSC2KB48 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors Disk model: VIRTUAL-DISK Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 9D4C1F0C-D4A7-406E-AECB-BF57E4726437
Daarna moeten we een nieuwe Linux-partitie aanmaken op onze fysieke SSD-schijf, /dev/sda:
sudo fdisk /dev/sda
Druk één voor één op de volgende toetsen: g → n → Enter → Enter → Enter → w. Dit resulteert in een nieuwe /dev/sda1 partitie zonder bestandssysteem. Maak er nu een ext4 bestandssysteem op aan:
sudo mkfs.ext4 /dev/sda1
Als het proces klaar is, gaan we naar de volgende stap.
Waarschuwing! Ga zeer voorzichtig te werk bij de volgende stap. Elke fout tijdens het wijzigen van het fstab-bestand kan ertoe leiden dat je server niet meer normaal kan opstarten en kan een volledige reset van het besturingssysteem vereisen.
sudo blkid
/dev/sdb2: UUID="6b17e542-0934-4dba-99ca-a00bd260c247" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="70030755-75d8-4339-a4e0-26a97f1d1c5d" /dev/loop1: TYPE="squashfs" /dev/sdb1: PARTUUID="63ff1714-bd29-4062-be04-21af32423c0a" /dev/loop4: TYPE="squashfs" /dev/loop0: TYPE="squashfs" /dev/sda1: UUID="fb2ba455-2b8d-4da0-8719-ce327d0026bc" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="6e0108df-b000-5848-8328-b187daf37a4f" /dev/loop5: TYPE="squashfs" /dev/loop3: TYPE="squashfs"
Kopieer UUID (fb2ba455-2b8d-4da0-8719-ce327d0026bc in het voorbeeld) van de /dev/sda1 partitie. Vervolgens zullen we het systeem instrueren om deze schijf automatisch te mounten met zijn UUID tijdens het opstarten:
sudo nano /etc/fstab
Voer deze regel in vóór /swap.img... string:
/dev/disk/by-uuid/ /home/usergpu ext4 defaults defaults
Voorbeeld:
# /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # ## / was on /dev/sdb2 during curtin installation /dev/disk/by-uuid/6b17e542-0934-4dba-99ca-a00bd260c247 / ext4 defaults,_netdev 0 1 /dev/disk/by-uuid/fb2ba455-2b8d-4da0-8719-ce327d0026bc /home/usergpu ext4 defaults defaults /swap.img none swap sw 0 0
Sluit af met de sneltoets Ctrl + X en bevestig het opslaan van het bestand door op Enter te drukken. De nieuwe instellingen worden toegepast bij de volgende systeemstart. Laten we de server opnieuw opstarten:
sudo shutdown -r now
Na het herstarten kunnen we alle gemounte mappen controleren met het volgende commando:
df -h
Filesystem Size Used Avail Use% Mounted on tmpfs 6.3G 1.7M 6.3G 1% /run /dev/sdb2 49G 23G 24G 50% / tmpfs 32G 0 32G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda1 440G 28K 417G 1% /home/usergpu tmpfs 6.3G 4.0K 6.3G 1% /run/user/1000
Geweldig! Maar nu hebben we geen toegang om iets in onze thuismap te schrijven, omdat deze is gewijzigd door het configuratiebestand fstab. Het is tijd om het eigendom van de map terug te eisen:
sudo chown -R usergpu /home/usergpu
Goed gedaan! Laten we naar de volgende stap gaan.
Basispakketten installeren
Update de software cache van de officiële Ubuntu repositories en upgrade enkele pakketten:
sudo apt update && sudo apt -y upgrade
Het systeem heeft gemeld dat er een nieuwe kernel is geïnstalleerd en deze zal operationeel zijn na het opnieuw opstarten van het systeem. Selecteer twee keer OK.
Vervolgens moeten we de afhankelijkheden oplossen, waarvoor Stable Diffusion nodig is. Het eerste pakket voegt de functionaliteit van de Python virtuele omgeving toe:
sudo apt install python3-venv
Het tweede pakket voegt een implementatie toe van de malloc() functie van de programmeertaal C, aangepast door Google. Het voorkomt “Cannot locate TCMalloc” fout en verbetert het CPU geheugengebruik.
sudo apt install -y --no-install-recommends google-perftools
Start ten slotte de server opnieuw op:
sudo shutdown -r now
Stabiele verspreiding automatisch 1111: installeer script

De eenvoudigste manier om Stable Diffusion met WebUI te installeren is door het vooraf gemaakte script te gebruiken dat geschreven is door GitHub gebruiker AUTOMATIC1111. Dit script downloadt en installeert deze twee onderdelen terwijl het alle benodigde afhankelijkheden oplost.
Laten we het script downloaden:
wget https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh
Geef het vervolgens toegang tot wijzigingsgegevens en voer het uit als een programma:
chmod a+x webui.sh
Het gedownloade script uitvoeren:
./webui.sh
Dit proces kan een paar minuten duren. Alles is klaar om perfecte beelden te maken met Stable Diffusion.
Problemen oplossen
Als je de foutmelding "Torch is not able to use GPU" tegenkomt, kun je dit oplossen door opnieuw te installeren via apt:
sudo apt -y install nvidia-driver-535
Je moet het besturingssysteem opnieuw opstarten om het stuurprogramma in te schakelen:
sudo shutdown -r now
genereren

Het installatiescript ./webui.sh heeft nog een andere functie. Het bedient tegelijkertijd het servergedeelte van Stable Diffusion en WebUI. Als u het echter zonder argumenten gebruikt, zal de server beschikbaar zijn als een lokale daemon op http://127.0.0.1:7860. Dit kan op twee manieren worden opgelost: poort doorsturen via een SSH-tunnel of verbindingen vanaf externe IP's toestaan.
De tweede manier is eenvoudiger: voeg de optie --listen toe en je kunt verbinding maken met de webinterface op http://[YOUR_LEADERGPU_SERVER_IP_ADDRESS]:7860. Dit is echter volledig onveilig, omdat iedere internetgebruiker toegang heeft. Om ongeautoriseerd gebruik te voorkomen, voegt u de optie --gradio-auth toe naast de gebruikersnaam en het wachtwoord, gescheiden door een dubbele punt:
./webui.sh --listen --gradio-auth user:password
Dit voegt een inlogpagina toe aan je WebUI instance.Het script zal voor de eerste keer basismodellen en vereiste afhankelijkheden downloaden:

Je kunt genieten van het resultaat. Voer een paar prompts in, scheid ze door komma's en klik op de knop Generate. Na een paar seconden wordt een afbeelding weergegeven die door het neurale netwerk is gegenereerd.
Conclusie
We zijn helemaal gekomen van een lege LeaderGPU server met alleen een voorgeïnstalleerd besturingssysteem tot een kant-en-klare instantie met Stable Diffusion en een WebUI interface. De volgende keer zullen we meer leren over het afstellen van softwareprestaties en hoe u uw Stable Diffusion instance op de juiste manier kunt uitbreiden met nieuwe versies van stuurprogramma's en pakketten.
Zie ook:
Bijgewerkt: 28.03.2025
Gepubliceerd: 25.11.2024