Zaženite generiranje besedila z modeli GPT in Bloom na Amazon SageMaker JumpStart

Decembra 2020 je dr. AWS napovedal splošna razpoložljivost Amazon SageMaker JumpStart, zmožnost Amazon SageMaker ki vam pomaga hitro in enostavno začeti s strojnim učenjem (ML). JumpStart zagotavlja fino nastavitev in uvajanje široke palete vnaprej usposobljenih modelov v priljubljenih nalogah ML z enim klikom, kot tudi izbor celovitih rešitev, ki rešujejo pogoste poslovne težave. Te funkcije odpravljajo težko delo pri vsakem koraku procesa ML, kar olajša razvoj visokokakovostnih modelov in skrajša čas do uvajanja.

Ta objava je četrta v seriji o uporabi JumpStart za posebne naloge ML. V prva objava, smo pokazali, kako zagnati primere uporabe klasifikacije slik na JumpStartu. V druga objava, smo pokazali, kako izvajati primere uporabe klasifikacije besedila. V tretja objavasmo izvedli primere uporabe segmentacije slike.

V tem prispevku ponujamo korak za korakom navodila za uvajanje vnaprej usposobljenih modelov za generiranje besedila. Raziskujemo dva načina za pridobitev enakega rezultata: prek grafičnega vmesnika JumpStart na Amazon SageMaker Studio, in programsko prek API-ji JumpStart.

Če želite skočiti naravnost v kodo JumpStart API, ki jo obravnavamo v tej objavi, si lahko ogledate naslednji vzorec zvezka Jupyter: Uvod v JumpStart – generiranje besedila.

JumpStart pregled

JumpStart vam pomaga začeti z modeli ML za različne naloge, ne da bi napisali eno vrstico kode. Trenutno vam JumpStart omogoča naslednje:

  • Razmestite vnaprej usposobljene modele za pogoste naloge ML – JumpStart vam omogoča, da obravnavate običajne naloge ML brez razvojnih naporov, saj zagotavlja enostavno uvajanje modelov, ki so bili predhodno usposobljeni na velikih, javno dostopnih nizih podatkov. Raziskovalna skupnost ML je vložila veliko truda v to, da je večina nedavno razvitih modelov postala javno dostopna za uporabo. JumpStart gosti zbirko več kot 300 modelov, ki obsegajo 15 najbolj priljubljenih nalog ML, kot so zaznavanje predmetov, klasifikacija besedila in generiranje besedila, kar začetnikom olajša njihovo uporabo. Ti modeli so vzeti iz priljubljenih središč modelov, kot so TensorFlow, PyTorch, Hugging Face in MXNet.
  • Natančno prilagodite vnaprej usposobljene modele – JumpStart vam omogoča natančno nastavitev vnaprej pripravljenih modelov, ne da bi vam bilo treba napisati lasten algoritem za usposabljanje. V ML se imenuje sposobnost prenosa znanja, pridobljenega na enem področju, na drugo področje transferno učenje. Učenje prenosa lahko uporabite za izdelavo natančnih modelov na vaših manjših naborih podatkov z veliko nižjimi stroški usposabljanja kot stroški usposabljanja izvirnega modela. JumpStart vključuje tudi priljubljene algoritme za usposabljanje, ki temeljijo na LightGBM, CatBoost, XGBoost in Scikit-learn, ki jih lahko trenirate od začetka za tabelarično regresijo in klasifikacijo.
  • Uporabite vnaprej izdelane rešitve – JumpStart ponuja nabor 17 rešitev za pogoste primere uporabe ML, kot so napovedovanje povpraševanja ter industrijske in finančne aplikacije, ki jih lahko uvedete z le nekaj kliki. Rešitve so aplikacije ML od konca do konca, ki združujejo različne storitve AWS za rešitev določenega primera poslovne uporabe. Uporabljajo Oblikovanje oblaka AWS predloge in referenčne arhitekture za hitro uvajanje, kar pomeni, da so popolnoma prilagodljivi.
  • Glejte primere zvezkov za algoritme SageMaker – SageMaker ponuja nabor vgrajenih algoritmov za pomoč podatkovnim znanstvenikom in izvajalcem ML, da hitro začnejo z usposabljanjem in uvajanjem modelov ML. JumpStart ponuja vzorčne zvezke, ki jih lahko uporabite za hitro uporabo teh algoritmov.
  • Preglejte video posnetke in bloge za usposabljanje – JumpStart ponuja tudi številne objave v spletnem dnevniku in videoposnetke, ki vas učijo, kako uporabljati različne funkcije znotraj SageMakerja.

JumpStart sprejema nastavitve VPC po meri in AWS Service Key Management (AWS KMS) šifrirne ključe, tako da lahko varno uporabljate razpoložljive modele in rešitve v okolju vašega podjetja. Svoje varnostne nastavitve lahko posredujete JumpStartu v Studiu ali prek SDK-ja SageMaker Python.

Generiranje besedila, GPT-2 in Bloom

Generiranje besedila je naloga ustvarjanja besedila, ki je tekoče in se zdi neločljivo od besedila, ki ga je napisal človek. Znan je tudi kot ustvarjanje naravnega jezika.

GPT-2 je priljubljen model generiranja besedila na osnovi transformatorja. Vnaprej je naučeno na velikem korpusu neobdelanega angleškega besedila brez človeškega označevanja. Usposablja se za nalogo, kjer mora model glede na delno zaporedje (stavek ali del besedila) predvideti naslednjo besedo ali žeton v zaporedju.

Bloom je tudi model za generiranje besedila, ki temelji na transformatorju in je usposobljen podobno kot GPT-2. Vendar je Bloom vnaprej usposobljen za 46 različnih jezikov in 13 programskih jezikov. Sledi primer izvajanja generiranja besedila z modelom 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,"

Pregled rešitev

Naslednji razdelki nudijo predstavitev po korakih za izvajanje sklepanja prek uporabniškega vmesnika Studio in prek API-jev JumpStart. Sprehodimo se skozi naslednje korake:

  1. Dostopajte do JumpStart prek uporabniškega vmesnika Studio za uvajanje in izvajanje sklepanja na predhodno usposobljenem modelu.
  2. Uporabite JumpStart programsko s SDK SageMaker Python za uvedbo vnaprej usposobljenega modela in izvajanje sklepanja.

Do JumpStart dostopajte prek uporabniškega vmesnika Studio in zaženite sklepanje s predhodno usposobljenim modelom

V tem razdelku prikazujemo, kako učiti in uvajati modele JumpStart prek uporabniškega vmesnika Studio.

Naslednji videoposnetek vam prikazuje, kako poiskati vnaprej usposobljen model za generiranje besedila na JumpStart in ga namestiti. Stran z modelom vsebuje dragocene informacije o modelu in o tem, kako ga uporabljati. Uporabite lahko katerega koli od predhodno usposobljenih modelov, ki so na voljo v JumpStartu. Za sklepanje izberemo vrsto primerka ml.p3.2xlarge, ker zagotavlja pospešek GPU, potreben za nizko zakasnitev sklepanja po nizki ceni. Ko konfigurirate primerek gostovanja SageMaker, izberite uvajanje. Traja lahko od 20 do 25 minut, dokler vaša vztrajna končna točka ne začne delovati.

Ko vaša končna točka začne delovati, je pripravljena odgovoriti na zahteve po sklepanju!

Da bi pospešili vaš čas za sklepanje, JumpStart ponuja vzorčni zvezek, ki vam pokaže, kako zagnati sklepanje na vaši sveže razporejeni končni točki. Izberite Odprite Beležnico pod Uporabite Endpoint iz Studia.

Uporabite JumpStart programsko s SDK SageMaker

V prejšnjem razdelku smo pokazali, kako lahko uporabite uporabniški vmesnik JumpStart za interaktivno uvajanje vnaprej usposobljenega modela v nekaj klikih. Vendar pa lahko JumpStartove modele uporabljate tudi programsko z uporabo API-jev, ki so integrirani v SDK SageMaker.

V tem razdelku si bomo ogledali hiter primer, kako lahko posnemate prejšnji postopek s SDK-jem SageMaker. Izberemo ustrezen vnaprej usposobljen model v JumpStartu, ta model razmestimo na končno točko SageMaker in izvedemo sklepanje na razporejeni končni točki. Vsi koraki v tej predstavitvi so na voljo v priloženem zvezku Uvod v JumpStart – generiranje besedila.

Razmestite vnaprej usposobljeni model

SageMaker je platforma, ki v veliki meri uporablja vsebnike Docker za opravila gradnje in izvajanja. JumpStart uporablja razpoložljivo specifično ogrodje Vsebniki za globoko učenje SageMaker (DLC-ji). Najprej pridobimo morebitne dodatne pakete, kot tudi skripte za izvajanje usposabljanja in sklepanja za izbrano nalogo. Na koncu se vnaprej pripravljeni artefakti modela pridobijo ločeno model_uris, ki platformi zagotavlja prilagodljivost. Uporabite lahko poljubno število vnaprej usposobljenih modelov za isto nalogo z enim sklepnim skriptom. Oglejte si naslednjo kodo:

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 je zelo velik model in lahko traja do 20–25 minut, da se namesti. Uporabite lahko tudi manjši model, kot je GPT-2. Če želite uvesti predhodno usposobljen model GPT-2, lahko nastavite model_id = huggingface-textgeneration-gpt2. Za seznam drugih razpoložljivih modelov v JumpStart glejte Tabela razpoložljivih modelov JumpStart.

Nato vire vnesemo v a Model SageMaker in uvesti končno točko:

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

Ko je naš model uveden, lahko iz njega pridobimo napovedi v realnem času!

Zaženi sklepanje

Naslednji delček kode vam daje vpogled v to, kako so videti rezultati. Če želite poslati zahteve razporejenemu modelu, morate vnesti besedilo v a utf-8 kodirani obliki.

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

Odziv končne točke je objekt JSON, ki vsebuje vhodno besedilo, ki mu sledi ustvarjeno besedilo:

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)

Naš rezultat je naslednji:

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

zaključek

V tem prispevku smo pokazali, kako z uporabo JumpStarta razmestiti predhodno usposobljen model za generiranje besedila. To lahko dosežete, ne da bi morali pisati kodo. Preizkusite rešitev sami in nam pošljite svoje komentarje. Če želite izvedeti več o JumpStart in o tem, kako lahko uporabite odprtokodne vnaprej usposobljene modele za vrsto drugih nalog ML, si oglejte naslednje Video AWS re:Invent 2020.


O avtorjih

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.dr. Vivek Madan je uporabni znanstvenik pri ekipi Amazon SageMaker JumpStart. Doktoriral je na Univerzi Illinois v Urbana-Champaign in bil podoktorski raziskovalec na Georgia Tech. Je aktiven raziskovalec strojnega učenja in oblikovanja algoritmov ter je objavil članke na konferencah EMNLP, ICLR, COLT, FOCS in SODA.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Santosh Kulkarni je arhitekt za podjetniške rešitve pri Amazon Web Services, ki dela s športnimi strankami v Avstraliji. Navdušen je nad gradnjo obsežnih porazdeljenih aplikacij za reševanje poslovnih problemov z uporabo svojega znanja o AI/ML, velikih podatkih in razvoju programske opreme.

Run text generation with GPT and Bloom models on Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan je višji aplikativni znanstvenik z vgrajenimi algoritmi Amazon SageMaker in pomaga pri razvoju algoritmov strojnega učenja. Doktoriral je na Univerzi Illinois Urbana Champaign. Je aktiven raziskovalec strojnega učenja in statističnega sklepanja ter je objavil veliko člankov na konferencah NeurIPS, ICML, ICLR, JMLR, ACL in EMNLP.

Časovni žig:

Več od Strojno učenje AWS