Vi lever i spennende tider, med kunngjøringer om banebrytende teknologi hver uke. OpenAI har nettopp gitt ut den banebrytende tekst-til-bilde-modellen DALLE 2.
Bare noen få personer fikk tidlig tilgang til et nytt AI-system som kan generere realistisk grafikk fra naturlige språkbeskrivelser. Det er fortsatt stengt for publikum.
Stability AI ga deretter ut Stabil diffusjon modell, en åpen kildekode-variant av DALLE2. Denne lanseringen har endret alt. Folk over hele internett publiserte raske resultater og ble overrasket over realistisk kunst.
Hva er stabil diffusjon?
Stabil diffusjon er en maskinlæringsmodell som er i stand til å lage bilder fra tekst, endre bilder avhengig av teksten, og fylle ut detaljer på bilder med lav oppløsning eller lav detalj.
Den ble trent på milliarder av bilder og kan levere resultater tilsvarende DALL-E2 og MidJourney. Stabilitet AI oppfant det, og det ble offentliggjort 22. august 2022.
Men med begrensede lokale beregningsressurser tar Stable Diffusion-modellen lang tid å lage bilder av høy kvalitet. Å kjøre modellen online ved hjelp av en skyleverandør gir oss nesten uendelige beregningsressurser og lar oss oppnå utmerkede resultater mye raskere.
Å være vert for modellen som en mikrotjeneste gjør det også mulig for andre kreative apper å lettere utnytte modellens potensiale uten å måtte forholde seg til kompleksiteten ved å kjøre ML-modeller online.
I dette innlegget vil vi forsøke å demonstrere hvordan man utvikler en stabil diffusjonsmodell og distribuerer den til AWS.
Bygg og distribuer stabil diffusjon
BentoML og Amazon Web Services EC2 er to alternativer for å være vert for Stable Diffusion-modellen online. BentoML er et åpen kildekode-rammeverk for skalering maskinlæring tjenester. Med BentoML vil vi bygge en pålitelig spredningstjeneste og distribuere den til AWS EC2.
Forberede miljøet og laste ned stabil diffusjonsmodell
Installer krav og klon depotet.
Du kan velge og laste ned den stabile diffusjonsmodellen. Enkel presisjon er egnet for CPUer eller GPUer med mer enn 10 GB VRAM. Halv presisjon er ideell for GPUer med mindre enn 10 GB VRAM.
Bygge stabil diffusjon
Vi vil bygge en BentoML-tjeneste for å betjene modellen bak en RESTful API. Følgende eksempel bruker enkeltpresisjonsmodellen for prediksjon og service.py-modulen for å koble tjenesten til forretningslogikk. Vi kan eksponere funksjonene som APIer ved å merke dem med @svc.api.
Videre kan vi definere API-enes input- og output-typer i parameterne. txt2img-endepunktet mottar for eksempel en JSON-inngang og produserer en bildeutgang, mens img2img-endepunktet godtar et bilde og en JSON-inngang og returnerer en bildeutgang.
En StableDiffusionRunnable definerer den essensielle slutningslogikken. Kjørbaren har ansvaret for å kjøre modellens txt2img pipe-metoder og sende inn relevante innganger. For å kjøre modellslutningslogikken i API-ene, er en tilpasset Runner konstruert fra StableDiffusionRunnable.
Deretter bruker du følgende kommando for å starte en BentoML-tjeneste for testing. Driver lokalt Stabil diffusjonsmodell slutningen om CPUer er ganske treg. Hver forespørsel vil ta ca. 5 minutter å behandle.
Tekst til bilde
Tekst til bilde utgang
bentofile.yaml-filen definerer de nødvendige filene og avhengighetene.
Bruk kommandoen nedenfor for å bygge en bento. En Bento er distribusjonsformatet for en BentoML-tjeneste. Det er et selvstendig arkiv som inneholder alle data og konfigurasjoner som trengs for å starte tjenesten.
Den stabile diffusjonsbentoen er ferdigstilt. Hvis du ikke var i stand til å generere bento på riktig måte, ikke få panikk; du kan laste ned forhåndsbygd modell ved å bruke kommandoene som er oppført i neste avsnitt.
Forhåndsbygde modeller
Følgende er pre-build-modellene:
Distribuer stabil diffusjonsmodell til EC2
For å distribuere bentoen til EC2, vil vi bruke bentoctl. bentoctl kan la deg distribuere bentos til alle skyplattform ved hjelp av Terraform. For å bygge og bruke Terraform-filer, installer AWS EC2-operatøren.
I distribusjonen config.yaml-filen er distribusjonen allerede konfigurert. Rediger gjerne etter dine behov. Bento er som standard distribuert på en g4dn.xlarge-vert med Dyp læring AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI på us-west-1-regionen.
Lag Terraform-filene nå. Lag Docker-bildet og last det opp til AWS ECR. Avhengig av båndbredden din, kan opplasting av bilder ta lang tid. Når du distribuerer bento til AWS EC2, bruk Terraform-filene.
For å få tilgang til Swagger UI, koble til EC2-konsollen og åpne den offentlige IP-adressen i en nettleser. Til slutt, hvis Stable Diffusion BentoML-tjenesten ikke lenger er nødvendig, fjern distribusjonen.
konklusjonen
Du bør være i stand til å se hvor fascinerende og mektig SD og dens følgemodeller er. Tiden vil vise om vi vil iterere konseptet videre eller gå videre til mer sofistikerte tilnærminger.
Imidlertid er det for tiden initiativer på gang for å lære opp større modeller med justeringer for bedre å forstå omgivelsene og instruksjonene. Vi forsøkte å utvikle Stable Diffusion-tjenesten ved å bruke BentoML og distribuerte den til AWS EC2.
Vi var i stand til å kjøre Stable Diffusion-modellen på kraftigere maskinvare, lage bilder med lav ventetid og strekke oss utover en enkelt datamaskin ved å distribuere tjenesten på AWS EC2.
Legg igjen en kommentar