Rulați generarea de text cu modelele GPT și Bloom pe Amazon SageMaker JumpStart

În decembrie 2020, a anunțat AWS disponibilitatea generală a Amazon SageMaker JumpStart, o capacitate de Amazon SageMaker care vă ajută să începeți rapid și ușor cu învățarea automată (ML). JumpStart oferă o reglare fină și implementare cu un singur clic a unei game largi de modele pregătite în prealabil pentru sarcinile ML populare, precum și o selecție de soluții end-to-end care rezolvă problemele comune de afaceri. Aceste caracteristici îndepărtează sarcinile grele din fiecare pas al procesului ML, facilitând dezvoltarea modelelor de înaltă calitate și reducând timpul până la implementare.

Această postare este a patra dintr-o serie despre utilizarea JumpStart pentru anumite sarcini ML. În prima postare, am arătat cum să rulăm cazuri de utilizare pentru clasificarea imaginilor pe JumpStart. În al doilea post, am demonstrat cum să rulăm cazuri de utilizare pentru clasificarea textului. În a treia postare, am rulat cazuri de utilizare pentru segmentarea imaginii.

În această postare, oferim o prezentare pas cu pas a modului de implementare a modelelor de generare de text pregătite în prealabil. Explorăm două moduri de a obține același rezultat: prin interfața grafică JumpStart activată Amazon SageMaker Studio, și programatic prin API-uri JumpStart.

Dacă doriți să intrați direct în codul JumpStart API pe care îl parcurgem în această postare, puteți consulta următorul exemplu de blocnotes Jupyter: Introducere în JumpStart – Generare de text.

Prezentare generală JumpStart

JumpStart vă ajută să începeți cu modelele ML pentru o varietate de sarcini fără a scrie o singură linie de cod. În prezent, JumpStart vă permite să faceți următoarele:

  • Implementați modele pre-instruite pentru sarcinile ML obișnuite – JumpStart vă permite să abordați sarcinile ML obișnuite fără efort de dezvoltare, oferind o implementare ușoară a modelelor pregătite în prealabil pe seturi de date mari, disponibile public. Comunitatea de cercetare ML a depus un efort mare pentru ca majoritatea modelelor dezvoltate recent să fie disponibile public pentru utilizare. JumpStart găzduiește o colecție de peste 300 de modele, care acoperă cele mai populare 15 sarcini ML, cum ar fi detectarea obiectelor, clasificarea textului și generarea de text, făcându-le ușor de utilizat pentru începători. Aceste modele sunt extrase din hub-uri de model populare, cum ar fi TensorFlow, PyTorch, Hugging Face și MXNet.
  • Ajustați modelele pre-antrenate – JumpStart vă permite să reglați modelele pre-antrenate fără a fi nevoie să scrieți propriul algoritm de antrenament. În ML, se numește capacitatea de a transfera cunoștințele învățate într-un domeniu într-un alt domeniu transfer de învățare. Puteți utiliza învățarea prin transfer pentru a produce modele precise pe seturile dvs. de date mai mici, cu costuri de instruire mult mai mici decât cele implicate în formarea modelului original. JumpStart include, de asemenea, algoritmi de antrenament populari bazați pe LightGBM, CatBoost, XGBoost și Scikit-learn, pe care îi puteți antrena de la zero pentru regresie și clasificare tabelară.
  • Utilizați soluții prefabricate – JumpStart oferă un set de 17 soluții pentru cazuri de utilizare obișnuite ML, cum ar fi prognoza cererii și aplicații industriale și financiare, pe care le puteți implementa cu doar câteva clicuri. Soluțiile sunt aplicații ML end-to-end care îmbină diverse servicii AWS pentru a rezolva un anumit caz de utilizare în afaceri. Ei folosesc Formarea AWS Cloud șabloane și arhitecturi de referință pentru implementare rapidă, ceea ce înseamnă că sunt complet personalizabile.
  • Consultați exemple de notebook pentru algoritmii SageMaker – SageMaker oferă o suită de algoritmi încorporați pentru a ajuta oamenii de știință de date și practicienii ML să înceapă cu instruirea și implementarea rapidă a modelelor ML. JumpStart oferă exemple de notebook-uri pe care le puteți folosi pentru a utiliza rapid acești algoritmi.
  • Examinați videoclipuri de antrenament și bloguri – JumpStart oferă, de asemenea, numeroase postări pe blog și videoclipuri care vă învață cum să utilizați diferite funcționalități în SageMaker.

JumpStart acceptă setări personalizate VPC și AWS Service Management Service (AWS KMS), chei de criptare, astfel încât să puteți utiliza modelele și soluțiile disponibile în siguranță în mediul dvs. de întreprindere. Puteți transmite setările de securitate la JumpStart din Studio sau prin intermediul SDK-ului SageMaker Python.

Generare text, GPT-2 și Bloom

Generarea textului este sarcina de a genera text care este fluent și care nu pare să se distingă de textul scris de om. Este cunoscut și ca generarea limbajului natural.

GPT-2 este un model popular de generare de text bazat pe transformator. Este pregătit în prealabil pe un corp mare de text în limba engleză brută, fără etichetare umană. Este antrenat pentru sarcina în care, având în vedere o secvență parțială (propoziție sau bucată de text), modelul trebuie să prezică următorul cuvânt sau simbolul din secvență.

Bloom este, de asemenea, un model de generare de text bazat pe transformator și antrenat în mod similar cu GPT-2. Cu toate acestea, Bloom este pre-antrenat pe 46 de limbi diferite și 13 limbaje de programare. Următorul este un exemplu de rulare a generării de text cu modelul Bloom:

Input: "Some people like dogs, some people like cats"
Output: "Some people like dogs, some people like cats some people like birds, some people like fish,"

Prezentare generală a soluțiilor

Următoarele secțiuni oferă o demonstrație pas cu pas pentru a efectua inferențe, atât prin interfața de utilizare Studio, cât și prin API-urile JumpStart. Parcurgem următorii pași:

  1. Accesați JumpStart prin interfața de utilizare Studio pentru a implementa și a rula inferențe pe modelul pre-antrenat.
  2. Utilizați JumpStart în mod programatic cu SageMaker Python SDK pentru a implementa modelul pre-antrenat și pentru a rula inferența.

Accesați JumpStart prin interfața de utilizare Studio și executați inferențe cu un model pre-antrenat

În această secțiune, demonstrăm cum să antrenăm și să implementăm modele JumpStart prin interfața de utilizare Studio.

Următorul videoclip vă arată cum să găsiți un model de generare de text pre-antrenat pe JumpStart și să îl implementați. Pagina modelului conține informații valoroase despre model și despre modul de utilizare. Puteți implementa oricare dintre modelele pre-antrenate disponibile în JumpStart. Pentru inferență, alegem tipul de instanță ml.p3.2xlarge, deoarece oferă accelerația GPU necesară pentru o latență scăzută a inferenței la un preț scăzut. După ce configurați instanța de găzduire SageMaker, alegeți Lansa. Poate dura 20-25 minute până când punctul final persistent este activ și funcțional.

Odată ce punctul final este operațional, este gata să răspundă la solicitările de inferență!

Pentru a vă accelera timpul de inferență, JumpStart oferă un exemplu de blocnotes care vă arată cum să rulați inferența pe punctul final proaspăt implementat. Alege Deschide Notebook în Utilizați Endpoint din Studio.

Utilizați JumpStart în mod programatic cu SDK-ul SageMaker

În secțiunea precedentă, am arătat cum puteți utiliza interfața de utilizare JumpStart pentru a implementa un model pre-antrenat în mod interactiv, în doar câteva clicuri. Cu toate acestea, puteți utiliza modelele JumpStart și în mod programatic, folosind API-uri care sunt integrate în SDK-ul SageMaker.

În această secțiune, trecem peste un exemplu rapid despre cum puteți replica procesul precedent cu SDK-ul SageMaker. Alegem un model pre-antrenat adecvat în JumpStart, implementăm acest model într-un punct final SageMaker și rulăm inferența asupra punctului final implementat. Toți pașii din această demonstrație sunt disponibili în blocnotesul însoțitor Introducere în JumpStart – Generare de text.

Implementați modelul pre-antrenat

SageMaker este o platformă care folosește pe scară largă containerele Docker pentru sarcini de build și runtime. JumpStart folosește cadrul disponibil specific Containere de învățare profundă SageMaker (DLC-uri). Preluăm mai întâi orice pachete suplimentare, precum și scripturi pentru a gestiona instruirea și inferența pentru sarcina selectată. În cele din urmă, artefactele modelului pre-antrenate sunt preluate separat model_uris, care oferă flexibilitate platformei. Puteți utiliza orice număr de modele pre-antrenate pentru aceeași sarcină cu un singur script de inferență. Vezi următorul cod:

model_id, model_version = "huggingface-textgeneration-bloom-560m", "*"

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve(
    region=None,
    framework=None,  # automatically inferred from model_id
    image_scope="inference",
    model_id=model_id,
    model_version=model_version,
    instance_type=inference_instance_type,
)

# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="inference")

base_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="inference")

Bloom este un model foarte mare și poate dura până la 20-25 de minute pentru a fi implementat. De asemenea, puteți utiliza un model mai mic, cum ar fi GPT-2. Pentru a implementa un model GPT-2 pre-antrenat, puteți seta model_id = huggingface-textgeneration-gpt2. Pentru o listă cu alte modele disponibile în JumpStart, consultați Tabelul modelului disponibil JumpStart.

În continuare, alimentăm resursele într-un Modelul SageMaker instanță și implementați un punct final:

# Create the SageMaker model instance
model = Model(
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    model_data=base_model_uri,
    entry_point="inference.py",  # entry point file in source_dir and present in deploy_source_uri
    role=aws_role,
    predictor_cls=Predictor,
    name=endpoint_name,
)

# deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class,
# for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    predictor_cls=Predictor,
    endpoint_name=endpoint_name,
)

După ce modelul nostru este implementat, putem obține predicții din acesta în timp real!

Executați inferența

Următorul fragment de cod vă oferă o imagine a cum arată ieșirile. Pentru a trimite cereri către un model implementat, textul de intrare trebuie să fie furnizat într-un utf-8 format codificat.

def query(model_predictor, text):
    """Query the model predictor."""

    encoded_text = json.dumps(text).encode("utf-8")

    query_response = model_predictor.predict(
        encoded_text,
        {
            "ContentType": "application/x-text",
            "Accept": "application/json",
        },
    )
    return query_response

Răspunsul punctului final este un obiect JSON care conține textul de intrare urmat de textul generat:

def parse_response(query_response):
    """Parse response and return the generated text."""

    model_predictions = json.loads(query_response)
    generated_text = model_predictions["generated_text"]
    return generated_text
    
text = "Some people like dogs, some people like cats"
query_response = query(model_predictor, text)
parse_response(query_response)

Rezultatul nostru este după cum urmează:

"Some people like dogs, some people like cats some people like birds, some people like fish,"

Concluzie

În această postare, am arătat cum să implementăm un model de generare de text pre-antrenat folosind JumpStart. Puteți realiza acest lucru fără a fi nevoie să scrieți cod. Încercați singur soluția și trimiteți-ne comentariile dvs. Pentru a afla mai multe despre JumpStart și despre cum puteți utiliza modele open-source pre-antrenate pentru o varietate de alte sarcini ML, consultați următoarele Videoclipul AWS re:Invent 2020.


Despre Autori

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Vivek Madan este un om de știință aplicat în echipa Amazon SageMaker JumpStart. Și-a luat doctoratul la Universitatea din Illinois la Urbana-Champaign și a fost cercetător post-doctoral la Georgia Tech. Este un cercetător activ în învățarea automată și proiectarea algoritmilor și a publicat lucrări în cadrul conferințelor EMNLP, ICLR, COLT, FOCS și SODA.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Santosh Kulkarni este arhitect de soluții pentru întreprinderi la Amazon Web Services care lucrează cu clienți de sport din Australia. Este pasionat de construirea de aplicații distribuite la scară largă pentru a rezolva problemele de afaceri folosind cunoștințele sale în AI/ML, big data și dezvoltarea de software.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan este un om de știință senior aplicat cu algoritmi încorporați Amazon SageMaker și ajută la dezvoltarea algoritmilor de învățare automată. Și-a luat doctoratul la Universitatea din Illinois Urbana Champaign. Este un cercetător activ în învățarea automată și inferența statistică și a publicat multe lucrări în conferințele NeurIPS, ICML, ICLR, JMLR, ACL și EMNLP.

Timestamp-ul:

Mai mult de la Învățare automată AWS