Streamen Sie Antworten auf große Sprachmodelle in Amazon SageMaker JumpStart | Amazon Web Services

Streamen Sie Antworten auf große Sprachmodelle in Amazon SageMaker JumpStart | Amazon Web Services

Wir freuen uns, das zu verkünden Amazon SageMaker-JumpStart kann jetzt LLM-Inferenzantworten (Large Language Model) streamen. Durch Token-Streaming können Sie die Modellantwortausgabe sehen, während sie generiert wird, anstatt darauf zu warten, dass LLMs die Antwortgenerierung abgeschlossen haben, bevor sie Ihnen zur Verwendung oder Anzeige zur Verfügung gestellt wird. Die Streaming-Funktion in SageMaker JumpStart kann Ihnen dabei helfen, Anwendungen mit einem besseren Benutzererlebnis zu erstellen, indem sie dem Endbenutzer den Eindruck einer geringen Latenz vermittelt.

In diesem Beitrag erfahren Sie, wie Sie die Antwort von a bereitstellen und streamen Falcon 7B Instruct-Modell Endpunkt.

Zum Zeitpunkt des Verfassens dieses Artikels unterstützen die folgenden in SageMaker JumpStart verfügbaren LLMs Streaming:

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

Um nach Updates für die Liste der Modelle zu suchen, die Streaming in SageMaker JumpStart unterstützen, suchen Sie nach „huggingface-llm“ unter Eingebaute Algorithmen mit vortrainierter Modelltabelle.

Beachten Sie, dass Sie die Streaming-Funktion of Amazon Sage Maker Sofortiges Hosting für jedes Modell, das mit dem SageMaker TGI Deep Learning Container (DLC) bereitgestellt wird, wie in beschrieben Ankündigung der Einführung neuer Hugging Face LLM-Inferenzcontainer auf Amazon SageMaker.

Foundation-Modelle in SageMaker

SageMaker JumpStart bietet Zugriff auf eine Reihe von Modellen beliebter Modell-Hubs, darunter Hugging Face, PyTorch Hub und TensorFlow Hub, die Sie in Ihrem ML-Entwicklungsworkflow in SageMaker verwenden können. Die jüngsten Fortschritte im ML haben zu einer neuen Klasse von Modellen geführt, die als bekannt ist Gründungsmodelle, die typischerweise auf Milliarden von Parametern trainiert werden und an eine breite Kategorie von Anwendungsfällen angepasst werden können, wie z. B. Textzusammenfassung, Generierung digitaler Kunst und Sprachübersetzung. Da das Trainieren dieser Modelle teuer ist, möchten Kunden vorhandene vorab trainierte Basismodelle verwenden und diese nach Bedarf verfeinern, anstatt diese Modelle selbst zu trainieren. SageMaker bietet eine kuratierte Liste von Modellen, aus denen Sie auf der SageMaker-Konsole auswählen können.

Sie können jetzt in SageMaker JumpStart Grundlagenmodelle von verschiedenen Modellanbietern finden, sodass Sie schnell mit Grundlagenmodellen beginnen können. SageMaker JumpStart bietet Basismodelle basierend auf verschiedenen Aufgaben oder Modellanbietern, und Sie können Modelleigenschaften und Nutzungsbedingungen einfach überprüfen. Sie können diese Modelle auch mit einem Test-UI-Widget ausprobieren. Wenn Sie ein Grundmodell im großen Maßstab verwenden möchten, können Sie dies tun, ohne SageMaker zu verlassen, indem Sie vorgefertigte Notebooks von Modellanbietern verwenden. Da die Modelle auf AWS gehostet und bereitgestellt werden, können Sie darauf vertrauen, dass Ihre Daten, unabhängig davon, ob sie zur Bewertung oder Verwendung des Modells im großen Maßstab verwendet werden, nicht an Dritte weitergegeben werden.

Token-Streaming

Durch das Token-Streaming kann die Inferenzantwort zurückgegeben werden, während sie vom Modell generiert wird. Auf diese Weise können Sie sehen, wie die Antwort inkrementell generiert wird, anstatt auf die Fertigstellung des Modells zu warten, bevor Sie die vollständige Antwort bereitstellen. Streaming kann dazu beitragen, ein besseres Benutzererlebnis zu ermöglichen, da es die Latenzwahrnehmung für den Endbenutzer verringert. Sie können die Ausgabe bereits bei der Generierung sehen und die Generierung daher vorzeitig beenden, wenn die Ausgabe für Ihre Zwecke nicht nützlich erscheint. Streaming kann einen großen Unterschied machen, insbesondere bei Abfragen mit langer Laufzeit, da Sie bereits bei der Generierung Ausgaben sehen können, was den Eindruck einer geringeren Latenz erwecken kann, obwohl die End-to-End-Latenz gleich bleibt.

Zum jetzigen Zeitpunkt können Sie Streaming in SageMaker JumpStart für Modelle verwenden, die Hugging Face LLM verwenden Inferenz zur Textgenerierung DLC.

Antwort ohne Dampf Antwort mit Streaming

Lösungsüberblick

Für diesen Beitrag verwenden wir das Falcon 7B Instruct-Modell, um die Streaming-Funktion von SageMaker JumpStart vorzustellen.

Sie können den folgenden Code verwenden, um andere Modelle in SageMaker JumpStart zu finden, die Streaming unterstützen:

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)

Wir erhalten die folgenden Modell-IDs, die Streaming unterstützen:

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

Voraussetzungen:

Bevor Sie das Notebook in Betrieb nehmen, sind einige erste Schritte zur Einrichtung erforderlich. Führen Sie die folgenden Befehle aus:

%pip install --upgrade sagemaker –quiet

Stellen Sie das Modell bereit

Als ersten Schritt verwenden Sie SageMaker JumpStart, um ein Falcon 7B Instruct-Modell bereitzustellen. Vollständige Anweisungen finden Sie unter Das Fundamentmodell Falcon 180B von TII ist jetzt über Amazon SageMaker JumpStart erhältlich. Verwenden Sie den folgenden Code:

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

Fragen Sie den Endpunkt und die Stream-Antwort ab

Erstellen Sie als Nächstes eine Nutzlast, mit der Sie Ihren bereitgestellten Endpunkt aufrufen. Wichtig ist, dass die Nutzlast das Schlüssel/Wert-Paar enthält "stream": True. Dies weist den Textgenerierungs-Inferenzserver an, eine Streaming-Antwort zu generieren.

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

Bevor Sie den Endpunkt abfragen, müssen Sie einen Iterator erstellen, der die Byte-Stream-Antwort vom Endpunkt analysieren kann. Daten für jedes Token werden als separate Zeile in der Antwort bereitgestellt, sodass dieser Iterator jedes Mal ein Token zurückgibt, wenn eine neue Zeile im Streaming-Puffer identifiziert wird. Dieser Iterator ist minimal konzipiert und Sie möchten möglicherweise sein Verhalten an Ihren Anwendungsfall anpassen. Während dieser Iterator beispielsweise Token-Strings zurückgibt, enthalten die Zeilendaten andere Informationen, wie etwa Token-Log-Wahrscheinlichkeiten, die von Interesse sein könnten.

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

Jetzt können Sie den Boto3 verwenden invoke_endpoint_with_response_stream API auf dem Endpunkt, den Sie erstellt haben, und aktivieren Sie das Streaming, indem Sie über a iterieren TokenIterator Beispiel:

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

Angabe eines Leerzeichens end Parameter auf die print Die Funktion ermöglicht einen visuellen Stream, ohne dass neue Zeilenzeichen eingefügt werden. Dies erzeugt die folgende Ausgabe:

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

Sie können diesen Code in einem Notebook oder anderen Anwendungen wie Streamlit oder Gradio verwenden, um das Streaming in Aktion zu sehen und das Erlebnis, das es Ihren Kunden bietet.

Aufräumen

Denken Sie abschließend daran, Ihr bereitgestelltes Modell und Ihren Endpunkt zu bereinigen, um zusätzliche Kosten zu vermeiden:

predictor.delete_model()
predictor.delete_endpoint()

Zusammenfassung

In diesem Beitrag haben wir Ihnen gezeigt, wie Sie die neu eingeführte Streaming-Funktion in SageMaker JumpStart nutzen können. Wir hoffen, dass Sie die Token-Streaming-Funktion nutzen, um interaktive Anwendungen zu erstellen, die eine geringe Latenz für ein besseres Benutzererlebnis erfordern.


Über die Autoren

Streamen Sie Antworten auf große Sprachmodelle in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Rachna Chadha ist Principal Solution Architect AI/ML in Strategic Accounts bei AWS. Rachna ist eine Optimistin, die glaubt, dass ein ethischer und verantwortungsvoller Einsatz von KI die Gesellschaft in Zukunft verbessern und wirtschaftlichen und sozialen Wohlstand bringen kann. In ihrer Freizeit verbringt Rachna gerne Zeit mit ihrer Familie, wandert und hört Musik.

Streamen Sie Antworten auf große Sprachmodelle in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Kyle Ulrich ist Angewandte Wissenschaftlerin bei der Integrierte Amazon SageMaker-Algorithmen Team. Seine Forschungsinteressen umfassen skalierbare Algorithmen für maschinelles Lernen, Computer Vision, Zeitreihen, bayessche nichtparametrische Verfahren und Gaußsche Prozesse. Er hat an der Duke University promoviert und Artikel in NeurIPS, Cell und Neuron veröffentlicht.

Streamen Sie Antworten auf große Sprachmodelle in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Dr. Ashish Khetan ist Senior Applied Scientist mit integrierten Amazon SageMaker-Algorithmen und hilft bei der Entwicklung von Algorithmen für maschinelles Lernen. Er promovierte an der University of Illinois Urbana-Champaign. Er ist ein aktiver Forscher auf dem Gebiet des maschinellen Lernens und der statistischen Inferenz und hat viele Artikel auf den Konferenzen NeurIPS, ICML, ICLR, JMLR, ACL und EMNLP veröffentlicht.

Zeitstempel:

Mehr von AWS Maschinelles Lernen