Führen Sie die Textgenerierung mit GPT- und Bloom-Modellen auf Amazon SageMaker JumpStart aus

Im Dezember 2020, AWS angekündigt die allgemeine Verfügbarkeit von Amazon SageMaker-JumpStart, eine Fähigkeit von Amazon Sage Maker das Ihnen den schnellen und einfachen Einstieg in Machine Learning (ML) erleichtert. JumpStart bietet mit einem Klick die Feinabstimmung und Bereitstellung einer Vielzahl vortrainierter Modelle für beliebte ML-Aufgaben sowie eine Auswahl an End-to-End-Lösungen, die allgemeine Geschäftsprobleme lösen. Diese Funktionen entlasten jeden Schritt des ML-Prozesses, erleichtern die Entwicklung hochwertiger Modelle und verkürzen die Bereitstellungszeit.

Dieser Beitrag ist der vierte in einer Reihe über die Verwendung von JumpStart für bestimmte ML-Aufgaben. In dem erster Beitraghaben wir gezeigt, wie Anwendungsfälle zur Bildklassifizierung auf JumpStart ausgeführt werden. In dem zweiter Beitraghaben wir gezeigt, wie Anwendungsfälle zur Textklassifizierung ausgeführt werden. In dem dritter Beitraghaben wir Anwendungsfälle zur Bildsegmentierung durchgeführt.

In diesem Beitrag bieten wir eine Schritt-für-Schritt-Anleitung zur Bereitstellung vortrainierter Textgenerierungsmodelle. Wir untersuchen zwei Möglichkeiten, dasselbe Ergebnis zu erzielen: über die grafische Benutzeroberfläche von JumpStart Amazon SageMaker-Studio, und programmgesteuert durch JumpStart-APIs.

Wenn Sie direkt in den JumpStart-API-Code springen möchten, den wir in diesem Beitrag durchgehen, können Sie sich auf das folgende Jupyter-Beispiel-Notebook beziehen: Einführung in JumpStart – Textgenerierung.

JumpStart-Übersicht

JumpStart hilft Ihnen beim Einstieg in ML-Modelle für eine Vielzahl von Aufgaben, ohne eine einzige Codezeile schreiben zu müssen. Derzeit können Sie mit JumpStart Folgendes tun:

  • Stellen Sie vortrainierte Modelle für allgemeine ML-Aufgaben bereit – JumpStart ermöglicht es Ihnen, allgemeine ML-Aufgaben ohne Entwicklungsaufwand zu bewältigen, indem es eine einfache Bereitstellung von Modellen bereitstellt, die auf großen, öffentlich verfügbaren Datensätzen vortrainiert wurden. Die ML-Forschungsgemeinschaft hat große Anstrengungen unternommen, um einen Großteil der kürzlich entwickelten Modelle öffentlich zugänglich zu machen. JumpStart hostet eine Sammlung von über 300 Modellen, die die 15 beliebtesten ML-Aufgaben wie Objekterkennung, Textklassifizierung und Textgenerierung abdecken, was es Anfängern leicht macht, sie zu verwenden. Diese Modelle stammen von beliebten Modell-Hubs wie TensorFlow, PyTorch, Hugging Face und MXNet.
  • Optimieren Sie vortrainierte Modelle – Mit JumpStart können Sie vortrainierte Modelle optimieren, ohne Ihren eigenen Trainingsalgorithmus schreiben zu müssen. Im ML wird die Fähigkeit bezeichnet, das in einer Domäne erlernte Wissen auf eine andere Domäne zu übertragen Transferlernen. Sie können Transfer Learning verwenden, um genaue Modelle für Ihre kleineren Datasets zu erstellen, und zwar mit viel geringeren Schulungskosten als beim Training des ursprünglichen Modells. JumpStart enthält auch beliebte Trainingsalgorithmen basierend auf LightGBM, CatBoost, XGBoost und Scikit-learn, die Sie von Grund auf neu für tabellarische Regression und Klassifizierung trainieren können.
  • Verwenden Sie vorgefertigte Lösungen – JumpStart bietet eine Reihe von 17 Lösungen für gängige ML-Anwendungsfälle, wie z. B. Bedarfsprognosen und Industrie- und Finanzanwendungen, die Sie mit nur wenigen Klicks bereitstellen können. Lösungen sind End-to-End-ML-Anwendungen, die verschiedene AWS-Services aneinanderreihen, um einen bestimmten geschäftlichen Anwendungsfall zu lösen. Sie benutzen AWS CloudFormation Vorlagen und Referenzarchitekturen für eine schnelle Bereitstellung, was bedeutet, dass sie vollständig anpassbar sind.
  • Siehe Notebook-Beispiele für SageMaker-Algorithmen – SageMaker bietet eine Reihe integrierter Algorithmen, um Data Scientists und ML-Praktikern den Einstieg in das Training und die schnelle Bereitstellung von ML-Modellen zu erleichtern. JumpStart stellt Beispiel-Notebooks bereit, mit denen Sie diese Algorithmen schnell verwenden können.
  • Sehen Sie sich Schulungsvideos und Blogs an – JumpStart bietet auch zahlreiche Blogbeiträge und Videos, die Ihnen beibringen, wie Sie verschiedene Funktionen in SageMaker verwenden.

JumpStart akzeptiert benutzerdefinierte VPC-Einstellungen und AWS-Schlüsselverwaltungsservice (AWS KMS)-Verschlüsselungsschlüssel, damit Sie die verfügbaren Modelle und Lösungen sicher in Ihrer Unternehmensumgebung verwenden können. Sie können Ihre Sicherheitseinstellungen innerhalb von Studio oder über das SageMaker Python SDK an JumpStart übergeben.

Textgenerierung, GPT-2 und Bloom

Textgenerierung ist die Aufgabe, Text zu generieren, der flüssig ist und nicht von von Menschen geschriebenem Text zu unterscheiden ist. Es ist auch bekannt als natürliche Sprachgenerierung.

GPT-2 ist ein beliebtes transformatorbasiertes Textgenerierungsmodell. Es ist auf einem großen Korpus von englischem Rohtext ohne menschliche Kennzeichnung vortrainiert. Es wird auf die Aufgabe trainiert, bei der das Modell bei einer gegebenen Teilsequenz (Satz oder Textstück) das nächste Wort oder Token in der Sequenz vorhersagen muss.

Bloom ist ebenfalls ein transformatorbasiertes Textgenerierungsmodell und ähnlich wie GPT-2 trainiert. Bloom ist jedoch in 46 verschiedenen Sprachen und 13 Programmiersprachen vortrainiert. Nachfolgend ein Beispiel für die Lauftextgenerierung mit dem Bloom-Modell:

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

Lösungsüberblick

Die folgenden Abschnitte bieten eine Schritt-für-Schritt-Demo zur Durchführung von Inferenzen sowohl über die Studio-Benutzeroberfläche als auch über JumpStart-APIs. Wir gehen durch die folgenden Schritte:

  1. Greifen Sie über die Studio-Benutzeroberfläche auf JumpStart zu, um Inferenzen für das vorab trainierte Modell bereitzustellen und auszuführen.
  2. Verwenden Sie JumpStart programmgesteuert mit dem SageMaker Python SDK, um das vorab trainierte Modell bereitzustellen und Inferenzen auszuführen.

Greifen Sie über die Studio-Benutzeroberfläche auf JumpStart zu und führen Sie Inferenzen mit einem vortrainierten Modell aus

In diesem Abschnitt zeigen wir, wie Sie JumpStart-Modelle über die Studio-Benutzeroberfläche trainieren und bereitstellen.

Das folgende Video zeigt Ihnen, wie Sie ein vortrainiertes Textgenerierungsmodell auf JumpStart finden und bereitstellen. Die Modellseite enthält wertvolle Informationen über das Modell und seine Verwendung. Sie können jedes der in JumpStart verfügbaren vortrainierten Modelle bereitstellen. Für die Inferenz wählen wir den Instance-Typ ml.p3.2xlarge, da er die für eine niedrige Inferenzlatenz erforderliche GPU-Beschleunigung zu einem günstigen Preis bietet. Nachdem Sie die SageMaker-Hosting-Instanz konfiguriert haben, wählen Sie Deploy. Es kann 20–25 Minuten dauern, bis Ihr persistenter Endpunkt betriebsbereit ist.

Sobald Ihr Endpunkt betriebsbereit ist, kann er auf Inferenzanforderungen reagieren!

Um Ihre Zeit bis zur Inferenz zu verkürzen, stellt JumpStart ein Beispiel-Notebook bereit, das Ihnen zeigt, wie Sie Inferenz auf Ihrem frisch bereitgestellten Endpunkt ausführen. Wählen Notizbuch öffnen für Verwenden Sie Endpoint aus Studio.

Verwenden Sie JumpStart programmgesteuert mit dem SageMaker SDK

Im vorherigen Abschnitt haben wir gezeigt, wie Sie die JumpStart-Benutzeroberfläche verwenden können, um ein vorab trainiertes Modell mit nur wenigen Klicks interaktiv bereitzustellen. Sie können die Modelle von JumpStart jedoch auch programmgesteuert verwenden, indem Sie APIs verwenden, die in das SageMaker SDK integriert sind.

In diesem Abschnitt gehen wir ein kurzes Beispiel durch, wie Sie den vorherigen Prozess mit dem SageMaker SDK replizieren können. Wir wählen ein geeignetes vortrainiertes Modell in JumpStart aus, stellen dieses Modell auf einem SageMaker-Endpunkt bereit und führen die Inferenz auf dem bereitgestellten Endpunkt aus. Alle Schritte in dieser Demo sind im begleitenden Notebook verfügbar Einführung in JumpStart – Textgenerierung.

Stellen Sie das vorab trainierte Modell bereit

SageMaker ist eine Plattform, die Docker-Container in großem Umfang für Build- und Laufzeitaufgaben nutzt. JumpStart verwendet das verfügbare Framework-spezifisch SageMaker Deep Learning-Container (DLCs). Wir rufen zuerst alle zusätzlichen Pakete sowie Skripte ab, um das Training und die Inferenz für die ausgewählte Aufgabe zu handhaben. Schließlich werden die vortrainierten Modellartefakte separat mit abgerufen model_uris, was der Plattform Flexibilität verleiht. Sie können mit einem einzigen Inferenzskript eine beliebige Anzahl von Modellen verwenden, die für dieselbe Aufgabe vortrainiert wurden. Siehe folgenden Code:

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 ist ein sehr großes Modell und die Bereitstellung kann bis zu 20–25 Minuten dauern. Sie können auch ein kleineres Modell wie GPT-2 verwenden. Um ein vortrainiertes GPT-2-Modell bereitzustellen, können Sie festlegen model_id = huggingface-textgeneration-gpt2. Eine Liste anderer verfügbarer Modelle in JumpStart finden Sie unter Verfügbare JumpStart-Modelltabelle.

Als nächstes speisen wir die Ressourcen in a SageMaker-Modell Instanz und stellen Sie einen Endpunkt bereit:

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

Nachdem unser Modell bereitgestellt wurde, können wir daraus Vorhersagen in Echtzeit erhalten!

Inferenz ausführen

Das folgende Code-Snippet gibt Ihnen einen Eindruck davon, wie die Ausgaben aussehen. Um Anforderungen an ein bereitgestelltes Modell zu senden, muss Eingabetext in a bereitgestellt werden utf-8 kodiertes Format.

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

Die Endpunktantwort ist ein JSON-Objekt, das den Eingabetext gefolgt vom generierten Text enthält:

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)

Unsere Ausgabe ist wie folgt:

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

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie Sie mit JumpStart ein vortrainiertes Textgenerierungsmodell bereitstellen. Sie können dies erreichen, ohne Code schreiben zu müssen. Probieren Sie die Lösung selbst aus und senden Sie uns Ihre Kommentare. Um mehr über JumpStart zu erfahren und wie Sie vortrainierte Open-Source-Modelle für eine Vielzahl anderer ML-Aufgaben verwenden können, sehen Sie sich Folgendes an AWS re:Invent 2020-Video.


Über die Autoren

Führen Sie die Textgenerierung mit GPT- und Bloom-Modellen auf Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence aus. Vertikale Suche. Ai.Vivek Madan ist ein angewandter Wissenschaftler im Amazon SageMaker JumpStart-Team. Er promovierte an der University of Illinois at Urbana-Champaign und war Postdoktorand an der Georgia Tech. Er ist ein aktiver Forscher in den Bereichen maschinelles Lernen und Algorithmendesign und hat Artikel auf Konferenzen von EMNLP, ICLR, COLT, FOCS und SODA veröffentlicht.

Führen Sie die Textgenerierung mit GPT- und Bloom-Modellen auf Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence aus. Vertikale Suche. Ai.Santosh Kulkarni ist Enterprise Solutions Architect bei Amazon Web Services und arbeitet mit Sportkunden in Australien zusammen. Er entwickelt leidenschaftlich gerne groß angelegte verteilte Anwendungen, um Geschäftsprobleme zu lösen, indem er sein Wissen in den Bereichen KI/ML, Big Data und Softwareentwicklung nutzt.

Führen Sie die Textgenerierung mit GPT- und Bloom-Modellen auf Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence aus. 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