Nabubuhay tayo sa mga kapana-panabik na panahon, na may mga anunsyo tungkol sa makabagong teknolohiya bawat linggo. Inilabas lang ng OpenAI ang cutting-edge na text-to-image na modelo na DALLE 2.
Ilang tao lang ang nakakuha ng maagang pag-access sa isang bagong AI system na maaaring makabuo ng makatotohanang mga graphics mula sa mga natural na paglalarawan ng wika. Sarado pa rin ito sa publiko.
Pagkatapos ay inilabas ng Stability AI ang Matatag na Pagsasabog modelo, isang open-source na variant ng DALLE2. Binago ng paglulunsad na ito ang lahat. Ang mga tao sa buong internet ay nag-publish ng mabilis na mga resulta at nagulat sa makatotohanang sining.
Ano ang Stable Diffusion?
Matatag na Pagsasabog ay isang machine learning model na may kakayahang lumikha ng mga larawan mula sa text, baguhin ang mga larawan depende sa text, at punan ang mga detalye sa mga larawang may mababang resolution o mababang detalye.
Ito ay sinanay sa bilyun-bilyong larawan at maaaring maghatid ng mga resultang katumbas ng DALL-E2 at MidJourney. Katatagan AI nag-imbento nito, at isinapubliko ito noong Agosto 22, 2022.
Ngunit sa limitadong mga lokal na mapagkukunan ng computational, ang modelo ng Stable Diffusion ay tumatagal ng mahabang oras upang lumikha ng mga de-kalidad na larawan. Ang pagpapatakbo ng modelo sa online gamit ang cloud provider ay nagbibigay sa amin ng halos walang katapusang computational resources at nagbibigay-daan sa amin na makakuha ng mahuhusay na resulta nang mas mabilis.
Ang pagho-host ng modelo bilang isang microservice ay nagbibigay-daan din sa iba pang malikhaing app na mas madaling gamitin ang potensyal ng modelo nang hindi kailangang harapin ang mga kumplikado ng pagpapatakbo ng mga modelo ng ML online.
Sa post na ito, susubukan naming ipakita kung paano bumuo ng isang matatag na modelo ng pagsasabog at i-deploy ito sa AWS.
Bumuo at I-deploy ang Stable Diffusion
BentoML at Amazon Web Services EC2 ay dalawang opsyon para sa pagho-host ng Stable Diffusion model online. Ang BentoML ay isang open-source na framework para sa scaling machine learning mga serbisyo. Sa BentoML, bubuo kami ng maaasahang serbisyo sa pagpapakalat at ipapatupad ito sa AWS EC2.
Inihahanda ang kapaligiran at i-download ang stable diffusion model
I-install ang mga kinakailangan at i-clone ang repository.
Maaari mong piliin at i-download ang modelo ng Stable Diffusion. Ang solong katumpakan ay angkop para sa mga CPU o GPU na may higit sa 10GB ng VRAM. Ang kalahating katumpakan ay perpekto para sa mga GPU na may mas mababa sa 10GB VRAM.
Building Stable Diffusion
Bubuo kami ng serbisyo ng BentoML para ihatid ang modelo sa likod ng a Tahimik API. Ang sumusunod na halimbawa ay gumagamit ng solong precision na modelo para sa hula at ang service.py module upang ikonekta ang serbisyo sa lohika ng negosyo. Maaari naming ilantad ang mga function bilang mga API sa pamamagitan ng pag-tag sa kanila ng @svc.api.
Higit pa rito, maaari nating tukuyin ang mga uri ng input at output ng mga API sa mga parameter. Ang txt2img endpoint, halimbawa, ay tumatanggap ng JSON input at gumagawa ng Image output, samantalang ang img2img endpoint ay tumatanggap ng Image at JSON input at nagbabalik ng Image output.
Tinutukoy ng isang StableDiffusionRunnable ang mahahalagang lohika ng hinuha. Ang runnable ang namamahala sa pagpapatakbo ng txt2img pipe method ng modelo at pagpapadala ng mga nauugnay na input. Para sa pagpapatakbo ng modelong inference logic sa mga API, isang custom na Runner ang binuo mula sa StableDiffusionRunnable.
Pagkatapos, gamitin ang sumusunod na command upang magsimula ng serbisyo ng BentoML para sa pagsubok. Lokal na nagpapatakbo ng Modelo ng Stable Diffusion ang hinuha sa mga CPU ay medyo tamad. Ang bawat kahilingan ay tatagal ng humigit-kumulang 5 minuto upang maproseso.
Teksto sa larawan
Teksto sa output ng imahe
Tinutukoy ng bentofile.yaml file ang mga kinakailangang file at dependencies.
Gamitin ang command sa ibaba upang bumuo ng isang bento. Ang Bento ay ang format ng pamamahagi para sa isang serbisyo ng BentoML. Ito ay isang self-contained na archive na naglalaman ng lahat ng data at mga configuration na kailangan upang simulan ang serbisyo.
Nakumpleto na ang Stable Diffusion bento. Kung hindi mo magawang maayos ang pagbuo ng bento, huwag mataranta; maaari mong i-download ang pre-built na modelo gamit ang mga command na nakalista sa susunod na seksyon.
Mga Pre-build na Modelo
Ang mga sumusunod ay ang mga pre-build na modelo:
I-deploy ang Stable Diffusion model sa EC2
Upang i-deploy ang bento sa EC2, gagamitin namin ang bentoctl. Maaaring hayaan ka ng bentoctl na i-deploy ang iyong mga bentos sa alinman platform ng ulap gamit ang Terraform. Upang bumuo at maglapat ng mga Terraform file, i-install ang AWS EC2 operator.
Sa deployment config.yaml file, ang deployment ay na-configure na. Mangyaring huwag mag-atubiling mag-edit sa iyong mga kinakailangan. Ang Bento ay na-deploy bilang default sa isang g4dn.xlarge host na may Malalim na Pag-aaral AMI GPU PyTorch 1.12.0 (Ubuntu 20.04) AMI sa us-west-1 na rehiyon.
Lumikha ng mga file ng Terraform ngayon. Lumikha ng imahe ng Docker at i-upload ito sa AWS ECR. Depende sa iyong bandwidth, maaaring magtagal ang pag-upload ng larawan. Sa pag-deploy ng bento sa AWS EC2, gamitin ang mga Terraform file.
Upang ma-access ang Swagger UI, kumonekta sa EC2 console at buksan ang pampublikong IP address sa isang browser. Panghuli, kung hindi na kailangan ang serbisyo ng Stable Diffusion BentoML, alisin ang deployment.
Konklusyon
Dapat mong makita kung gaano kaakit-akit at kalakas ang SD at ang mga kasamang modelo nito. Sasabihin ng oras kung uulitin pa natin ang konsepto o magpapatuloy sa mas sopistikadong mga diskarte.
Gayunpaman, kasalukuyang may mga inisyatiba na isinasagawa upang sanayin ang mas malalaking modelo na may mga pagsasaayos upang mas maunawaan ang paligid at ang mga tagubilin. Sinubukan naming bumuo ng serbisyo ng Stable Diffusion gamit ang BentoML at na-deploy ito sa AWS EC2.
Nagawa naming patakbuhin ang modelong Stable Diffusion sa mas malakas na hardware, gumawa ng mga larawang may mababang latency, at lumampas sa isang computer sa pamamagitan ng pag-deploy ng serbisyo sa AWS EC2.
Mag-iwan ng Sagot