Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services

Tammikuussa 2024, Amazon Sage Maker julkaisi uuden version (0.26.0) Large Model Inference (LMI) Deep Learning Containers (DLC) -säilöistä. Tämä versio tarjoaa tuen uusille malleille (mukaan lukien Mixture of Experts), suorituskyvyn ja käytettävyyden parannuksia päättelytaustajärjestelmissä sekä uuden sukupolven yksityiskohtia, jotka parantavat hallintaa ja ennusteiden selitettävyyttä (kuten sukupolven valmistumisen syy ja merkkitason lokin todennäköisyydet).

LMI DLC:t tarjoavat matalan koodin käyttöliittymän, joka yksinkertaistaa huippuluokan päättelyn optimointitekniikoiden ja laitteiston käyttöä. LMI mahdollistaa tensorin rinnakkaisuuden soveltamisen; uusimmat tehokkaat huomio-, eräajo-, kvantisointi- ja muistinhallintatekniikat; token-suoratoisto; ja paljon muuta, vaatimalla vain mallitunnuksen ja valinnaiset malliparametrit. SageMakerin LMI-lisäosien avulla voit nopeuttaa arvon saavuttamista generatiivinen tekoäly (AI) sovelluksia, kuormittaa infrastruktuuriin liittyviä raskaita nostoja ja optimoida suuria kielimalleja (LLM) valitsemillesi laitteille saavuttaaksesi luokkansa parhaan hinta-suorituskyvyn.

Tässä viestissä tutkimme tässä julkaisussa esiteltyjä uusimpia ominaisuuksia, tarkastelemme suorituskyvyn vertailuarvoja ja annamme yksityiskohtaisen oppaan uusien LLM:ien käyttöönotosta korkean suorituskyvyn LMI DLC:illä.

Uusia ominaisuuksia LMI DLC:issä

Tässä osiossa keskustelemme uusista ominaisuuksista LMI-taustajärjestelmissä ja tarkastelemme joitakin muita, jotka ovat taustakohtaisia. LMI tukee tällä hetkellä seuraavia taustaohjelmia:

  • LMI-hajautettu kirjasto – Tämä on AWS-kehys OSS:n inspiroimien päätelmien tekemiseen LLM:iden kanssa parhaan mahdollisen viiveen ja tuloksen tarkkuuden saavuttamiseksi.
  • LMI vLLM – Tämä on muistitehokkaan AWS-taustatoteutus vLLM päätelmäkirjasto
  • LMI TensorRT-LLM työkalupakki – Tämä on AWS-taustatoteutus NVIDIA TensorRT-LLM, joka luo GPU-spesifisiä moottoreita suorituskyvyn optimoimiseksi eri GPU:illa
  • LMI DeepSpeed – Tämä on AWS-sovitus Syvä nopeus, joka lisää todellisen jatkuvan eräajon, SmoothQuant-kvantisoinnin ja mahdollisuuden säätää dynaamisesti muistia päättelyn aikana
  • LMI NeuronX – Voit käyttää tätä käyttöönottoon AWS Inferentia2 ja AWS Trainium-pohjaiset ilmentymät, joissa on todellista jatkuvaa eräajoa ja nopeutuksia AWS Neuron SDK

Seuraavassa taulukossa on yhteenveto äskettäin lisätyistä sekä yleisistä että taustakohtaisista ominaisuuksista.

Yleisiä taustaohjelmissa

          • Uudet tuetut mallit: Mistral7B, Mixtral, Llama2-70B (NeuronX)
          • RoPE-skaalaustuki pidempiin yhteyksiin
          • Lisätty sukupolven tiedot: sukupolven päättymissyy ja tunnustason lokin todennäköisyys
          • Palvelimen konfigurointiparametrien konsolidointi

Taustakohtainen

LMI-hajautettu

vLLM TensorRT-LLM

NeuronX

  • Lisätty ryhmittelyn tarkkuutta optimoituja GPU-ryhmiä varten
  • CUDA-kaaviot tukevat jopa 50 % suorituskyvyn parannusta
  • Hallitun JIT-kokoelman tuettuja uusia malleja
  • Tuki TensorRT-LLM:n alkuperäiselle SmoothQuant-kvantisoinnille
  • Ryhmitettyjen kyselyjen huomiotuki
  • Jatkuvat erän suorituskyvyn parannukset

Uusia malleja tuetaan

Uusia suosittuja malleja tuetaan kaikissa taustajärjestelmissä, kuten Mistral-7B (kaikki taustaohjelmat), MoE-pohjainen Mixtral (kaikki taustaohjelmat paitsi Transformers-NeuronX) ja Llama2-70B (Transformers-NeuronX).

Konteksti-ikkunan laajennustekniikat

Rotary Positional Embedding (RoPE) -pohjainen kontekstin skaalaus on nyt saatavilla LMI-Dist-, vLLM- ja TensorRT-LLM-taustajärjestelmissä. RoPE-skaalaus mahdollistaa mallin sekvenssin pituuden pidentämisen päättelyn aikana käytännössä mihin tahansa kokoon ilman hienosäätöä.

Seuraavassa on kaksi tärkeää seikkaa köyden käytössä:

  • Mallin hämmennys – Kun sarjan pituus kasvaa, niin voi mallin hämmennys. Tätä vaikutusta voidaan osittain kompensoida suorittamalla minimaalista hienosäätöä tulosekvensseille, jotka ovat suurempia kuin alkuperäisessä harjoituksessa käytetyt. Katso lisätietoja siitä, kuinka RoPE vaikuttaa mallin laatuun Köyden pidentäminen.
  • Päätelmän suorituskyky – Pidemmät sekvenssipituudet kuluttavat suuremman kiihdytin suuren kaistanleveyden muistia (HBM). Tämä lisääntynyt muistin käyttö voi vaikuttaa haitallisesti kiihdytin käsittelemien samanaikaisten pyyntöjen määrään.

Lisätty sukupolven tiedot

Saat nyt kaksi hienorakeista yksityiskohtaa sukupolvituloksista:

  • lopetussyy – Tämä antaa syyn sukupolven loppuun saattamiseen, joka voi olla suurimman sukupolven pituuden saavuttaminen, lauseen lopun (EOS) luominen tai käyttäjän määrittämän lopetustunnuksen luominen. Se palautetaan viimeisen suoratoistetun sekvenssin kanssa.
  • log_probs – Tämä palauttaa mallin määrittämän lokin todennäköisyyden kullekin suoratoistetun sekvenssiosan tunnukselle. Voit käyttää näitä karkeana arviona mallin luotettavuudesta laskemalla sekvenssin yhteisen todennäköisyyden log_probs yksittäisistä tokeneista, mikä voi olla hyödyllistä mallin tulosten pisteytyksen ja luokittelun kannalta. Muista, että LLM-merkkien todennäköisyydet ovat yleensä liian luotettavia ilman kalibrointia.

Voit ottaa sukupolven tulosten käyttöön lisäämällä LMI:n syöttöhyötykuormaan tiedot tiedot=True jättäen kaikki muut parametrit ennalleen:

payload = {“inputs”:“your prompt”,
“parameters”:{max_new_tokens”:256,...,“details”:True}
}

Konsolidoidut konfigurointiparametrit

Lopuksi myös LMI-konfiguraatioparametrit on konsolidoitu. Lisätietoja kaikista yleisistä ja taustaohjelmistokohtaisista käyttöönoton määritysparametreista on kohdassa Suuret mallin päättelyasetukset.

LMI-hajautettu taustaohjelma

AWS re:Invent 2023:ssa LMI-Dist lisäsi uusia, optimoituja yhteistoimintoja nopeuttaakseen GPU:iden välistä tiedonsiirtoa, mikä johti pienempään latenssiin ja korkeampaan suorituskykyyn malleissa, jotka ovat liian suuria yhdelle GPU:lle. Nämä ryhmät ovat saatavilla yksinomaan SageMakerille p4d-esiintymille.

Kun edellinen iteraatio tuki vain jakamista kaikissa kahdeksassa grafiikkasuorittimessa, LMI 8 ottaa käyttöön tuen tensorin rinnakkaisasteelle 0.26.0 osittaisessa all-to-all -mallissa. Tämä voidaan yhdistää SageMakerin päättelykomponentit, jonka avulla voit määrittää tarkasti, kuinka monta kiihdytintä tulee varata kullekin päätepisteen takana käyttöönotetulle mallille. Yhdessä nämä ominaisuudet mahdollistavat paremman taustalla olevan ilmentymän resurssien käytön hallinnan, jolloin voit lisätä mallien monivuokrausta isännöimällä eri malleja yhden päätepisteen takana tai hienosäätää käyttöönoton kokonaiskapasiteettia mallin ja liikenteen ominaisuuksien mukaan.

Seuraavassa kuvassa verrataan suoria all-to-all ja osittaista all-to-all-peliä.

Kaikki kaikille osittaisille kollektiiveille.

TensorRT-LLM taustaohjelma

NVIDIA:n TensorRT-LLM esiteltiin osana edellistä LMI DLC -julkaisua (0.25.0), joka mahdollistaa huippuluokan GPU-suorituskyvyn ja optimoinnit, kuten SmoothQuantin, FP8:n ja jatkuvan eräajon LLM:ille käytettäessä NVIDIA GPU:ia.

TensorRT-LLM edellyttää, että mallit on käännetty tehokkaiksi moottoreiksi ennen käyttöönottoa. LMI TensorRT-LLM DLC pystyy automaattisesti laatimaan luettelon tuetuista malleista juuri-in-time (JIT) ennen palvelimen käynnistämistä ja mallin lataamista reaaliaikaista päättelyä varten. DLC:n versio 0.26.0 laajentaa tuettujen mallien luetteloa JIT-käännöksiä varten ja esittelee Baichuan-, ChatGLM-, GPT2-, GPT-J-, InternLM-, Mistral-, Mixtral-, Qwen-, SantaCoder- ja StarCoder-mallit.

JIT-kääntäminen lisää useita minuutteja päätepisteiden valmisteluun ja skaalausaikaan, joten on aina suositeltavaa kääntää mallisi etukäteen. Katso opas tämän tekemiseen ja luettelo tuetuista malleista TensorRT-LLM mallien ennakko-oppitunti. Jos valitsemaasi mallia ei vielä tueta, katso TensorRT-LLM manuaalinen mallien opetusohjelma kääntääksesi minkä tahansa muun mallin, jota TensorRT-LLM tukee.

Lisäksi LMI paljastaa nyt alkuperäisen TensorRT-LLM SmootQuant -kvantisoinnin parametrein, joilla ohjataan alfaa ja skaalauskerrointa tunnuksen tai kanavan mukaan. Lisätietoja liittyvistä kokoonpanoista on kohdassa TensorRT-LLM.

vLLM-taustajärjestelmä

LMI DLC:hen sisältyvä vLLM:n päivitetty julkaisu sisältää jopa 50 % suorituskyvyn parannuksia, jotka perustuvat CUDA-kuvaajatilaan innokkaan tilan sijaan. CUDA-kaaviot nopeuttavat GPU-työkuormaa käynnistämällä useita GPU-toimintoja kerralla sen sijaan, että ne käynnistäisivät ne erikseen, mikä vähentää yleiskustannuksia. Tämä on erityisen tehokas pienille malleille, kun käytetään tensorin rinnakkaisuutta.

Lisätty suorituskyky tulee kompromissina lisätyn GPU-muistin kulutuksen kanssa. CUDA-kaaviotila on nyt oletuksena vLLM-taustajärjestelmässä, joten jos käytettävissä olevan GPU-muistin määrä on rajoitettu, voit option.enforce_eager=True pakottaaksesi PyTorchin innokkaan tilan.

Transformers-NeuronX taustaohjelma

Päivitetty julkaisu NeuronX LMI NeuronX DLC:hen sisältyvät mallit, kuten Mistral-7B ja LLama2-70B, sisältävät nyt ryhmäkyselyn huomiomekanismin. Ryhmitetty kyselyn huomio on tärkeä optimointi oletusmuuntajan huomiomekanismiin, jossa mallia opetetaan vähemmällä avain- ja arvopäillä kuin kyselypäillä. Tämä pienentää GPU-muistin KV-välimuistin kokoa, mikä mahdollistaa suuremman samanaikaisuuden ja parantaa hinta-suorituskykyä.

Seuraava kuva havainnollistaa usean pään, ryhmäkyselyn ja usean kyselyn huomiomenetelmiä (lähde).

Kaavio ryhmitellyn kyselyn huomiosta

Erilaisia ​​KV-välimuistin jakamisstrategioita on saatavana erityyppisiin työkuormiin sopiviksi. Lisätietoja jakostrategioista on kohdassa Ryhmitettyjen kyselyjen huomion (GQA) tuki. Voit ottaa käyttöön haluamasi strategian (shard-over-headsesimerkiksi) seuraavalla koodilla:

option.group_query_attention=shard-over-heads

Lisäksi NeuronX DLC:n uusi toteutus tuo TransformerNeuronX:n välimuistirajapinnan, joka mahdollistaa pääsyn KV-välimuistiin. Sen avulla voit lisätä ja poistaa KV-välimuistirivejä uusista pyynnöistä samalla, kun luovutat eräpäätelmiä. Ennen tämän API:n käyttöönottoa KV-välimuisti laskettiin uudelleen uusille lisätyille pyynnöille. Verrattuna LMI V7:ään (0.25.0), olemme parantaneet latenssia yli 33 % samanaikaisilla pyynnöillä ja tuemme paljon suurempaa suorituskykyä.

Oikean taustaohjelman valinta

Voit päättää, mitä taustajärjestelmää käytetään valitun mallin ja tehtävän perusteella, käyttämällä seuraavaa vuokaaviota. Katso yksittäiset taustakäyttöoppaat ja tuetut mallit LMI-taustajärjestelmän käyttöoppaat.

Päätöspuu päättää, mitä taustajärjestelmää käytetään

Ota Mixtral käyttöön LMI DLC:llä lisämääritteillä

Käydään läpi, kuinka voit ottaa käyttöön Mixtral-8x7B-mallin LMI 0.26.0 -säiliöllä ja luoda lisätietoja, kuten log_prob ja finish_reason osana tuotantoa. Keskustelemme myös siitä, kuinka voit hyötyä näistä lisäominaisuuksista sisällön luomisen käyttötapauksessa.

Täydellinen muistikirja yksityiskohtaisine ohjeineen on saatavilla osoitteessa GitHub repo.

Aloitamme tuomalla kirjastot ja määrittämällä istuntoympäristön:

import boto3
import sagemaker 
import json 
import io 
import numpy as np 
from sagemaker import Model, image_uris, serializers, deserializers 

role = sagemaker.get_execution_role() # execution role for the endpoint 
session = sagemaker.session.Session() # sagemaker session for interacting with different AWS APIs 
region = session._region_name # region name of the current SageMaker Studio environment

Voit käyttää SageMaker LMI -säilöjä mallien isännöimiseen ilman ylimääräistä päättelykoodia. Voit määrittää mallipalvelimen joko ympäristömuuttujien tai a serving.properties tiedosto. Vaihtoehtoisesti sinulla voi olla a model.py tiedosto esi- tai jälkikäsittelyä varten ja a requirements.txt tiedosto kaikista lisäpaketteista, jotka on asennettava.

Tässä tapauksessa käytämme serving.properties tiedosto määrittääksesi parametrit ja mukauttamalla LMI-säilön toimintaa. Katso lisätietoja osoitteesta GitHub repo. Repo selittää yksityiskohtaiset tiedot eri konfigurointiparametreista, jotka voit asettaa. Tarvitsemme seuraavat avainparametrit:

  • moottori – Määrittää DJL:n käytettävän ajonaikaisen moottorin. Tämä ohjaa sirpalointia ja mallin latausstrategiaa mallin kiihdyttimissä.
  • option.model_id – Määrittää Amazonin yksinkertainen tallennuspalvelu (Amazon S3) Valmiiksi koulutetun mallin URI tai mallin arkistoon isännöidyn esikoulutetun mallin mallitunnus Halaaminen kasvot. Tässä tapauksessa annamme mallin tunnuksen Mixtral-8x7B-mallille.
  • option.tensor_parallel_degree – Asettaa niiden GPU-laitteiden määrän, joihin Acceleraten on osioitava malli. Tämä parametri ohjaa myös työntekijöiden määrää mallia kohti, jotka käynnistetään, kun DJL-palvelu suoritetaan. Asetamme tähän arvoon max (maksimi GPU nykyisessä koneessa).
  • option.rolling_batch – Mahdollistaa jatkuvan annostelun kiihdyttimien käytön ja kokonaissuorituskyvyn optimoimiseksi. Käytämme TensorRT-LLM-säiliössä auto.
  • option.model_loading_timeout – Asettaa aikakatkaisuarvon mallin lataamiselle ja lataamiselle päätelmien suorittamiseksi.
  • option.max_rolling_batch – Asettaa jatkuvan erän enimmäiskoon ja määrittää, kuinka monta sekvenssiä voidaan käsitellä samanaikaisesti samanaikaisesti.
%%writefile serving.properties 
engine=MPI 
option.model_id=mistralai/Mixtral-8x7B-v0.1 
option.tensor_parallel_degree=max 
option.max_rolling_batch_size=32 
option.rolling_batch=auto 
option.model_loading_timeout = 7200

Pakkaamme serving.properties määritystiedosto tar.gz-muodossa, jotta se täyttää SageMaker-isännöintivaatimukset. Konfiguroimme DJL LMI -kontin tensorrtllm taustamoottorina. Lisäksi määritämme säilön uusimman version (0.26.0).

image_uri = image_uris.retrieve(
   framework="djl-tensorrtllm",
   region=sess.boto_session.region_name,
   version="0.26.0"
)

Seuraavaksi lataamme paikallisen tarball-tiedoston (sisältää serving.properties määritystiedosto) S3-etuliitteeksi. Käytämme DJL-säilön ja Amazon S3 -sijainnin kuva-URIa, johon artefakteja palveleva malli ladattiin, luodaksemme SageMaker-malliobjektin.

model = Model(image_uri=image_uri, model_data=code_artifact, role=role) 

instance_type = "ml.p4d.24xlarge" 
endpoint_name = sagemaker.utils.name_from_base("mixtral-lmi-model") 

model.deploy(
   initial_instance_count=1,
   instance_type=instance_type,
   endpoint_name=endpoint_name,
   container_startup_health_check_timeout=1800
)

Osana LMI 0.26.0:aa voit nyt käyttää kahta hienorakeista lisätietoa luodusta lähdöstä:

  • log_probs – Tämä on mallin kullekin suoratoistetussa sekvenssikappaleessa olevalle tokenille määrittämä loki-todennäköisyys. Voit käyttää näitä karkeana arviona mallin luotettavuudesta laskemalla sekvenssin yhteisen todennäköisyyden yksittäisten merkkien logaritmistodennäköisyyksien summana, mikä voi olla hyödyllistä mallin tulosten pisteytyksen ja rankaisemisen kannalta. Muista, että LLM-merkkien todennäköisyydet ovat yleensä liian luotettavia ilman kalibrointia.
  • lopetussyy – Tämä on syy sukupolven valmistumiseen, mikä voi olla suurimman sukupolven pituuden saavuttaminen, EOS-tunnuksen luominen tai käyttäjän määrittämän lopetustunnuksen luominen. Tämä palautetaan viimeisen suoratoistetun sekvenssin kanssa.

Voit ottaa nämä käyttöön ohittamalla "details"=True osana panostasi malliin.

Katsotaanpa, kuinka voit luoda nämä tiedot. Käytämme sisällöntuotantoesimerkkiä ymmärtääksemme niiden sovelluksen.

Määritämme a LineIterator helper-luokka, jolla on toimintoja, jotka hakevat laiskasti tavuja vastausvirrasta, puskuroivat ne ja jakavat puskurin riveiksi. Ajatuksena on palvella tavuja puskurista samalla, kun haetaan lisää tavuja virrasta asynkronisesti.

class LineIterator:
    def __init__(self, stream):
        # Iterator to get bytes from stream 
        self.byte_iterator = iter(stream)  
        # Buffer stream bytes until we get a full line
        self.buffer = io.BytesIO()  
        # Track current reading position within buffer
        self.read_pos = 0

   def __iter__(self):
        # Make class iterable 
        return self

    def __next__(self):
        while True:
           # Seek read position within buffer
           self.buffer.seek(self.read_pos)  
           # Try reading a line from current position
           line = self.buffer.readline()
           # If we have a full line
           if line and line[-1] == ord('n'):
               # Increment reading position past this line
               self.read_pos += len(line)  
               # Return the line read without newline char
               return line[:-1] 
           # Fetch next chunk from stream  
           try:
               chunk = next(self.byte_iterator)
           # Handle end of stream 
           except StopIteration:
               # Check if we have any bytes still unread
               if self.read_pos < self.buffer.getbuffer().nbytes:
                   continue
               # If not, raise StopIteration
               raise
           # Add fetched bytes to end of buffer
           self.buffer.seek(0, io.SEEK_END)  
           self.buffer.write(chunk['PayloadPart']['Bytes'])

Luo ja käytä token-todennäköisyyttä lisätietona

Harkitse käyttötapausta, jossa luomme sisältöä. Erityisesti meidän tehtävämme on kirjoittaa lyhyt kappale säännöllisen harjoittelun eduista elämäntapapainotteiselle verkkosivustolle. Haluamme tuottaa sisältöä ja tulostaa jonkin verran suuntaa antavaa pistemäärää mallin luotettavuudesta luotuun sisältöön.

Kutsumme mallin päätepistettä kehotteellamme ja tallennamme luodun vastauksen. Asetamme "details": True ajonaikaisena parametrina mallin syötössä. Koska lokin todennäköisyys luodaan jokaiselle lähtötunnisteelle, lisäämme yksittäiset lokitodennäköisyydet luetteloon. Kaappaamme vastauksesta myös koko luodun tekstin.

sm_client = boto3.client("sagemaker-runtime")

# Set details: True as a runtime parameter within the input.
body = {"inputs": prompt, "parameters": {"max_new_tokens":512, "details": True}}
resp = sm_client.invoke_endpoint_with_response_stream(EndpointName=endpoint_name, Body=json.dumps(body), ContentType="application/json")
event_stream = resp['Body']

overall_log_prob = []

for line in LineIterator(event_stream):
    resp = json.loads(line)
    if resp['token'].get('text') != None:
        token_log_prob = resp['token']['log_prob']
        overall_log_prob.append(token_log_prob)
    elif resp['generated_text'] != None:
        generated_text= resp['generated_text']

Yleisen luottamuspisteen laskemiseksi laskemme kaikkien yksittäisten merkkien todennäköisyyksien keskiarvon ja saamme sen jälkeen eksponentiaalisen arvon välillä 0 ja 1. Tämä on päätellyt kokonaisluottamuspisteemme luodulle tekstille, joka tässä tapauksessa on kappale hyödyistä säännöllisestä harjoituksesta.

print(generated_text) 
overall_score=np.exp(np.mean(overall_log_prob)) 
print(f"nnOverall confidence score in the generated text: {overall_score}")

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Tämä oli yksi esimerkki siitä, kuinka voit luoda ja käyttää log_prob, sisällön luomisen käyttötapauksen yhteydessä. Vastaavasti voit käyttää log_prob luokituksen käyttötapausten luottamuspisteiden mittana.

Vaihtoehtoisesti voit käyttää sitä yleiseen tulossarjaan tai lausetason pisteytykseen arvioidaksesi parametrien, kuten lämpötilan, vaikutusta luotuun tuotteeseen.

Luo ja käytä viimeistelyn syytä lisätietona

Jatketaan samaa käyttötapausta, mutta tällä kertaa meidän tehtävänä on kirjoittaa pidempi artikkeli. Lisäksi haluamme varmistaa, että tulostetta ei katkaista sukupolven pituusongelmien (maksimaalinen tunnuksen pituus) tai pysäytystunnusten havaitsemisen vuoksi.

Tämän saavuttamiseksi käytämme finish_reason attribuutti tuotteeseen, tarkkaile sen arvoa ja jatka luomista, kunnes koko tulos on luotu.

Määrittelemme päättelyfunktion, joka ottaa hyötykuorman syötteen ja kutsuu SageMaker-päätepisteen, suoratoistaa vastauksen ja käsittelee vastauksen poimiakseen luodun tekstin. Hyötykuorma sisältää kehotetekstin syötteinä ja parametreina, kuten maksimitunnukset ja yksityiskohdat. Vastaus luetaan virrassa ja käsitellään rivi riviltä luodun tekstitunnisteen poimimiseksi luetteloksi. Poimimme yksityiskohtia, kuten finish_reason. Kutsumme päättelyfunktiota silmukassa (ketjutetut pyynnöt) ja lisäämme kontekstia joka kerta ja seuraamme luotujen merkkien ja lähetettyjen pyyntöjen määrää, kunnes malli on valmis.

def inference(payload):
    # Call SageMaker endpoint and get response stream
    resp = sm_client.invoke_endpoint_with_response_stream(EndpointName=endpoint_name, Body=json.dumps(payload), ContentType="application/json")
    event_stream = resp['Body']
    text_output = []
    for line in LineIterator(event_stream):
        resp = json.loads(line) 
        # Extract text tokens if present
        if resp['token'].get('text') != None:
            token = resp['token']['text']
            text_output.append(token)  
            print(token, end='')
        # Get finish reason if details present
        if resp.get('details') != None:
            finish_reason = resp['details']['finish_reason']
            # Return extracted output, finish reason and token length
            return payload['inputs'] + ''.join(text_output), finish_reason, len(text_output)

# set details: True as a runtime parameter within the input.
payload = {"inputs": prompt,  "parameters": {"max_new_tokens":256, "details": True}} 

finish_reason = "length"
# Print initial output 
print(f"Output: {payload['inputs']}", end='')  
total_tokens = 0
total_requests = 0
while finish_reason == 'length':
    # Call inference and get extracts
    output_text, finish_reason, out_token_len = inference(payload)
    # Update payload for next request
    payload['inputs'] = output_text 
    total_tokens += out_token_len
    total_requests += 1
# Print metrics
print(f"nntotal tokens generated: {total_tokens} ntotal requests sent: {total_requests}")

Kuten näemme, vaikka max_new_token parametrin arvoksi on asetettu 256, käytämme tulosteen osana finish_reason detail -attribuuttia useiden pyyntöjen ketjuttamiseksi päätepisteeseen, kunnes koko tulos on luotu.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Vastaavasti voit käyttää stop_reason havaitsemaan tietylle tehtävälle määritetyn riittämättömän tulostusjakson pituuden tai tahattoman valmistumisen ihmisen pysäyttämisjakson vuoksi.

Yhteenveto

Tässä viestissä kävimme läpi AWS LMI -säilön version 0.26.0. Korostimme keskeisiä suorituskyvyn parannuksia, uuden mallin tukea ja uusia käytettävyysominaisuuksia. Näiden ominaisuuksien avulla voit paremmin tasapainottaa kustannukset ja suorituskykyominaisuudet ja tarjota paremman kokemuksen loppukäyttäjillesi.

Lisätietoja LMI DLC -ominaisuuksista on kohdassa Mallin rinnakkaisuus ja suuren mallin päättely. Olemme innoissamme nähdessämme, kuinka käytät näitä SageMakerin uusia ominaisuuksia.


Tietoja kirjoittajista

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.João Moura on AWS:n vanhempi AI/ML Specialist Solutions -arkkitehti. João auttaa AWS-asiakkaita – pienistä startupeista suuriin yrityksiin – kouluttamaan ja ottamaan käyttöön suuria malleja tehokkaasti sekä rakentamaan laajemmin ML-alustoja AWS:lle.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Rahul Sharma on AWS:n vanhempi ratkaisuarkkitehti, joka auttaa AWS:n asiakkaita suunnittelemaan ja rakentamaan AI/ML-ratkaisuja. Ennen AWS:ään liittymistään Rahul on työskennellyt useita vuosia rahoitus- ja vakuutusalalla auttaen asiakkaita rakentamaan data- ja analyyttisiä alustoja.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Qing Lan on ohjelmistokehitysinsinööri AWS:ssä. Hän on työskennellyt useiden haastavien tuotteiden parissa Amazonissa, mukaan lukien korkean suorituskyvyn ML-johtopäätösratkaisut ja korkean suorituskyvyn lokijärjestelmä. Qingin tiimi lanseerasi onnistuneesti ensimmäisen Billion-parametrin mallin Amazon Advertisingissä erittäin alhaisella latenssilla. Qingillä on syvällinen tietämys infrastruktuurin optimoinnista ja Deep Learning -kiihdytyksestä.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Jian Sheng on ohjelmistokehitysinsinööri Amazon Web Servicesissä, joka on työskennellyt useiden koneoppimisjärjestelmien keskeisten näkökohtien parissa. Hän on ollut avaintekijä SageMaker Neo -palvelussa keskittyen syväoppimisen kokoamiseen ja kehyksen suoritusajan optimointiin. Viime aikoina hän on ohjannut ponnistelujaan ja osallistunut koneoppimisjärjestelmän optimointiin suuria mallipäätelmiä varten.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Tyler Osterberg on AWS:n ohjelmistokehitysinsinööri. Hän on erikoistunut korkean suorituskyvyn koneoppimispäätelmien luomiseen SageMakerissa. Viime aikoina hän on keskittynyt Inferentia Deep Learning Containers -säilöjen suorituskyvyn optimointiin SageMaker-alustalla. Tyler on erinomainen toteuttamaan tehokkaita isännöintiratkaisuja suurille kielimalleille ja parantamaan käyttökokemusta uusinta teknologiaa käyttämällä.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Rupinder Grewal on vanhempi AI/ML Specialist Solutions -arkkitehti AWS:llä. Tällä hetkellä hän keskittyy mallien ja MLO:iden tarjoamiseen Amazon SageMakerissa. Ennen tätä tehtävää hän työskenteli koneoppimisinsinöörinä mallien rakentamisessa ja isännöinnissa. Työn ulkopuolella hän pelaa tennistä ja pyöräilee vuoristopoluilla.

Dhawal PatelDhawal Patel on AWS:n koneoppimisarkkitehti. Hän on työskennellyt organisaatioiden kanssa suurista yrityksistä keskikokoisiin startup-yrityksiin hajautettuun tietojenkäsittelyyn ja tekoälyyn liittyvien ongelmien parissa. Hän keskittyy syväoppimiseen, mukaan lukien NLP- ja Computer Vision -alueet. Hän auttaa asiakkaita tekemään korkean suorituskyvyn mallipäätelmiä SageMakerissa.

Paranna Mixtral- ja Llama 2 -mallien päättelykykyä uusilla Amazon SageMaker -säiliöillä | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Raghu Ramesha on vanhempi ML-ratkaisuarkkitehti Amazon SageMaker Service -tiimissä. Hän keskittyy auttamaan asiakkaita rakentamaan, ottamaan käyttöön ja siirtämään ML-tuotannon työmäärät SageMakeriin suuressa mittakaavassa. Hän on erikoistunut koneoppimiseen, tekoälyyn ja tietokonenäköalueisiin, ja hänellä on tietojenkäsittelytieteen maisterin tutkinto UT Dallasista. Vapaa-ajallaan hän nauttii matkustamisesta ja valokuvaamisesta.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen