We leven in spannende tijden, met wekelijks aankondigingen over de allernieuwste technologie. OpenAI heeft zojuist het geavanceerde tekst-naar-beeld-model DALLE 2 uitgebracht.
Slechts een paar mensen kregen vroegtijdig toegang tot een nieuw AI-systeem dat realistische afbeeldingen kan genereren op basis van natuurlijke taalbeschrijvingen. Het is nog steeds gesloten voor het publiek.
Stability AI bracht vervolgens de Stabiele diffusie model, een open-source variant van DALLE2. Deze lancering heeft alles veranderd. Mensen over het hele internet publiceerden snelle resultaten en werden verrast door realistische kunst.
Wat is stabiele diffusie?
Stabiele diffusie is een machine learning-model dat in staat is om afbeeldingen van tekst te maken, afbeeldingen afhankelijk van de tekst te veranderen en details in te vullen op afbeeldingen met een lage resolutie of weinig details.
Het is getraind op miljarden foto's en kan resultaten opleveren die gelijkwaardig zijn aan: DALL-E2 en Halverwege de reis. Stabiliteit AI uitgevonden, en het werd openbaar gemaakt op 22 augustus 2022.
Maar met beperkte lokale rekenbronnen, duurt het lang voordat het Stable Diffusion-model afbeeldingen van hoge kwaliteit maakt. Het online uitvoeren van het model met behulp van een cloudprovider biedt ons bijna oneindige computerbronnen en stelt ons in staat om veel sneller uitstekende resultaten te behalen.
Door het model als microservice te hosten, kunnen ook andere creatieve apps het potentieel van het model gemakkelijker benutten zonder de complexiteit van het online uitvoeren van ML-modellen.
In dit bericht zullen we proberen aan te tonen hoe een stabiel diffusiemodel kan worden ontwikkeld en in AWS kan worden geïmplementeerd.
Stabiele diffusie bouwen en implementeren
BentoML en Amazon Web Services EC2 zijn twee opties voor het online hosten van het Stable Diffusion-model. BentoML is een open-source framework voor schalen machine learning Diensten. Met BentoML zullen we een betrouwbare verspreidingsservice bouwen en deze implementeren in AWS EC2.
De omgeving voorbereiden en stabiel diffusiemodel downloaden
Installeer vereisten en kloon de repository.
U kunt het Stable Diffusion-model selecteren en downloaden. Single Precision is geschikt voor CPU's of GPU's met meer dan 10 GB VRAM. Halve precisie is ideaal voor GPU's met minder dan 10 GB VRAM.
Stabiele diffusie bouwen
We zullen een BentoML-service bouwen om het model achter a RESTful API. In het volgende voorbeeld wordt het enkele precisiemodel voor voorspelling en de service.py-module gebruikt om de service te verbinden met bedrijfslogica. We kunnen de functies als API's weergeven door ze te taggen met @svc.api.
Verder kunnen we de input- en outputtypes van de API's in de parameters definiëren. Het txt2img-eindpunt ontvangt bijvoorbeeld een JSON-invoer en produceert een afbeeldingsuitvoer, terwijl het img2img-eindpunt een afbeelding en een JSON-invoer accepteert en een afbeeldingsuitvoer retourneert.
Een StableDiffusionRunnable definieert de essentiële inferentielogica. De uitvoerbare is verantwoordelijk voor het uitvoeren van de txt2img-pijpmethoden van het model en het verzenden van de relevante invoer. Voor het uitvoeren van de modelinferentielogica in de API's wordt een aangepaste Runner gemaakt van de StableDiffusionRunnable.
Gebruik vervolgens de volgende opdracht om een BentoML-service te starten om te testen. Het lokaal runnen van de Stabiel diffusiemodel gevolgtrekking op CPU's is nogal traag. Elke aanvraag duurt ongeveer 5 minuten om te verwerken.
Tekst naar afbeelding
Tekst naar afbeelding uitvoer
Het bestand bentofile.yaml definieert de vereiste bestanden en afhankelijkheden.
Gebruik de onderstaande opdracht om een bento te bouwen. Een Bento is het distributieformaat voor een BentoML-service. Het is een op zichzelf staand archief dat alle gegevens en configuraties bevat die nodig zijn om de service te starten.
De Stabiele Diffusie bento is afgerond. Als je de bento niet goed hebt kunnen genereren, raak dan niet in paniek; u kunt het vooraf gebouwde model downloaden met behulp van de opdrachten die in de volgende sectie worden vermeld.
Pre-build modellen
Hieronder volgen de pre-build modellen:
Stabiel diffusiemodel implementeren in EC2
Om de bento in EC2 te implementeren, gebruiken we bentoctl. bentoctl kan u uw bento's op elke cloud platform met behulp van Terraform. Installeer de AWS EC2-operator om Terraform-bestanden te bouwen en toe te passen.
In het implementatiebestand config.yaml is de implementatie al geconfigureerd. Gelieve te voelen vrij om aan uw vereisten te bewerken. De Bento wordt standaard geïmplementeerd op een g4dn.xlarge-host met de Diepe leren AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI op de us-west-1-regio.
Maak nu de Terraform-bestanden. Maak de Docker-afbeelding en upload deze naar AWS ECR. Afhankelijk van uw bandbreedte kan het uploaden van afbeeldingen lang duren. Gebruik de Terraform-bestanden om de bento naar AWS EC2 te implementeren.
Om toegang te krijgen tot de Swagger-gebruikersinterface, maakt u verbinding met de EC2-console en opent u het openbare IP-adres in een browser. Als de Stabiele Diffusion BentoML-service niet langer nodig is, verwijdert u de implementatie.
Conclusie
Je zou moeten kunnen zien hoe fascinerend en krachtig SD en zijn begeleidende modellen zijn. De tijd zal leren of we het concept verder zullen herhalen of overgaan op meer geavanceerde benaderingen.
Er zijn momenteel echter initiatieven aan de gang om grotere modellen te trainen met aanpassingen om de omgeving en de instructies beter te begrijpen. We hebben geprobeerd de Stable Diffusion-service te ontwikkelen met BentoML en deze in AWS EC2 te implementeren.
We waren in staat om het Stable Diffusion-model op krachtigere hardware uit te voeren, foto's met lage latentie te maken en verder te gaan dan een enkele computer door de service op AWS EC2 te implementeren.
Laat een reactie achter