Vi lever i spännande tider, med tillkännagivanden om spjutspetsteknik varje vecka. OpenAI har precis släppt den banbrytande text-till-bild-modellen DALLE 2.
Endast ett fåtal personer fick tidig tillgång till ett nytt AI-system som kan generera realistisk grafik från naturliga språkbeskrivningar. Det är fortfarande stängt för allmänheten.
Stability AI släppte sedan Stabil diffusion modell, en öppen källkodsvariant av DALLE2. Denna lansering har förändrat allt. Människor över hela internet publicerade snabba resultat och blev överraskade av realistisk konst.
Vad är stabil diffusion?
Stabil diffusion är en maskininlärningsmodell som kan skapa bilder från text, ändra bilder beroende på text och fylla i detaljer på lågupplösta eller lågdetaljerade bilder.
Den tränades på miljarder foton och kan leverera resultat motsvarande DALL-E2 och MidJourney. Stabilitet AI uppfann det, och det offentliggjordes den 22 augusti 2022.
Men med begränsade lokala beräkningsresurser tar Stable Diffusion-modellen lång tid att skapa bilder av hög kvalitet. Att köra modellen online med hjälp av en molnleverantör ger oss nästan oändliga beräkningsresurser och gör att vi kan få utmärkta resultat mycket snabbare.
Att vara värd för modellen som en mikrotjänst gör det också möjligt för andra kreativa appar att lättare utnyttja modellens potential utan att behöva ta itu med komplexiteten med att köra ML-modeller online.
I det här inlägget kommer vi att försöka demonstrera hur man utvecklar en stabil diffusionsmodell och distribuerar den till AWS.
Bygg och distribuera stabil diffusion
BentoML och Amazon Web Services EC2 är två alternativ för att vara värd för modellen Stable Diffusion online. BentoML är ett ramverk med öppen källkod för skalning maskininlärning tjänster. Med BentoML kommer vi att bygga en pålitlig spridningstjänst och distribuera den till AWS EC2.
Förbereda miljön och ladda ner stabil diffusionsmodell
Installera krav och klona förvaret.
Du kan välja och ladda ner den stabila diffusionsmodellen. Enkel precision är lämplig för CPU:er eller GPU:er med mer än 10 GB VRAM. Halv precision är idealisk för grafikprocessorer med mindre än 10 GB VRAM.
Bygga stabil diffusion
Vi kommer att bygga en BentoML-tjänst för att tjäna modellen bakom en RESTful API. Följande exempel använder den enda precisionsmodellen för förutsägelse och service.py-modulen för att koppla tjänsten till affärslogik. Vi kan exponera funktionerna som API:er genom att tagga dem med @svc.api.
Vidare kan vi definiera API:ernas in- och utdatatyper i parametrarna. txt2img-slutpunkten, till exempel, tar emot en JSON-ingång och producerar en bildutdata, medan img2img-ändpunkten accepterar en bild- och en JSON-ingång och returnerar en bildutdata.
En StableDiffusionRunnable definierar den väsentliga slutledningslogiken. Den körbara är ansvarig för att köra modellens txt2img pipe-metoder och skicka in relevanta ingångar. För att köra modellinferenslogiken i API:erna konstrueras en anpassad Runner från StableDiffusionRunnable.
Använd sedan följande kommando för att starta en BentoML-tjänst för testning. Lokalt driver Stabil diffusionsmodell slutsatsen om CPU:er är ganska trög. Varje begäran tar cirka 5 minuter att behandla.
Text till bild
Utmatning av text till bild
Filen bentofile.yaml definierar nödvändiga filer och beroenden.
Använd kommandot nedan för att bygga en bento. En Bento är distributionsformatet för en BentoML-tjänst. Det är ett fristående arkiv som innehåller all data och konfigurationer som behövs för att starta tjänsten.
Stall Diffusion Bento har slutförts. Om du inte kunde generera bento ordentligt, få inte panik; du kan ladda ner förbyggd modell med hjälp av kommandona som listas i nästa avsnitt.
Förbyggda modeller
Följande är de förbyggda modellerna:
Distribuera stabil diffusionsmodell till EC2
För att distribuera bento till EC2 kommer vi att använda bentoctl. bentoctl kan låta dig distribuera dina bentos till vilken som helst molnplattform med Terraform. För att bygga och tillämpa Terraform-filer, installera AWS EC2-operatören.
I installationsfilen config.yaml har distributionen redan konfigurerats. Du får gärna redigera efter dina önskemål. Bento distribueras som standard på en g4dn.xlarge-värd med Deep Learning AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI på us-west-1-regionen.
Skapa Terraform-filerna nu. Skapa Docker-bilden och ladda upp den till AWS ECR. Beroende på din bandbredd kan uppladdningen av bilder ta lång tid. När du distribuerar bento till AWS EC2, använd Terraform-filerna.
För att komma åt Swagger UI, anslut till EC2-konsolen och öppna den offentliga IP-adressen i en webbläsare. Slutligen, om tjänsten Stable Diffusion BentoML inte längre behövs, ta bort distributionen.
Slutsats
Du borde kunna se hur fascinerande och kraftfulla SD och dess följeslagare är. Tiden får utvisa om vi kommer att upprepa konceptet ytterligare eller gå vidare till mer sofistikerade tillvägagångssätt.
Men det pågår just nu initiativ för att utbilda större modeller med justeringar för att bättre greppa omgivningen och instruktionerna. Vi försökte utveckla tjänsten Stable Diffusion med BentoML och distribuerade den till AWS EC2.
Vi kunde köra Stable Diffusion-modellen på mer kraftfull hårdvara, skapa bilder med låg latens och sträcka oss längre än en enda dator genom att distribuera tjänsten på AWS EC2.
Kommentera uppropet