Käivitage teksti genereerimine GPT ja Bloomi mudelitega rakenduses Amazon SageMaker JumpStart

Detsembris 2020, AWS teatas - üldine kättesaadavus Amazon SageMaker JumpStart, võime Amazon SageMaker mis aitab teil masinõppega (ML) kiiresti ja lihtsalt alustada. JumpStart pakub ühe klõpsuga peenhäälestamist ja paljude eelkoolitatud mudelite juurutamist populaarsete ML-ülesannete jaoks, samuti valikut täislahendusi, mis lahendavad levinud äriprobleeme. Need funktsioonid eemaldavad ML-protsessi iga etapi raskused, muutes kvaliteetsete mudelite väljatöötamise lihtsamaks ja lühendades kasutuselevõtuks kuluvat aega.

See postitus on neljas seeriast, mis käsitleb JumpStarti kasutamist konkreetsete ML-ülesannete jaoks. Aastal esimene postitusNäitasime, kuidas JumpStartis piltide klassifitseerimise kasutusjuhtumeid käivitada. Aastal teine ​​postitus, näitasime, kuidas käivitada teksti klassifitseerimise kasutusjuhtumeid. Aastal kolmas postitus, käitasime piltide segmenteerimise kasutusjuhtumeid.

Selles postituses anname samm-sammult ülevaate, kuidas juurutada eelkoolitatud teksti genereerimise mudeleid. Uurime kahte võimalust sama tulemuse saamiseks: JumpStarti graafilise liidese kaudu Amazon SageMaker Studio, ja programmiliselt läbi KiirStardi API-d.

Kui soovite hüpata otse JumpStart API koodi, mida me selles postituses läbime, võite vaadata järgmist Jupyteri märkmiku näidist: KiirStardi sissejuhatus – teksti genereerimine.

KiirStardi ülevaade

KiirStart aitab teil alustada ML-mudelitega mitmesuguste ülesannete jaoks ilma ühtki koodirida kirjutamata. Praegu võimaldab JumpStart teha järgmist:

  • Kasutage tavaliste ML-ülesannete jaoks eelkoolitatud mudeleid – JumpStart võimaldab teil tegeleda levinumate ML-ülesannetega ilma arendustegevuseta, pakkudes suurte, avalikult kättesaadavate andmekogumite jaoks eelkoolitatud mudelite hõlpsat juurutamist. ML-i teadlaskond on teinud palju pingutusi, et muuta enamik hiljuti välja töötatud mudeleid kasutamiseks avalikult kättesaadavaks. JumpStart majutab enam kui 300 mudelit, mis hõlmab 15 kõige populaarsemat ML-ülesannet, nagu objektide tuvastamine, teksti klassifitseerimine ja teksti genereerimine, muutes algajatele nende kasutamise lihtsaks. Need mudelid on pärit populaarsetest mudelikeskustest, nagu TensorFlow, PyTorch, Hugging Face ja MXNet.
  • Eelkoolitatud mudelite peenhäälestus - JumpStart võimaldab teil eelkoolitatud mudeleid peenhäälestada, ilma et peaksite oma treeningalgoritmi kirjutama. ML-is nimetatakse võimalust ühest valdkonnast õpitud teadmisi teise valdkonda üle kanda ülekandmisõpe. Saate kasutada ülekandeõpet, et luua oma väiksematele andmekogumitele täpseid mudeleid, mille koolituskulud on palju väiksemad kui algse mudeli väljaõppega seotud omad. JumpStart sisaldab ka populaarseid LightGBM-il, CatBoostil, XGBoostil ja Scikit-learnil põhinevaid treeningalgoritme, mida saate nullist treenida tabeli regressiooni ja klassifitseerimise jaoks.
  • Kasutage valmislahendusi – JumpStart pakub 17 lahendust tavalisteks ML kasutusjuhtudeks, nagu nõudluse prognoosimine ning tööstus- ja finantsrakendused, mille saate juurutada vaid mõne klõpsuga. Lahendused on täielikud ML-rakendused, mis ühendavad erinevaid AWS-teenuseid konkreetse ärilise kasutusjuhtumi lahendamiseks. Nad kasutavad AWS CloudFormation malle ja viitearhitektuure kiireks juurutamiseks, mis tähendab, et neid saab täielikult kohandada.
  • SageMakeri algoritmide kohta vaadake sülearvuti näiteid – SageMaker pakub komplekti sisseehitatud algoritme, mis aitavad andmeteadlastel ja ML-i praktikutel ML-mudelite koolitamist ja juurutamist kiiresti alustada. JumpStart pakub näidismärkmikke, mida saate nende algoritmide kiireks kasutamiseks kasutada.
  • Vaadake üle koolitusvideod ja blogid – JumpStart pakub ka arvukalt ajaveebipostitusi ja videoid, mis õpetavad kasutama SageMakeri erinevaid funktsioone.

KiirStart aktsepteerib kohandatud VPC sätteid ja AWS-i võtmehaldusteenus (AWS KMS) krüpteerimisvõtmed, et saaksite saadaolevaid mudeleid ja lahendusi turvaliselt oma ettevõtte keskkonnas kasutada. Saate edastada oma turvasätted JumpStartile Studios või SageMaker Python SDK kaudu.

Teksti genereerimine, GPT-2 ja Bloom

Teksti genereerimine on ülesanne luua tekst, mis on ladus ja tundub inimese kirjutatud tekstist eristamatu. Seda tuntakse ka kui loomuliku keele genereerimine.

GPT-2 on populaarne trafopõhine teksti genereerimise mudel. See on eelkoolitatud suurele ingliskeelsele toortekstile, millel pole inimlikke silte. See on koolitatud ülesande jaoks, kus osalise jada (lause või tekstiosa) korral peab mudel ennustama jada järgmise sõna või märgi.

Bloom on ka trafopõhine tekstigenereerimismudel ja koolitatud sarnaselt GPT-2-ga. Bloom on aga eelkoolitatud 46 erinevas keeles ja 13 programmeerimiskeeles. Järgmine on näide teksti genereerimisest Bloomi mudeliga:

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,"

Lahenduse ülevaade

Järgmised jaotised pakuvad samm-sammult demo järelduste tegemiseks nii Studio kasutajaliidese kui ka JumpStart API-de kaudu. Läbime järgmised sammud:

  1. JumpStartile pääsete juurde Studio kasutajaliidese kaudu, et juurutada ja eelkoolitatud mudeli põhjal järeldusi teha.
  2. Kasutage eelkoolitatud mudeli juurutamiseks ja järelduste tegemiseks programmiliselt JumpStarti koos SageMaker Python SDK-ga.

JumpStartile pääsete juurde Studio kasutajaliidese kaudu ja tehke eelkoolitatud mudeli abil järeldusi

Selles jaotises näitame, kuidas treenida ja juurutada JumpStart mudeleid Studio kasutajaliidese kaudu.

Järgmine video näitab, kuidas leida JumpStartis eelkoolitatud teksti genereerimise mudel ja see kasutusele võtta. Mudelileht sisaldab väärtuslikku teavet mudeli ja selle kasutamise kohta. Saate juurutada kõiki JumpStartis saadaolevaid eelkoolitatud mudeleid. Järelduste tegemiseks valime eksemplari tüübi ml.p3.2xlarge, kuna see tagab madala hinnapunkti juures madala järelduste latentsuse jaoks vajaliku GPU kiirenduse. Pärast SageMakeri hostieksemplari konfigureerimist valige juurutada. Võib kuluda 20–25 minutit, kuni teie püsiv lõpp-punkt on valmis.

Kui teie lõpp-punkt töötab, on see valmis järeldustaotlustele vastama!

Järelduste tegemiseks kuluva aja kiirendamiseks pakub JumpStart näidismärkmiku, mis näitab, kuidas värskelt juurutatud lõpp-punktist järeldusi teha. Vali Avage märkmik all Kasutage Studio Endpointi.

Kasutage KiirStarti programmiliselt koos SageMaker SDK-ga

Eelmises jaotises näitasime, kuidas saate JumpStart kasutajaliidest kasutada eelkoolitatud mudeli interaktiivseks juurutamiseks mõne klõpsuga. Siiski saate JumpStarti mudeleid kasutada ka programmiliselt, kasutades API-sid, mis on integreeritud SageMakeri SDK-sse.

Selles jaotises käsitleme kiiret näidet selle kohta, kuidas saate eelmist protsessi SageMakeri SDK-ga kopeerida. Valime JumpStartis sobiva eelkoolitatud mudeli, juurutame selle mudeli SageMakeri lõpp-punkti ja teeme juurutatud lõpp-punkti kohta järelduse. Kõik selle demo etapid on saadaval kaasasolevas märkmikus KiirStardi sissejuhatus – teksti genereerimine.

Rakendage eelkoolitatud mudel

SageMaker on platvorm, mis kasutab Dockeri konteinereid laialdaselt ehitamiseks ja käitustöödeks. KiirStart kasutab saadaolevat raamistikupõhist SageMakeri süvaõppekonteinerid (DLC-d). Esmalt hangime kõik lisapaketid, samuti skriptid, et käsitleda valitud ülesande koolitust ja järeldusi. Lõpuks tuuakse eelkoolitatud mudeliartefaktid eraldi model_uris, mis pakub platvormile paindlikkust. Saate ühe järeldusskriptiga kasutada mis tahes arvu mudeleid, mis on sama ülesande jaoks eelnevalt koolitatud. Vaadake järgmist koodi:

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 on väga suur mudel ja selle kasutuselevõtt võib võtta kuni 20–25 minutit. Võite kasutada ka väiksemat mudelit, näiteks GPT-2. Eelkoolitatud GPT-2 mudeli juurutamiseks saate määrata model_id = huggingface-textgeneration-gpt2. Muude JumpStartis saadaolevate mudelite loendi leiate jaotisest KiirStart Saadaolevate mudelite tabel.

Järgmisena söötame ressursid a SageMakeri mudel eksemplar ja juurutage lõpp-punkt:

# 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,
)

Pärast mudeli kasutuselevõttu saame sellest reaalajas prognoose saada!

Käivitage järeldus

Järgmine koodilõik annab teile ülevaate sellest, kuidas väljundid välja näevad. Päringute saatmiseks juurutatud mudelile tuleb sisestada sisendtekst a utf-8 kodeeritud vormingus.

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

Lõpp-punkti vastus on JSON-objekt, mis sisaldab sisendteksti, millele järgneb loodud tekst:

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)

Meie väljund on järgmine:

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

Järeldus

Selles postituses näitasime, kuidas JumpStarti abil juurutada eelkoolitatud teksti genereerimise mudelit. Saate seda teha ilma koodi kirjutamata. Proovige lahendust ise ja saatke meile oma kommentaarid. JumpStarti kohta lisateabe saamiseks ja selle kohta, kuidas kasutada avatud lähtekoodiga eelkoolitatud mudeleid mitmesuguste muude ML-ülesannete jaoks, vaadake järgmist AWS re:Invent 2020 video.


Autoritest

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr Vivek Madan on Amazon SageMaker JumpStart meeskonna rakendusteadlane. Ta sai doktorikraadi Illinoisi ülikoolist Urbana-Champaignis ja oli Georgia Techi järeldoktor. Ta on aktiivne masinõppe ja algoritmide kujundamise uurija ning avaldanud ettekandeid EMNLP, ICLR, COLT, FOCS ja SODA konverentsidel.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Santosh Kulkarni on ettevõtte Amazon Web Services Enterprise Solutionsi arhitekt, kes töötab spordiklientidega Austraalias. Ta on kirglik suuremahuliste hajutatud rakenduste loomise vastu, et lahendada äriprobleeme, kasutades oma teadmisi tehisintellekti/ML-i, suurandmete ja tarkvaraarenduse vallas.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr Ashish Khetan on vanemrakendusteadlane, kellel on Amazon SageMaker sisseehitatud algoritmid ja aitab välja töötada masinõppe algoritme. Ta sai doktorikraadi Illinoisi ülikoolist Urbana Champaign. Ta on aktiivne masinõppe ja statistiliste järelduste uurija ning avaldanud palju artikleid NeurIPS-i, ICML-i, ICLR-i, JMLR-i, ACL-i ja EMNLP-konverentsidel.

Ajatempel:

Veel alates AWS-i masinõpe