Stream antwoorden op grote taalmodellen in Amazon SageMaker JumpStart | Amazon-webservices

Stream antwoorden op grote taalmodellen in Amazon SageMaker JumpStart | Amazon-webservices

We zijn enthousiast om dat aan te kondigen Amazon SageMaker JumpStart kan nu inferentiereacties op grote taalmodellen (LLM) streamen. Met tokenstreaming kunt u de uitvoer van het modelantwoord zien terwijl deze wordt gegenereerd, in plaats van te wachten tot LLM's het genereren van het antwoord hebben voltooid voordat deze beschikbaar wordt gemaakt voor u om te gebruiken of weer te geven. De streamingmogelijkheden in SageMaker JumpStart kunnen u helpen bij het bouwen van applicaties met een betere gebruikerservaring door een perceptie van lage latentie voor de eindgebruiker te creรซren.

In dit bericht laten we zien hoe u de reactie van een Falcon 7B Instructiemodel eindpunt.

Op het moment dat dit artikel wordt geschreven, ondersteunen de volgende LLM's die beschikbaar zijn in SageMaker JumpStart streaming:

  • Mistral AI 7B, Mistral AI 7B Instrueer
  • Falcon 180B, Falcon 180B Chat
  • Falcon 40B, Falcon 40B Instrueer
  • Falcon 7B, Falcon 7B Instrueer
  • Rinna Japanse GPT NeoX 4B Instructie PPO
  • Rinna Japanse GPT NeoX 3.6B Instructie PPO

Om te controleren op updates in de lijst met modellen die streaming ondersteunen in SageMaker JumpStart, zoekt u naar โ€œhuggingface-llmโ€ op Ingebouwde algoritmen met vooraf getrainde modeltabel.

Merk op dat u de you kunt gebruiken streamingfunctie of Amazon Sage Maker kant-en-klare hosting voor elk model dat wordt ingezet met behulp van de SageMaker TGI Deep Learning Container (DLC), zoals beschreven in Aankondiging van de lancering van nieuwe Hugging Face LLM Inference-containers op Amazon SageMaker.

Funderingsmodellen in SageMaker

SageMaker JumpStart biedt toegang tot een reeks modellen van populaire modelhubs, waaronder Hugging Face, PyTorch Hub en TensorFlow Hub, die u kunt gebruiken binnen uw ML-ontwikkelingsworkflow in SageMaker. Recente ontwikkelingen op het gebied van ML hebben aanleiding gegeven tot een nieuwe klasse modellen, bekend als funderingsmodellen, die doorgaans zijn getraind op miljarden parameters en kunnen worden aangepast aan een brede categorie gebruiksscenario's, zoals het samenvatten van teksten, het genereren van digitale kunst en het vertalen van talen. Omdat het trainen van deze modellen duur is, willen klanten bestaande, vooraf getrainde basismodellen gebruiken en deze indien nodig verfijnen, in plaats van deze modellen zelf te trainen. SageMaker biedt een samengestelde lijst met modellen waaruit u kunt kiezen op de SageMaker-console.

Binnen SageMaker JumpStart kunt u nu funderingsmodellen van verschillende modelaanbieders vinden, zodat u snel aan de slag kunt met funderingsmodellen. SageMaker JumpStart biedt basismodellen op basis van verschillende taken of modelaanbieders, en u kunt eenvoudig modelkenmerken en gebruiksvoorwaarden bekijken. U kunt deze modellen ook uitproberen met behulp van een test-UI-widget. Als u een basismodel op schaal wilt gebruiken, kunt u dit doen zonder SageMaker te verlaten door vooraf gebouwde notebooks van modelaanbieders te gebruiken. Omdat de modellen worden gehost en geรฏmplementeerd op AWS, vertrouwt u erop dat uw gegevens, ongeacht of deze worden gebruikt voor de evaluatie of het gebruik van het model op schaal, niet met derden worden gedeeld.

Token-streaming

Met tokenstreaming kan het gevolgtrekkingsantwoord worden geretourneerd terwijl het door het model wordt gegenereerd. Op deze manier kunt u zien hoe het antwoord stapsgewijs wordt gegenereerd, in plaats van te wachten tot het model is voltooid voordat u het volledige antwoord geeft. Streaming kan helpen een betere gebruikerservaring mogelijk te maken, omdat het de latentieperceptie voor de eindgebruiker vermindert. U kunt de uitvoer bekijken zodra deze wordt gegenereerd en daarom het genereren vroegtijdig stoppen als de uitvoer er niet nuttig uitziet voor uw doeleinden. Streaming kan een groot verschil maken, vooral bij langlopende query's, omdat u de uitvoer kunt zien zodra deze wordt gegenereerd, wat de indruk kan wekken van een lagere latentie, ook al blijft de end-to-end latentie hetzelfde.

Op het moment dat ik dit schrijf, kun je streaming in SageMaker JumpStart gebruiken voor modellen die Hugging Face LLM gebruiken Inferentie voor het genereren van tekst DLC.

Reactie zonder stomen Reactie met streaming

Overzicht oplossingen

Voor dit bericht gebruiken we het Falcon 7B Instruct-model om de SageMaker JumpStart-streamingmogelijkheden te demonstreren.

U kunt de volgende code gebruiken om andere modellen in SageMaker JumpStart te vinden die streaming ondersteunen:

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)

We krijgen de volgende model-ID's die streaming ondersteunen:

['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']

Voorwaarden

Voordat u de notebook kunt gebruiken, zijn er enkele eerste installatiestappen vereist. Voer de volgende opdrachten uit:

%pip install --upgrade sagemaker โ€“quiet

Implementeer het model

Gebruik als eerste stap SageMaker JumpStart om een โ€‹โ€‹Falcon 7B Instruct-model te implementeren. Voor volledige instructies, zie Het Falcon 180B-funderingsmodel van TII is nu verkrijgbaar via Amazon SageMaker JumpStart. Gebruik de volgende code:

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

Voer een query uit op het eindpunt en stream het antwoord

Bouw vervolgens een payload waarmee u uw geรฏmplementeerde eindpunt kunt aanroepen. Belangrijk is dat de payload het sleutel/waarde-paar moet bevatten "stream": True. Dit geeft aan dat de inferentieserver voor het genereren van tekst een streamingantwoord moet genereren.

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

Voordat u een query uitvoert op het eindpunt, moet u een iterator maken die de bytesstreamreactie van het eindpunt kan parseren. Gegevens voor elk token worden als een afzonderlijke regel in het antwoord geleverd, dus deze iterator retourneert een token telkens wanneer een nieuwe regel in de streamingbuffer wordt geรฏdentificeerd. Deze iterator is minimaal ontworpen en misschien wilt u het gedrag ervan aanpassen aan uw gebruiksscenario; Terwijl deze iterator bijvoorbeeld tokenreeksen retourneert, bevatten de lijngegevens andere informatie, zoals tokenlogkansen, die van belang kunnen zijn.

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 kunt u de Boto3 gebruiken invoke_endpoint_with_response_stream API op het eindpunt dat u hebt gemaakt en schakel streaming in door te itereren over a TokenIterator voorbeeld:

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="")

Een leeg opgeven end parameter aan de print -functie maakt een visuele stream mogelijk zonder dat er nieuwe lijntekens worden ingevoegd. Dit levert de volgende uitvoer op:

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

U kunt deze code gebruiken in een notebook of andere toepassingen zoals Streamlit of Gradio om de streaming in actie te zien en de ervaring die deze voor uw klanten biedt.

Opruimen

Vergeet ten slotte niet om uw geรฏmplementeerde model en eindpunt op te schonen om extra kosten te voorkomen:

predictor.delete_model()
predictor.delete_endpoint()

Conclusie

In dit bericht hebben we u laten zien hoe u de nieuw gelanceerde streamingfunctie in SageMaker JumpStart kunt gebruiken. We hopen dat u de tokenstreaming-mogelijkheid zult gebruiken om interactieve applicaties te bouwen die een lage latentie vereisen voor een betere gebruikerservaring.


Over de auteurs

Stream antwoorden op grote taalmodellen in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Rachna Chadha is een Principal Solution Architect AI/ML in Strategic Accounts bij AWS. Rachna is een optimist die gelooft dat ethisch en verantwoord gebruik van AI de samenleving in de toekomst kan verbeteren en economische en sociale welvaart kan brengen. In haar vrije tijd brengt Rachna graag tijd door met haar familie, wandelen en luisteren naar muziek.

Stream antwoorden op grote taalmodellen in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Kyle Ulrich is een Applied Scientist met de Ingebouwde algoritmen van Amazon SageMaker team. Zijn onderzoeksinteresses omvatten schaalbare machine learning-algoritmen, computervisie, tijdreeksen, Bayesiaanse niet-parametrische gegevens en Gaussiaanse processen. Zijn PhD is van Duke University en hij heeft artikelen gepubliceerd in NeurIPS, Cell en Neuron.

Stream antwoorden op grote taalmodellen in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Dr Ashish Khetan is een Senior Applied Scientist met ingebouwde algoritmen van Amazon SageMaker en helpt bij het ontwikkelen van algoritmen voor machine learning. Hij promoveerde aan de Universiteit van Illinois in Urbana-Champaign. Hij is een actief onderzoeker op het gebied van machine learning en statistische inferentie, en heeft veel artikelen gepubliceerd op NeurIPS-, ICML-, ICLR-, JMLR-, ACL- en EMNLP-conferenties.

Tijdstempel:

Meer van AWS-machine learning