Hetzelfde project, een andere machine: je ComfyUI-workflow reconstrueren.
Om een ComfyUI-workflow over te nemen, neem je de JSON mee, identificeer je de exacte modellen en achterhaal je de omgeving die ze uitvoert. Het bestand van de graaf bevat de gewichten niet. Onze map 'Keramiek — drie lichtintenties' geeft je een origineel recept om te reconstrueren: drie vergelijkbare varianten, een manifest en een offline controle. De JSON en de graaf zijn gecontroleerd; geen enkele afbeelding of GPU-meting wordt gepresenteerd als geproduceerd door deze oefening.
Keramiek — drie lichtintenties
Originele workflow, manifest, stap-voor-stap reconstructie, Python-validator zonder externe afhankelijkheid en volgbladen. Geen gewichten of gegenereerde resultaten in het archief.
Wat er is gecontroleerd
- JSON conform het ComfyUI-interfaceschema 0.4; 15 core-nodes en 25 verbindingen gecontroleerd.
- Parameters van de drie branches gecontroleerd; offline controle beschikbaar in het dossier.
- ComfyUI-import en generatie niet uitgevoerd: geen afbeelding, duur of VRAM gemeten.
- Modelvingerafdruk afkomstig uit de repository van de uitgever; gewichten niet gedownload.
Een concreet geval: het licht van een affiche zoeken
Het project is een richtingstudie voor een fictief keramiekwerk: een mat ivoorkleurige vaas, een kobaltblauwe sokkel en een zandkleurige achtergrond. De compositie vraagt om een vrije zone linksboven om er daarna een titel aan toe te voegen in lay-outsoftware. Het doel is drie lichtintenties te vergelijken en vervolgens de gemaakte keuze uit te leggen. Het gaat er niet om een gefotografeerd object getrouw na te bootsen.
De meegeleverde workflow heeft drie takken, met dezelfde afmetingen, hetzelfde model, dezelfde seed en dezelfde instellingen. Alleen de lichtzin verandert in de positieve prompt. Er wordt geen invoerafbeelding, geen aangepaste node, geen refiner en geen LoRA gebruikt. Je krijgt een project dat klein genoeg is om elke verbinding te begrijpen en gestructureerd genoeg om een echte vergelijking voor te bereiden. De download levert de workflow en de parameters. Voor deze map is geen enkele generatie uitgevoerd: produceer en vergelijk de afbeeldingen in jouw omgeving.
De software voorbereiden en de werkelijk gebruikte versies noteren
De graaf is gericht op de definities van ComfyUI 0.37.0 en de frontend 1.52.7 die door zijn dependencies wordt aangeduid. Het manifest bewaart hun volledige commits. Deze versies zijn geraadpleegd in de officiële bronnen; ze beschrijven geen installatie die voor dit artikel is uitgevoerd. Gebruik een installatie die is voorbereid volgens de procedure die bij jouw systeem past en vergelijk de versies ervan met deze referentie.
Python, PyTorch, het stuurprogramma en de rekenprecisie maken ook deel uit van het hervattingsdossier. Het bestand environnement-a-remplir.json laat deze velden leeg tot je eigen waarneming. Neem er geen veronderstelde versie in over op basis van de naam van je GPU. De pagina Omgevingen helpt deze dependencies te organiseren. De validator van de download vraagt alleen Python 3.10 of nieuwer en de standaardbibliotheek; hij vereist geen ComfyUI.
| Element | Referentie | Status in dit dossier |
|---|---|---|
| ComfyUI-kern | 0.37.0, volledige commit in het manifest | Geraadpleegde nodedefinities |
| ComfyUI-frontend | 1.52.7, volledige commit in het manifest | Gedocumenteerde widgetvolgorde |
| Workflowformaat | Interface-JSON 0.4 | Schema en graaf gecontroleerd |
| Python / PyTorch van de generatie | Op te meten op de gebruikte machine | Hier is geen generatie uitgevoerd |
| Stuurprogramma, precisie, geheugen en duur | Te observeren tijdens je test | Niet gemeten |
Het checkpoint identificeren zonder naam en inhoud te verwarren
Het verwachte bestand is sd_xl_base_1.0.safetensors, in ComfyUI/models/checkpoints/, afkomstig uit de Stability AI-repository op de revisie die in het manifest is vastgelegd. Dit recept gebruikt het volledige checkpoint SDXL Base 1.0: de loader levert het model, de tekstcodering en de VAE aan de graaf. Er worden geen gewichten met onze resources meegeleverd. Raadpleeg de pagina van het model en zijn licentie voordat je het apart aanschaft.
Het manifest geeft een grootte van 6.938.078.334 bytes en een SHA-256-hash uit de metadata van de repository van de uitgever. We hebben de gewichten niet gedownload om deze hash opnieuw te berekenen. De optie --checkpoint van de validator vergelijkt het bestand dat je al bezit met deze referentie. Een hernoemd bestand is niet noodzakelijk hetzelfde model; het gewicht op schijf geeft ook niet de piek van het GPU-geheugengebruik aan.
Als je installatie een centrale map of een submap gebruikt, selecteer dan het pad dat de loader voorstelt en noteer die aanpassing. Een leeg menu nodigt eerst uit om de map en het type loader te controleren, voordat je kopieën van het model vermenigvuldigt.
De JSON importeren en de nodes in de juiste volgorde lezen
Pak de map uit en open vervolgens workflow-ui.json in de ComfyUI-interface of sleep het bestand op het canvas. Dit is het interfaceformaat 0.4, met posities, widgets en verbindingen. Dit bestand is niet de payload voor het API-eindpunt /prompt. Controleer de geselecteerde checkpoint en of er geen nodes ontbreken voordat je iets start.
De 15 nodes gebruiken slechts zes ingebouwde types. De loader, de lege latent en de negatieve tekst zijn gemeenschappelijk. Elke tak voegt een positieve tekst, een KSampler, een VAE-decodering en een opslag toe. Drie takken betekenen niet drie GPU's of een gelijktijdige uitvoering. Het bestand reconstruction.md beschrijft de 25 verbindingen als je de graaf liever handmatig opnieuw opbouwt.
| Node | Aantal | Rol in deze oefening |
|---|---|---|
| CheckpointLoaderSimple | 1 | De checkpoint laden; MODEL, CLIP en VAE leveren |
| EmptyLatentImage | 1 | 1024 × 1024 pixels en een batch van 1 instellen |
| CLIPTextEncode | 4 | Drie positieve prompts en één gemeenschappelijke negatieve prompt encoderen |
| KSampler | 3 | De latents berekenen met de gemeenschappelijke instellingen |
| VAEDecode | 3 | De latents naar afbeeldingen decoderen |
| SaveImage | 3 | De varianten naar drie verschillende prefixen schrijven |
Checkpoint.CLIP → Texte positif.clip
Checkpoint.MODEL → KSampler.model
Texte positif.CONDITIONING → KSampler.positive
Texte négatif.CONDITIONING → KSampler.negative
Latent vide.LATENT → KSampler.latent_image
KSampler.LATENT → VAEDecode.samples
Checkpoint.VAE → VAEDecode.vae
VAEDecode.IMAGE → SaveImage.imagesVaste instellingen aanhouden om drie intenties te vergelijken
De drie KSamplers gebruiken de seed 24092026, 24 stappen, een CFG van 6.5, de sampler euler, de scheduler normal en een denoise van 1. De controle na generatie staat in elke tak op fixed. Deze keuze houdt dezelfde testparameters aan; ze pretendeert niet de beste instelling voor alle afbeeldingen te zijn.
De gemeenschappelijke prompt beschrijft de vaas, de sokkel, de achtergrond en het gebied voor de titel. De laatste zin geeft het licht. Elke volledige tekst vind je in het manifest: kopieer de hele variant bij een reconstructie. De instructies voor het model staan in dit SDXL-voorbeeld in het Engels. De gemeenschappelijke negatieve prompt vraagt met name om tekst, logo's, gedupliceerde objecten en vervormingen te vermijden. Deze instructies blijven verzoeken aan het model, zonder garantie dat het ze perfect naleeft.
| Variant | Lichtinstructie | Vraag bij de output |
|---|---|---|
| A · frontaal | Brede, frontale en diffuse bron | Blijft het volume leesbaar zonder al te veel schaduw? |
| B · zijwaarts | Grote bron links, zachte schaduw naar rechts | Dienen het reliëf en de materie de affiche? |
| C · tegenlicht | Licht van achteren en lichte frontale opvulling | Volstaat de lichtrand om de vaas los te maken? |
Controleer de map voordat je de GPU inzet
Voer vanuit de uitgepakte map de validator hieronder uit. Hij leest alleen de workflow en het manifest, controleert de identificaties, de aansluitingen, de datatypes, de wederzijdse koppelingen, de afwezigheid van cycli en de overeenstemming van de parameters van de drie varianten. Hij benadert geen enkele dienst en laadt geen enkel model. Een fout duidt het deel van de map aan dat je moet bekijken.
De meegeleverde workflow is ook gecontroleerd tegen het officiële schema UI 0.4. De publieke validator is bewust beperkt tot het profiel van deze oefening: als je een andere node toevoegt of de nummering wijzigt, kan hij je kopie weigeren zelfs als ComfyUI hem kan gebruiken. Bewaar dus een intact origineel voordat je aanpassingen doet.
Een resultaat ok: true toont de samenhang van deze JSON en zijn graaf aan. Het toont niet de daadwerkelijke import in je interface, de beschikbaarheid van de checkpoint of de productie van een afbeelding aan. Deze laatste stappen zijn niet uitgevoerd voor de levering van deze map.
python validate_workflow.pypython validate_workflow.py --checkpoint "D:/modeles/sd_xl_base_1.0.safetensors"Uitvoeren, de outputs openen en je keuze documenteren
Wanneer de afhankelijkheden aanwezig zijn, start je de workflow en controleer je of elke tak SaveImage bereikt. De prefixen a_frontale, b_laterale en c_contrejour staan onder RenderParcel/ceramique-v1/ in de uitvoermap van ComfyUI. De applicatie vult de namen aan met haar eigen tellers. Het recept levert drie afzonderlijke bestanden op; het maakt niet automatisch een vergelijkingsblad.
Open de PNG's en controleer de afmetingen, de rand van de vaas, de leesbaarheid van het materiaal en de beschikbare ruimte voor de titel. Vul comparaison.csv met je observaties en een selectiecriterium. De cellen van de download zijn leeg: geen enkele variant is hier visueel beoordeeld. Als een generatie mislukt, noteer die mislukking dan in plaats van er een tijd of kwaliteit aan toe te kennen.
Dezelfde seed garandeert geen identieke pixels tussen versies, hardware en handelingen. De belichting aanpassen kan ook het silhouet veranderen: de workflow verkent een intentie, zonder een productidentiteit vast te leggen. Bewaar een referentiebeeld van je eigen uitvoering en vergelijk eerst de aangekondigde criteria, en pas daarna de pixels als je omgeving en protocol dat rechtvaardigen.
Fouten herkennen die het hervatten verhinderen
Begin bij de eerste waarneembare fout. Tegelijk het model, de ComfyUI-versie en de samplingparameters wijzigen maakt de diagnose onnodig moeilijk. De tabel scheidt de gebreken van de map van de gebreken die zich pas bij het laden of tijdens de generatie openbaren.
Als je geheugen tekortkomt, noteer dan de betrokken stap: laden, samplen of decoderen. De batch is in deze oefening al beperkt tot één afbeelding. Een lagere resolutie kan als diagnose dienen, maar levert een andere proef op; werk het manifest bij in plaats van de resultaten te vergelijken alsof ze uit het oorspronkelijke geval komen.
| Symptoom | Eerste controle | Nuttig vervolg |
|---|---|---|
| Checkpoint ontbreekt in het menu | Naam en map checkpoints, of extra paden | Lijst vernieuwen volgens je installatie |
| Onbekende node na import | Technisch type en werkelijk gebruikte versie | Vergelijken met de zes core-types in het manifest |
| Linkfout van de validator | Gemelde invoer, uitvoer en linknummer | Vertrekken van de intacte kopie of de verbinding opnieuw opbouwen |
| Moeilijk te vergelijken varianten | Seed, fixed, afmetingen en parameters van de drie takken | Alleen de lichtzin wijzigen |
| Geheugentekort tijdens de berekening | Exacte stap en werkelijk gestarte belasting | Meten en dan een passende proef voorbereiden, met een nieuw manifest |
| PNG aanwezig maar slechte compositie | Selectiecriteria en volledige prompt | Slechts één beperking herformuleren; de vorige versie bewaren |
Een recept archiveren en de hardware kiezen op basis van je observaties
De definitieve hervatmap bundelt de werkelijk gebruikte JSON, het aangevulde manifest, de vergelijking, de omgevingsversies en een referentie-uitvoer die je hebt geopend. Bewaar de JSON apart: de metadata van een mediabestand kan verloren gaan bij een conversie of het delen ervan. De exportgids helpt om de visuele oplevering te onderscheiden van de bronnen die nodig zijn voor een nieuwe uitvoering.
Observeer voordat je het project uitbreidt een volledige generatie tot en met het decoderen en opslaan. We hebben hier noch de rekentijd noch het benodigde VRAM gemeten. Bekijk een RTX 4090 van 24 GB of een RTX 6000 Ada van 48 GB volgens de vastgestelde behoefte, de compatibiliteit van je omgeving en het nuttige abonnement. Hun geheugen is geen belofte van snelheid; deze grafiek telt het geheugen van meerdere kaarten niet automatisch op.
De beeldatelier helpt je de richting en de criteria te verfijnen voordat je reserveert. Daarna kun je een configuratie voorbereiden en dezelfde invoer bewaren voor je eigen hardwaretest. De oorspronkelijke bronnen van de map zijn onder MIT-licentie; de software en het model blijven onderworpen aan hun respectieve licenties.
Om verder te komen met je project.
Een selectiecontactsheet maken
Varianten met dezelfde criteria vergelijken en een precieze beslissing doorgeven.
Lees het notitieboek Regisseren & kiezenVergroten zonder het onderwerp te verliezen
Vertrekken van het eindformaat, de afmetingen berekenen en dan de details bekijken die ertoe doen.
Lees het notitieboekJe vragen.
Kan ik de download gebruiken zonder de SDXL-gewichten te hebben?+
Je kunt het manifest lezen, de JSON controleren en de verbindingen opnieuw opbouwen. Een generatie vereist het aangegeven checkpoint en een compatibele ComfyUI-omgeving. De validator vervangt deze afhankelijkheden niet en downloadt ze niet.
Waarom gebruikt het JSON het UI 0.4-formaat?+
Dit is het interfaceformaat dat voor dit dossier is gekozen en tegen het officiële schema is gecontroleerd. Het beschrijft onder meer de nodes, hun posities en hun widgets. De formaatversie is niet die van de ComfyUI-software, en deze JSON mag niet worden verward met een API-payload.
Kan ik exact dezelfde vaas krijgen door alleen het licht te veranderen?+
Het recept garandeert dat niet. Het vergelijkt text-to-image-prompts met de overige parameters vast. Het model kan details, de silhouet of de kadrering veranderen. Om aan een echt product te werken waarvan de vorm trouw moet blijven, is een ander protocol voor referentie en controle nodig.