Stable Diffusion op macOS: lokale beeldtools vergeleken

Automatische vertaling

Dit artikel is automatisch vertaald vanuit de oorspronkelijke Engelse versie.

Models voor beeldgeneratie lokaal draaien op macOS begint met het kiezen van een tool. Deze gids is voor Mac-gebruikers die lokaal afbeeldingen willen genereren: je leest waar elk van zes tools goed in is, hoe je ze installeert, wat een model naast zijn bestand nog nodig heeft en hoe je een tool op je eigen machine test voordat je ervoor kiest.

Draw Things, DiffusionBee, ComfyUI, InvokeAI, AUTOMATIC1111 en Fooocus overlappen elkaar, maar verschillen in installatie, modelondersteuning, workflowcontrole, extensies, automatisering en onderhoud. Met een drag-and-drop-app kom je snel op gang; een node graph kost meer tijd om te leren, maar legt meer van de pipeline bloot. Op Apple Silicon bepalen de applicatie, de modelfamilie, de precisie, de afbeeldingsgrootte en de workflow samen of het genereren in het geheugen past.

Wat een lokale beeldapp draait

Elke tool in deze gids draait hetzelfde soort pipeline. In het midden staat de denoiser: een U-Net in SD 1.5 en SDXL, een transformer in Flux.1. Die begint bij willekeurige ruis en haalt bij elke stap een beetje weg, gestuurd door de prompt. De andere onderdelen bereiden zijn invoer voor of zetten zijn uitvoer om in een afbeelding:

OnderdeelWat het doet
CheckpointHet hoofdmodelbestand. Het bevat de denoiser en, voor SD 1.5 en SDXL, meestal ook de text encoder en de VAE. Flux.1 levert deze onderdelen vaak als aparte bestanden.
Text encoderZet de prompt om in getallen die de denoiser kan gebruiken. Een tokenizer splitst de prompt eerst in tokens.
VAEZet om tussen pixels en de kleinere “latente” afbeelding waarmee de denoiser werkt. De decoder zet de laatste latent om in de afbeelding die je ziet.
Sampler en stappenDe seed bepaalt de beginruis. De sampler bepaalt, samen met zijn scheduler, hoeveel ruis elke stap verwijdert. Meer stappen duren langer.
LoRAEen klein add-onbestand dat de stijl of het onderwerp wijzigt van de modelfamilie waarvoor het is getraind. Een textual inversion embedding is een kleinere add-on die de text encoder een nieuw woord leert.
ControlNetEen extra model dat de compositie stuurt vanuit een controleafbeelding, zoals een pose, een dieptekaart of een randenkaart.

Volg in de figuur de latent van seed-ruis tot stap N: de prompt bereikt de denoiser bij elke stap, de balken tonen hoeveel ruis er overblijft, LoRA en ControlNet zijn optionele invoer en de VAE-decoder zet de kleine latent om in de afbeelding. De CHECKPOINT-labels markeren de onderdelen die één checkpointbestand meestal bevat.

Seed-ruis wordt over de stappen van de denoiser een schone latent, met de prompt als invoer bij elke stap, optionele LoRA- en ControlNet-invoer en een VAE-decoder die de latent omzet in de afbeeldingSeed-ruis wordt over de stappen van de denoiser een schone latent, met de prompt als invoer bij elke stap, optionele LoRA- en ControlNet-invoer en een VAE-decoder die de latent omzet in de afbeelding

Models ophalen

De meeste tools kunnen een startmodel voor je downloaden. Voor al het andere dekken twee sites de meeste behoeften:

  • Hugging Face host de officiële base models van Stability AI, Black Forest Labs en anderen. Lees de licentie op de model card: licenties verschillen zelfs binnen één familie, zoals FLUX.1 [schnell] (Apache 2.0) en FLUX.1 [dev] (een niet-commerciële licentie). Bij sommige repositories moet je de licentie accepteren voordat de download begint.
  • Civitai host checkpoints, LoRA’s en embeddings van de community. Elke pagina noemt het basismodel waarvoor het bestand is getraind.

Geef de voorkeur aan .safetensors-bestanden. Een .ckpt-bestand is een Python-pickle en het laden van een pickle kan willekeurige code uitvoeren. Een .safetensors-bestand bevat alleen tensors. Laad een .ckpt alleen uit een bron die je vertrouwt.

Controleer voordat je meerdere gigabytes downloadt de modelfamilie (SD 1.5, SDXL, Flux.1 enzovoort) tegen wat je tool ondersteunt. Een LoRA die voor SDXL is getraind, werkt niet met een SD 1.5-checkpoint.

Een modelbestand is geen portable workflow

Meerdere applicaties kunnen .safetensors-bestanden laden, maar een gelijke bestandsextensie betekent niet dat het model werkt. Een volledige pipeline kan ook een bepaalde architectuur, text encoder, VAE, scheduler, ControlNet, LoRA of applicatiespecifieke configuratie vereisen.

Leg alles vast wat een afbeelding heeft opgeleverd:

  • applicatie en versie
  • modelrepository, revisie en licentie
  • elk modelonderdeel en elke adapter
  • prompt, negatieve prompt, seed, sampler, stappen, guidance en afmetingen
  • graph- of workflowbestand wanneer de applicatie er een toont

Dezelfde seed kan na een wijziging van backend, model, sampler of precisie toch een andere afbeelding opleveren.

Geheugen, schijfruimte en de software onder elke tool

Op Apple Silicon delen de CPU en de GPU één geheugenpool. De GPU kan het grootste deel ervan gebruiken, dus een Mac met 32 GB kan models laden die niet op een gangbare videokaart van 8 tot 12 GB passen. Dezelfde pool bevat ook macOS en elke geopende app; Activiteitenweergave toont het gebruik van app-geheugen, wired geheugen, gecomprimeerd geheugen en swap.

Het piekgeheugen tijdens het genereren heeft vier delen: de modelonderdelen, het werkgeheugen voor activations en attention, eventuele geladen adapters en control models, en het geheugen dat macOS en je apps al gebruiken. Het bovenste deel van de figuur tekent ze als delen van hetzelfde geheugen, plus het geheugen dat vrij blijft; het is geen rekenformule voor de benodigde hoeveelheid. Het onderste deel vergelijkt voorbeelden van downloadgroottes zonder quantization. Deze balken meten schijfgebruik, geen runtime-geheugen.

Boven: de CPU en GPU delen geheugen voor macOS en apps, modelonderdelen, werkgeheugen, LoRA en ControlNet, met een deel vrij. Onder: voorbeelden van downloads zonder quantization van ongeveer 4 GB voor een SD 1.5-checkpoint, 7 GB voor een SDXL-checkpoint en 24 plus 10 GB voor de FLUX.1 schnell-transformer en de T5-encoder. Bestandsgrootte meet schijfgebruik, geen runtime-geheugenBoven: de CPU en GPU delen geheugen voor macOS en apps, modelonderdelen, werkgeheugen, LoRA en ControlNet, met een deel vrij. Onder: voorbeelden van downloads zonder quantization van ongeveer 4 GB voor een SD 1.5-checkpoint, 7 GB voor een SDXL-checkpoint en 24 plus 10 GB voor de FLUX.1 schnell-transformer en de T5-encoder. Bestandsgrootte meet schijfgebruik, geen runtime-geheugen

Resolutie, batchgrootte, modelarchitectuur, upscaling en ControlNet veranderen het runtime-geheugengebruik. De downloadgrootte schat het schijfgebruik; runtime-geheugen hangt af van de precisie en quantization die de app laadt, welke onderdelen geladen blijven en tijdelijke tensors die tijdens het genereren ontstaan. Quantization slaat weights met minder bits op, en Draw Things kan FLUX.1-weights op aanvraag laden in plaats van ze allemaal in het geheugen te houden. Test de beoogde workflow en let op Memory Pressure en Swap Used; aanhoudend swappen is een reden om de belasting te verlagen of meer geheugen te kiezen.

Plan schijfruimte apart. Deze downloads zonder quantization op Hugging Face omvatten een SD 1.5-checkpoint van ongeveer 4 GB en een SDXL-basischeckpoint van ongeveer 7 GB. Alleen al de FLUX.1 [schnell]-transformer is ongeveer 24 GB, en een 16-bit T5-text-encoder voegt ongeveer 10 GB toe. FLUX heeft ook andere onderdelen nodig, dus deze twee bestanden vormen niet de volledige download. Als je Mac weinig ruimte heeft, bewaar de modelmappen dan op een externe SSD.

De tools verschillen ook in de software tussen hen en de GPU. ComfyUI, AUTOMATIC1111, Fooocus en InvokeAI zijn Python-apps die draaien op de Metal-backend van PyTorch, MPS (Metal Performance Shaders) genoemd, dus hun functies en snelheid hangen af van de geïnstalleerde PyTorch-versie. Draw Things gebruikt een eigen engine met Metal FlashAttention-kernels. Ze komen allemaal uit bij Metal en dezelfde gedeelde unified memory-pool.

Zes tools vergeleken

ToolInstallatieWat je kunt besturenOperationele afweging
Draw ThingsMac App StoreNative Apple-UI met lokale models, adapters, ControlNet en scriptsDichte, productspecifieke interface; controleer de ondersteuning voor de exacte modelfamilie
DiffusionBeeDMG-downloadVerpakte macOS-app met een geïntegreerde generatieworkflowGeen release sinds 2.5.3 in augustus 2024; geen ondersteuning voor modelfamilies die daarna zijn uitgebracht
ComfyUIComfy Desktop DMG of brew install --cask comfyExpliciete node graph, JSON-workflows, API en custom nodesMeer onderdelen; graphs en nodes van derden worden dependencies
InvokeAIInvoke Launcher DMGCanvas met inpainting en outpainting, plus een node-workflow-editorVereist macOS 14 of nieuwer; de documentatie adviseert 16 GB geheugen of meer
AUTOMATIC1111Homebrew-pakketten, git clone en ./webui.shFormuliergebaseerde Web UI, scripts, API en een grote set extensiesLaatste release in februari 2025; gedocumenteerde beperkingen op Apple Silicon; extensies draaien code van derden in dezelfde omgeving
Fooocusgit clone en een conda-omgeving (onofficieel op Mac)Eigenzinnige, prompt-first SDXL-workflowAlleen bugfixes; de Mac-instructies zijn onofficieel en weinig getest

De tabel laat zien waar je instellingen worden opgeslagen: in de app, in een webformulier of in een graphbestand dat je kunt reviewen. De figuur begint bij een native app en laat zien wanneer je naar een andere tool overstapt, met een schets van waar elke tool je instellingen bewaart. Voer de acceptatietest aan het eind van dit artikel uit voordat je je aan een van de tools vastlegt.

Begin met Draw Things of DiffusionBee; stap over op ComfyUI wanneer de workflow gereviewd of geautomatiseerd moet worden, op InvokeAI wanneer het werk uit het bewerken van delen van een afbeelding bestaat, en op AUTOMATIC1111 of Fooocus alleen wanneer een bestaande workflow ervan afhangtBegin met Draw Things of DiffusionBee; stap over op ComfyUI wanneer de workflow gereviewd of geautomatiseerd moet worden, op InvokeAI wanneer het werk uit het bewerken van delen van een afbeelding bestaat, en op AUTOMATIC1111 of Fooocus alleen wanneer een bestaande workflow ervan afhangt

Draw Things: native interactie en scripting

Draw Things is een applicatie voor Apple-platformen voor lokale beeldgeneratie. Installeer het uit de Mac App Store; je hebt geen Python of terminal nodig. De huidige documentatie behandelt models, LoRA’s, ControlNet, textual inversion, Core ML en JavaScript-scripting met versies.

Kies het wanneer het werk binnen een native applicatie moet blijven maar toch meer controle nodig heeft dan een promptvak. Importeer, voordat je ermee standaardiseert, de exacte modelonderdelen en reproduceer één representatieve bewerking, adapter of controleworkflow. “Native” beschrijft de interface en de implementatie; het garandeert geen ondersteuning of snelheid voor elke nieuwe architectuur.

DiffusionBee: verpakte macOS-workflow

DiffusionBee verpakt het downloaden van models en veelvoorkomende generatietaken in een desktopapplicatie. Download de DMG en verplaats de app naar Programma’s. De projectdocumentatie noemt image-to-image, inpainting, outpainting, ControlNet, LoRA en SDXL, en de app bevat upscaling. De release notes van DiffusionBee 2.5.3 vermelden Flux.1-ondersteuning alleen op arm64-Macs met macOS 13 of nieuwer.

De laatste DiffusionBee-release, 2.5.3, verscheen in augustus 2024, en de downloadpagina op diffusionbee.com verwijst nog steeds naar 2.5.1; haal 2.5.3 van de GitHub-releasepagina. Verwacht geen ondersteuning voor modelfamilies die daarna zijn uitgebracht. Kies het wanneer installatie en een geïntegreerde UI zwaarder wegen dan het exporteren van een pipeline-graph, en wanneer het model dat je nodig hebt er al in staat. Een functielabel als “Flux-ondersteuning” betekent niet dat elke afgeleide, quantization of hulpcomponent wordt geladen.

ComfyUI: een workflow opgeslagen als bestand

ComfyUI stelt generatie voor als een node graph. Elke stap is een node en de graph kan vertakken: één graph kan een afbeelding genereren, upscalen en doorgeven aan een gezichtsherstel-node uit een custom-nodepakket. Een workflow kan los van zijn uitvoer als JSON worden opgeslagen, waardoor de pipeline inspecteerbaar en versioneerbaar is. De executor kan ook voorkomen dat delen van de graph waarvan de invoer niet is veranderd opnieuw worden berekend.

Comfy Desktop is een beheerder voor meerdere installaties van lokale ComfyUI-instanties. De huidige macOS-documentatie ondersteunt Apple Silicon op macOS 13 of nieuwer. De installatie gebruikt een gedownloade .dmg. Als je Homebrew verkiest, is de huidige cask comfy (niet comfyui):

brew install --cask comfy

Kies ComfyUI wanneer een pipeline vertakkingen, herbruikbare componenten, meerdere models of automatisering heeft. Bewaar de JSON, de applicatieversie, de versies van de core nodes, de revisies van de custom nodes en het modelmanifest bij elkaar.

Hoe draai je dezelfde graph vanuit een script met een nieuwe seed? Exporteer de graph met File → Export Workflow (API). Het API-formaat indexeert elke node op zijn numerieke ID en bewaart alleen de invoer die nodig is om hem uit te voeren. Stuur hem daarna naar het /prompt-endpoint van de lokale server:

import json
import random
import urllib.request

COMFY_URL = "http://127.0.0.1:8188"  # check the port first, see below
SAMPLER_NODE = "3"  # the KSampler node ID in your exported file

with open("workflow_api.json") as f:
    workflow = json.load(f)

workflow[SAMPLER_NODE]["inputs"]["seed"] = random.randint(0, 2**32 - 1)

request = urllib.request.Request(
    f"{COMFY_URL}/prompt",
    data=json.dumps({"prompt": workflow}).encode("utf-8"),
    headers={"Content-Type": "application/json"},
)
with urllib.request.urlopen(request) as response:
    print(json.load(response))  # includes the prompt_id of the queued run

Kijk in het geëxporteerde bestand naar twee dingen: de ID van de sampler-node ("3" in het eigen API-voorbeeld van ComfyUI) en het bijbehorende inputs-veld, dat de seed, de stappen en de samplernaam bevat. Controleer de poort voordat je het script draait: een handmatige installatie luistert standaard op 8188, en Comfy Desktop kan een andere poort gebruiken, die in de serverinstellingen staat.

Custom nodes zijn uitvoerbare dependencies. Bekijk hun broncode en installatiescripts, pin revisies en isoleer de omgeving. Een graph van een onbekende auteur kan verwijzen naar code en models die je niet hebt gecontroleerd.

InvokeAI: een canvas voor inpainting en outpainting

InvokeAI werkt met een canvas: je selecteert het te wijzigen gebied met een masker en blijft in dezelfde weergave genereren. Inpainting genereert een gemaskeerd gebied binnen de afbeelding opnieuw; outpainting breidt de afbeelding uit buiten de bestaande randen. Het heeft ook een node-gebaseerde workflow-editor voor pipelines die je wilt opslaan en delen. Het project brengt nog steeds regelmatig releases uit; v6.14.2 verscheen in september 2026.

Installeer het met de Invoke Launcher: open de DMG, sleep de launcher naar Programma’s en start hem. De launcher installeert Python en Invoke voor je. De systeemvereisten noemen macOS 14 of nieuwer en vermelden dat alle Apple Silicon-Macs werken, met 16 GB geheugen of meer aanbevolen.

Kies het wanneer het grootste deel van je werk bestaat uit het bewerken van delen van een afbeelding, in plaats van hele afbeeldingen uit een prompt te genereren.

AUTOMATIC1111: compatibiliteit met een gevestigde Web UI

AUTOMATIC1111 Stable Diffusion WebUI toont generatie-instellingen via een browserinterface en ondersteunt scripts, extensies en een API. Kies het wanneer een specifieke tutorial, automatisering of extensie al deel van de eis is. De laatste release, v1.10.1, verscheen in februari 2025, dus controleer de ondersteuning voor elke modelfamilie die daarna is uitgebracht voordat je het kiest.

Op een Mac draait het op de MPS-backend van PyTorch. De officiële Apple Silicon-gids installeert het vanuit de terminal; ./webui.sh maakt bij de eerste start een Python-omgeving aan en installeert de overige dependencies:

brew install cmake protobuf rust python@3.10 git wget
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
cd stable-diffusion-webui
./webui.sh

Dezelfde gids documenteert uitzonderingen en prestatiebeperkingen, waaronder trage training. Controleer of de vereiste functie werkt op de doel-macOS- en PyTorch-versies voordat je een setup met veel extensies overneemt.

Extensies draaien code binnen de applicatieomgeving. Pin ze, review updates en houd de service op loopback, tenzij toegang op afstand bewust en beveiligd is.

Fooocus: alleen SDXL, alleen bugfixes

Fooocus verbergt bewust veel technische keuzes achter een eigenzinnige, prompt-first workflow. Dat kan nuttig zijn wanneer de standaardwaarden bij de taak passen.

De huidige README van het project zegt dat Fooocus is gebouwd rond SDXL en in beperkte long-term support zit, met alleen bugfixes. Ook staat erin dat Mac niet intensief is getest, en de Mac-installatie wordt als onofficieel beschreven: een conda-omgeving, een git clone en python entry_with_update.py, dat bij de eerste start de SDXL-models downloadt. Daarmee is Fooocus een keuze voor een bestaande Fooocus-workflow, niet de standaardroute voor nieuwe architecturen of voor een macOS-setup die je wilt onderhouden.

Voer één representatieve acceptatietest uit

Gebruik één kleine acceptatieset voordat je een tool kiest:

  1. Reproduceer een baseline text-to-image-resultaat vanuit een vastgelegde seed en vastgelegde instellingen.
  2. Voer de zwaarste vereiste bewerking uit: inpainting, ControlNet, LoRA, upscaling of een graph met meerdere fasen.
  3. Herstart de applicatie en reproduceer de workflow vanuit opgeslagen bestanden.
  4. Meet cold start, generatietijd, piek van de geheugendruk en uitvoerafmetingen.
  5. Verplaats de workflow naar een schoon gebruikersaccount of een schone machine en som elke ontbrekende dependency op.
  6. Controleer binding aan het lokale netwerk, downloads, analytics-instellingen, licenties en herkomst van models.

Vergelijk geen tools met verschillende checkpoints, resoluties, aantallen stappen of precisie om het resultaat daarna een runtime-benchmark te noemen.

Een praktische standaard

Begin voor verkennend werk met een native app en een model dat die documenteert. Stap over naar ComfyUI wanneer de workflow zelf waardevol wordt: wanneer hij moet worden gereviewd, herhaald, geautomatiseerd of aan iemand anders overgedragen. Stap over naar InvokeAI wanneer het werk vooral bestaat uit het bewerken van gebieden op een canvas. Houd AUTOMATIC1111 of Fooocus wanneer een bestaande dependency hun specifieke interface nuttig maakt.

Referenties