Stream store sprogmodelsvar i Amazon SageMaker JumpStart | Amazon Web Services

Stream store sprogmodelsvar i Amazon SageMaker JumpStart | Amazon Web Services

Vi er glade for at kunne meddele det Amazon SageMaker JumpStart kan nu streame store sprogmodel (LLM) inferenssvar. Token-streaming giver dig mulighed for at se modellens svaroutput, mens det genereres i stedet for at vente på, at LLM'er afslutter svargenereringen, før det gøres tilgængeligt for dig at bruge eller vise. Streaming-kapaciteten i SageMaker JumpStart kan hjælpe dig med at bygge applikationer med en bedre brugeroplevelse ved at skabe en opfattelse af lav latenstid for slutbrugeren.

I dette indlæg gennemgår vi, hvordan du implementerer og streamer svaret fra en Falcon 7B Instruct model slutpunkt.

På tidspunktet for skrivningen understøtter følgende LLM'er, der er tilgængelige i SageMaker JumpStart, streaming:

  • Mistral AI 7B, Mistral AI 7B Instruktion
  • Falcon 180B, Falcon 180B Chat
  • Falcon 40B, Falcon 40B Instruct
  • Falcon 7B, Falcon 7B Instruct
  • Rinna japansk GPT NeoX 4B Instruktion PPO
  • Rinna japansk GPT NeoX 3.6B Instruktion PPO

For at se efter opdateringer på listen over modeller, der understøtter streaming i SageMaker JumpStart, søg efter "huggingface-llm" på Indbyggede algoritmer med fortrænet modelbord.

Bemærk, at du kan bruge streaming funktion of Amazon SageMaker hosting ud af æsken for enhver model implementeret ved hjælp af SageMaker TGI Deep Learning Container (DLC) som beskrevet i Annoncerer lanceringen af ​​nye Hugging Face LLM Inference-beholdere på Amazon SageMaker.

Fundamentmodeller i SageMaker

SageMaker JumpStart giver adgang til en række modeller fra populære modelhubs, herunder Hugging Face, PyTorch Hub og TensorFlow Hub, som du kan bruge i din ML-udviklingsworkflow i SageMaker. De seneste fremskridt inden for ML har givet anledning til en ny klasse af modeller kendt som fundament modeller, som typisk trænes på milliarder af parametre og kan tilpasses til en bred kategori af use cases, såsom tekstresumé, generering af digital kunst og sprogoversættelse. Fordi disse modeller er dyre at træne, ønsker kunder at bruge eksisterende præ-trænede foundation-modeller og finjustere dem efter behov, i stedet for at træne disse modeller selv. SageMaker giver en udvalgt liste over modeller, som du kan vælge imellem på SageMaker-konsollen.

Du kan nu finde fundamentmodeller fra forskellige modeludbydere i SageMaker JumpStart, så du hurtigt kan komme i gang med fundamentmodeller. SageMaker JumpStart tilbyder fundamentmodeller baseret på forskellige opgaver eller modeludbydere, og du kan nemt gennemgå modellens karakteristika og brugsbetingelser. Du kan også prøve disse modeller ved hjælp af en test-UI-widget. Når du vil bruge en fundamentmodel i stor skala, kan du gøre det uden at forlade SageMaker ved at bruge forudbyggede notesbøger fra modeludbydere. Fordi modellerne hostes og implementeres på AWS, stoler du på, at dine data, uanset om de bruges til at evaluere eller bruge modellen i stor skala, ikke vil blive delt med tredjeparter.

Token streaming

Token-streaming gør det muligt at returnere inferenssvaret, efterhånden som det genereres af modellen. På denne måde kan du se svaret genereret trinvist i stedet for at vente på, at modellen er færdig, før du giver det komplette svar. Streaming kan hjælpe med at muliggøre en bedre brugeroplevelse, fordi det reducerer latenstidsopfattelsen for slutbrugeren. Du kan begynde at se outputtet, som det genereres, og kan derfor stoppe genereringen tidligt, hvis outputtet ikke ser nyttigt ud til dine formål. Streaming kan gøre en stor forskel, især for langvarige forespørgsler, fordi du kan begynde at se output, efterhånden som det genereres, hvilket kan skabe en opfattelse af lavere latency, selvom ende-til-ende-forsinkelsen forbliver den samme.

Når dette skrives, kan du bruge streaming i SageMaker JumpStart til modeller, der bruger Hugging Face LLM Tekstgenereringsinferens DLC.

Svar uden dampning Svar med Streaming

Løsningsoversigt

Til dette indlæg bruger vi Falcon 7B Instruct-modellen til at fremvise SageMaker JumpStart-streamingkapaciteten.

Du kan bruge følgende kode til at finde andre modeller i SageMaker JumpStart, der understøtter streaming:

from sagemaker.jumpstart.notebook_utils import list_jumpstart_models
from sagemaker.jumpstart.filters import And filter_value = And("task == llm", "framework == huggingface")
model_ids = list_jumpstart_models(filter=filter_value)
print(model_ids)

Vi får følgende model-id'er, der understøtter streaming:

['huggingface-llm-bilingual-rinna-4b-instruction-ppo-bf16', 'huggingface-llm-falcon-180b-bf16', 'huggingface-llm-falcon-180b-chat-bf16', 'huggingface-llm-falcon-40b-bf16', 'huggingface-llm-falcon-40b-instruct-bf16', 'huggingface-llm-falcon-7b-bf16', 'huggingface-llm-falcon-7b-instruct-bf16', 'huggingface-llm-mistral-7b', 'huggingface-llm-mistral-7b-instruct', 'huggingface-llm-rinna-3-6b-instruction-ppo-bf16']

Forudsætninger

Før du kører den bærbare computer, er der nogle indledende trin, der kræves til opsætning. Kør følgende kommandoer:

%pip install --upgrade sagemaker –quiet

Implementer modellen

Som et første trin skal du bruge SageMaker JumpStart til at implementere en Falcon 7B Instruct-model. For fuldstændige instruktioner, se Falcon 180B foundation model fra TII er nu tilgængelig via Amazon SageMaker JumpStart. Brug følgende kode:

from sagemaker.jumpstart.model import JumpStartModel my_model = JumpStartModel(model_id="huggingface-llm-falcon-7b-instruct-bf16")
predictor = my_model.deploy()

Forespørg slutpunktet og stream-svaret

Konstruer derefter en nyttelast til at påkalde dit implementerede slutpunkt med. Det er vigtigt, at nyttelasten indeholder nøgle/værdi-parret "stream": True. Dette indikerer til tekstgenereringsinferensserveren at generere et streamingsvar.

payload = { "inputs": "How do I build a website?", "parameters": {"max_new_tokens": 256}, "stream": True
}

Før du forespørger på slutpunktet, skal du oprette en iterator, der kan parse bytes-strømsvaret fra slutpunktet. Data for hvert token leveres som en separat linje i svaret, så denne iterator returnerer et token hver gang en ny linje identificeres i streamingbufferen. Denne iterator er minimalt designet, og du vil måske justere dens adfærd til dit brugssag; for eksempel, mens denne iterator returnerer token-strenge, indeholder linjedataene andre oplysninger, såsom token-log-sandsynligheder, der kunne være af interesse.

import io
import json class TokenIterator: def __init__(self, stream): self.byte_iterator = iter(stream) self.buffer = io.BytesIO() self.read_pos = 0 def __iter__(self): return self def __next__(self): while True: self.buffer.seek(self.read_pos) line = self.buffer.readline() if line and line[-1] == ord("n"): self.read_pos += len(line) + 1 full_line = line[:-1].decode("utf-8") line_data = json.loads(full_line.lstrip("data:").rstrip("/n")) return line_data["token"]["text"] chunk = next(self.byte_iterator) self.buffer.seek(0, io.SEEK_END) self.buffer.write(chunk["PayloadPart"]["Bytes"])

Nu kan du bruge Boto3 invoke_endpoint_with_response_stream API på det endepunkt, du oprettede, og aktivere streaming ved at iterere over en TokenIterator eksempel:

import boto3 client = boto3.client("runtime.sagemaker")
response = client.invoke_endpoint_with_response_stream( EndpointName=predictor.endpoint_name, Body=json.dumps(payload), ContentType="application/json",
) for token in TokenIterator(response["Body"]): print(token, end="")

Angivelse af en tom end parameter til print funktionen vil aktivere en visuel stream uden nye linjetegn indsat. Dette giver følgende output:

Building a website can be a complex process, but it generally involves the following steps: 1. Determine the purpose and goals of your website
2. Choose a domain name and hosting provider
3. Design and develop your website using HTML, CSS, and JavaScript
4. Add content to your website and optimize it for search engines
5. Test and troubleshoot your website to ensure it is working properly
6. Maintain and update your website regularly to keep it running smoothly. There are many resources available online to guide you through these steps, including tutorials and templates. It may also be helpful to seek the advice of a web developer or designer if you are unsure about any of these steps.<|endoftext|>

Du kan bruge denne kode i en notesbog eller andre applikationer som Streamlit eller Gradio for at se streamingen i aktion og den oplevelse, den giver dine kunder.

Ryd op

Husk endelig at rydde op i din implementerede model og slutpunkt for at undgå at pådrage dig yderligere omkostninger:

predictor.delete_model()
predictor.delete_endpoint()

Konklusion

I dette indlæg viste vi dig, hvordan du bruger den nyligt lancerede funktion til streaming i SageMaker JumpStart. Vi håber, at du vil bruge token-streaming-kapaciteten til at bygge interaktive applikationer, der kræver lav latenstid for en bedre brugeroplevelse.


Om forfatterne

Stream large language model responses in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Rachna Chadha er Principal Solution Architect AI/ML i Strategic Accounts hos AWS. Rachna er en optimist, der mener, at etisk og ansvarlig brug af kunstig intelligens kan forbedre samfundet i fremtiden og bringe økonomisk og social velstand. I sin fritid kan Rachna godt lide at bruge tid med sin familie, vandreture og lytte til musik.

Stream large language model responses in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Kyle Ulrich er en anvendt videnskabsmand med Amazon SageMaker indbyggede algoritmer hold. Hans forskningsinteresser omfatter skalerbare maskinlæringsalgoritmer, computervision, tidsserier, Bayesianske ikke-parametriske og Gaussiske processer. Hans ph.d. er fra Duke University, og han har udgivet artikler i NeurIPS, Cell og Neuron.

Stream large language model responses in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Ashish Khetan er en Senior Applied Scientist med Amazon SageMaker indbyggede algoritmer og hjælper med at udvikle machine learning algoritmer. Han fik sin ph.d. fra University of Illinois Urbana-Champaign. Han er en aktiv forsker i maskinlæring og statistisk inferens og har publiceret mange artikler i NeurIPS, ICML, ICLR, JMLR, ACL og EMNLP konferencer.

Tidsstempel:

Mere fra AWS maskinindlæring