Trăim vremuri interesante, cu anunțuri despre tehnologia de ultimă oră în fiecare săptămână. OpenAI tocmai a lansat modelul de ultimă oră text-to-image DALLE 2.
Doar câțiva oameni au obținut acces timpuriu la un nou sistem AI care poate genera grafică realistă din descrierile în limbaj natural. Este încă închis publicului.
Stability AI a lansat apoi Difuzie stabilă model, o variantă open-source a DALLE2. Această lansare a schimbat totul. Oamenii de pe tot internetul publicau rezultate rapide și erau surprinși de arta realistă.
Ce este difuzia stabilă?
Difuzie stabilă este un model de învățare automată capabil să creeze imagini din text, să schimbe imaginile în funcție de text și să completeze detalii pe imagini cu rezoluție scăzută sau cu detalii reduse.
A fost antrenat pe miliarde de fotografii și poate oferi rezultate echivalente cu DALL-E2 și MidJourney. Stabilitate AI l-a inventat și a fost făcut public pe 22 august 2022.
Dar cu resurse de calcul locale limitate, modelul Stable Diffusion necesită mult timp pentru a crea imagini de înaltă calitate. Rularea modelului online folosind un furnizor de cloud ne oferă resurse de calcul aproape infinite și ne permite să obținem rezultate excelente mult mai rapid.
Găzduirea modelului ca microserviciu permite, de asemenea, altor aplicații creative să exploateze mai ușor potențialul modelului, fără a fi nevoite să se confrunte cu complexitățile rulării modelelor ML online.
În această postare, vom încerca să demonstrăm cum să dezvoltăm un model de difuzie stabil și să-l implementăm în AWS.
Construiți și implementați Stable Diffusion
BentoML și Amazon Web Services EC2 sunt două opțiuni pentru găzduirea online a modelului Stable Diffusion. BentoML este un cadru open-source pentru scalare masina de învățare Servicii. Cu BentoML, vom construi un serviciu de dispersie fiabil și îl vom implementa pe AWS EC2.
Pregătirea mediului și descărcarea modelului de difuzie stabilă
Instalați cerințele și clonați depozitul.
Puteți selecta și descărca modelul Stable Diffusion. Precizia unică este potrivită pentru procesoare sau GPU-uri cu mai mult de 10 GB de VRAM. Precizia jumătate este ideală pentru GPU-uri cu mai puțin de 10 GB VRAM.
Construirea unei difuzii stabile
Vom construi un serviciu BentoML pentru a servi modelul din spatele unui RESTful API. Următorul exemplu utilizează modelul de precizie unică pentru predicție și modulul service.py pentru a conecta serviciul la logica de afaceri. Putem expune funcțiile ca API-uri etichetându-le cu @svc.api.
În plus, putem defini tipurile de intrare și ieșire ale API-urilor în parametri. Punctul final txt2img, de exemplu, primește o intrare JSON și produce o ieșire Image, în timp ce punctul final img2img acceptă o imagine și o intrare JSON și returnează o ieșire Image.
Un StableDiffusionRunnable definește logica de inferență esențială. Runnable este responsabil de rularea metodelor de conducte txt2img ale modelului și de trimiterea intrărilor relevante. Pentru rularea logicii de inferență a modelului în API-uri, un Runner personalizat este construit din StableDiffusionRunnable.
Apoi, utilizați următoarea comandă pentru a porni un serviciu BentoML pentru testare. Rularea locală a Model de difuzie stabilă inferența asupra procesoarelor este destul de lentă. Procesarea fiecărei cereri va dura aproximativ 5 minute.
Text în imagine
Ieșire text în imagine
Fișierul bentofile.yaml definește fișierele și dependențele necesare.
Utilizați comanda de mai jos pentru a construi un bento. Un Bento este formatul de distribuție pentru un serviciu BentoML. Este o arhivă autonomă care conține toate datele și configurațiile necesare pentru a porni serviciul.
Bento-ul Stable Diffusion a fost finalizat. Dacă nu ați reușit să generați corect bento, nu vă panicați; puteți descărca modelul pre-construit folosind comenzile enumerate în secțiunea următoare.
Modele prefabricate
Următoarele sunt modelele pre-construire:
Implementați modelul Stable Diffusion pe EC2
Pentru a implementa bento la EC2, vom folosi bentoctl. bentoctl vă poate permite să vă implementați bentos în orice platformă cloud folosind Terraform. Pentru a construi și aplica fișiere Terraform, instalați operatorul AWS EC2.
În fișierul config.yaml de implementare, implementarea a fost deja configurată. Vă rugăm să nu ezitați să editați conform cerințelor dvs. Bento este implementat implicit pe o gazdă g4dn.xlarge cu Invatare profunda AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI în regiunea us-west-1.
Creați fișierele Terraform acum. Creați imaginea Docker și încărcați-o în AWS ECR. În funcție de lățimea de bandă, încărcarea imaginilor poate dura mult timp. La implementarea bento pe AWS EC2, utilizați fișierele Terraform.
Pentru a accesa interfața de utilizare Swagger, conectați-vă la consola EC2 și deschideți adresa IP publică într-un browser. În cele din urmă, dacă serviciul Stable Diffusion BentoML nu mai este necesar, eliminați implementarea.
Concluzie
Ar trebui să puteți vedea cât de fascinante și puternice sunt SD și modelele sale însoțitoare. Timpul va spune dacă vom repeta conceptul în continuare sau vom trece la abordări mai sofisticate.
Cu toate acestea, există în prezent inițiative în curs de a antrena modele mai mari cu ajustări pentru a înțelege mai bine împrejurimile și instrucțiunile. Am încercat să dezvoltăm serviciul Stable Diffusion folosind BentoML și l-am implementat pe AWS EC2.
Am reușit să rulăm modelul Stable Diffusion pe hardware mai puternic, să creăm imagini cu latență scăzută și să ne extindem dincolo de un singur computer prin implementarea serviciului pe AWS EC2.
Lasă un comentariu