Aplicatie pentru crearea unui API de generare a textului pentru generarea de text din GPT-2 OpenAI prin gpt-2-simple si rularea acestuia intr-o maniera scalabila si eficienta gratuita prin Cloud Run Google. Aceasta aplicatie este destinata a fi utilizata pentru a permite cu usurinta si in mod eficient din punct de vedere al costurilor altii sa se joace cu un model GPT-2 reglat pe un alt set de date si sa permita accesul programatic la textul generat.

App.py de baza ruleaza starlette pentru asincronizare / rezistenta la viitor si este usor de piratat daca doriti sa modificati intrarea / iesirea GPT-2, sa fortati anumiti parametri de generatie sau doriti sa adaugati caracteristici / puncte finale suplimentare, cum ar fi trimiterea pe Twitter a rezultatului generat.

Demo

Puteti juca cu o demonstratie bazata pe web a unei API Cloud Run care indica modelul implicit 117M „mic” GPT-2 aici: https://minimaxir.com/apps/gpt2-small/

UI web demo se bazeaza pe fisierul app_ui.html din aceasta repo (construit pe Bulma si jQuery) si este proiectat pentru a fi usor de piratat pentru a adauga noi functii si / sau pentru a regla designul (de exemplu, puteti schimba adresa URL in JavaScript functie pentru a indica propriul API Cloud Run).

Cum sa construiti containerul si sa incepeti Cloud Run

Deoarece Cloud Run este apatrid fara acces la stocarea locala, trebuie sa grupati modelul in container. Mai intai, descarcati / clonati aceasta repo si copiati modelul in folder (modelul ar trebui sa fie sub forma ierarhiei folderelor / punctului de control / run1, care este cazul in mod implicit pentru majoritatea scripturilor de reglare fina)

Apoi construiti imaginea:

Daca doriti sa testati imaginea local cu aceleasi specificatii ca Cloud Run, puteti rula:

docker run -p 8080: 8080 –memory = “2g” –cpus = “1” gpt2

Apoi puteti vizita / curl http://0.0.0.0:8080 pentru a obtine text generat!

Apoi, etichetati imaginea si incarcati-o in Google Container Registry (retineti, acest lucru va dura o vreme din cauza dimensiunii imaginii!):

eticheta docker gpt2 gcr.io/[PROJECT-ID]/gpt2 docker push gcr.io/[PROJECT-ID]/gpt2

Dupa ce ati terminat, implementati imaginea incarcata in Cloud Run prin intermediul consolei. Setati memoria alocata la 2 GB si solicitarile maxime pe container la 1 !

Jurnalele Cloud Run va vor spune cum functioneaza serviciul, iar nivelul jurnalului INFO contine informatii de diagnosticare Cloud Run, inclusiv timpul necesar pentru a rula o cerere.

Interactiunea cu API-ul in Cloud Run

API accepta atat solicitarile GET, cat si cererile POST si returneaza un obiect JSON cu un atribut text care contine textul generat. De exemplu, sa presupunem ca adresa URL Cloud Run este http://example.google.com:

O solicitare GET catre API ar fi http://example.

pollones enormes viejas con jovenes follando
lesbianasx tetonas en español
porno italiano incesto incesto abuela nieto
copilacion de mamadas natalia sanchez desnuda
pilladas sin bragas porno incesto asiatico
se le marca el coño porno hentail
jovencitas muy calientes milfs españolas follando
porno fiestas porno español madre e hijo
maduras españolas sexo mamas incestuosas
porno gay trios vídeos de sexo gratis
xxx prostitutas pajas entre colegas
your porn madres xxxx
follando en el convento folladas en la cocina
tv porno nudismo porno
milfs españolas porno amateur hd
incesto asiatico ver peliculas porno italianas
penes gordos jovencitas xxx hd
moras follando putas vic
meadas gay mamadas de españolas
paginas sexo peleas xxx

google.com?length=100&temperature=1.0, care poate fi accesata de aproape orice tip de client. (NB: Nu vizitati API-ul intr-un browser web, deoarece preluarea anticipata a browserului poate fi considerata o cerere suplimentara)

O cerere POST (transmiterea datelor ca obiect JSON) este mai ideala, deoarece este atat mai sigura, cat si permite intrari non-ASCII. Exemplu Python:

cereri de import req = requests.post (‘http://example.google.com’, json = {‘length’: 100, ‘temperature’: 1.0}) text = req.json () [‘text’] print ( text)

UI din app_ui.html utilizeaza cererile AJAX POST prin jQuery pentru a prelua textul generat si a analiza datele pentru afisare.

Note utile

  • Datorita maximului de memorie actual de 2 GB al Cloud Run, aceasta aplicatie va functiona doar cu modelul GPT-2 de 117 milioane, si nu cu modelul „mediu” de 345 milioane (chiar daca Cloud Run ofera o optiune de 4 GB in viitor, nu este suficient pentru a sustine modelul 345M).
  • Fiecare predictie, la lungimea implicita de 1023 de jetoane, va dura aproximativ 2 minute pentru a genera (10 secunde la 100 de jetoane). Poate doriti sa luati in considerare reducerea lungimii textului generat daca viteza este o problema si / sau limitarea duratei la nivelul aplicatiei.
  • Daca API-ul dvs. din Cloud Run proceseaza activ o solicitare mai putin de 7% din timp (la nivelul de 100 de milisecunde) intr-o luna data, veti ramane in nivelul gratuit Cloud Run si pretul este de 0,10 USD pe ora, daca serviciul depaseste nivelul gratuit. Numai timpul de pornire a unei instante si de procesare a unei cereri conteaza ca timp facturabil (adica duratele din jurnale); timpul inactiv nu se considera facturabil, ceea ce face surprinzator de usor sa ramaneti in limite.
  • Concurenta este setata la 1 pentru a asigura utilizarea maxima a fiecarui utilizator (daca un singur utilizator il foloseste si provoaca accidental sa apara un alt container, nu conteaza din punct de vedere al costurilor, deoarece numai solicitarile de procesare implica taxe, nu numarul de containere active ).
  • Scurgerile de memorie din container va pot determina sa depasiti limita de 2 GB si sa blocati containerul dupa suficiente generatii de text. Din fericire, Cloud Run se poate recupera rapid (desi solicitarea actuala va esua), iar functionarea mai multor containere din cauza concurentei reduse poate distribui volumul de lucru.

Daca vrei mai multa putere

Daca va asteptati ca API-ul sa fie activ angajat 24/7, aveti nevoie de timpi de raspuns mai rapid si / sau doriti sa utilizati modelul 345M GPT-2, va recomandam sa folositi Cloud Run pe GKE (si sa atasati un GPU la noduri + utilizati o baza tensorflow-gpu pentru fisierul Docker) si cresteti concurenta pentru a maximiza eficienta costurilor.

In plus, daca intentionati sa creati o multime de API-uri GPT-2, va recomandam sa utilizati Cloud Build pentru a evita suprasolicitarea descarcarii / construirii / reincarcarii unui model. Am scris un scurt tutorial despre cum sa obtineti un model instruit cu Compute Engine construit folosind Cloud Build folosind specificatia cloudbuild.yaml inclusa.

Imbunatatiri viitoare

  • Adaugati / testati o imagine GPU

Vezi si

O abordare PyTorch pentru implementarea GPT-2 in Cloud Run

Intretinator / Creator

Max Woolf (@minimaxir)

Proiectele open-source ale lui Max sunt sustinute de Patreon. Daca vi s-a parut util acest proiect, orice contributie monetara la Patreon este apreciata si va fi folosita in mod creativ.

Licenta

MIT

Declinare de responsabilitate

Aceasta repo nu are nicio afiliere sau relatie cu OpenAI.