Bereitstellen eines voroptimierten Modells - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Bereitstellen eines voroptimierten Modells

Einige Modelle in JumpStart sind von SageMaker AI voroptimiert, was bedeutet, dass Sie optimierte Versionen dieser Modelle bereitstellen können, ohne zuvor einen Inferenzoptimierungsjob zu erstellen.

Eine Liste der Modelle mit voroptimierten Optionen finden Sie unter Voroptimierte JumpStart-Modelle.

Gehen Sie wie folgt vor, um ein voroptimiertes JumpStart-Modell mit Amazon SageMaker Studio bereitzustellen.

So stellen Sie ein voroptimiertes Modell bereit
  1. Wählen Sie in Studio im Navigationsmenü links JumpStart aus.

  2. Wählen Sie auf der Seite Alle öffentlichen Modelle eines der voroptimierten Modelle aus.

  3. Wählen Sie auf der Modelldetailseite die Option Bereitstellen aus.

  4. Auf der Bereitstellungsseite müssen Sie bei einigen JumpStart-Modellen eine Endbenutzer-Lizenzvereinbarung (EULA) unterzeichnen, bevor Sie fortfahren können. Falls Sie dazu aufgefordert werden, lesen Sie die Lizenzbedingungen im Abschnitt Lizenzvereinbarung. Wenn die Bedingungen für Ihren Anwendungsfall akzeptabel sind, aktivieren Sie das Kontrollkästchen Ich akzeptiere die EULA und habe die allgemeinen Geschäftsbedingungen gelesen.

    Weitere Informationen finden Sie unter Endbenutzer-Lizenzvereinbarungen.

  5. Unter Endpunktname und Anfängliche Instance-Anzahl können sie entweder die Standardwerte übernehmen oder benutzerdefinierte Werte festlegen.

  6. Behalten Sie als Instance-Typ den Standardwert bei. Andernfalls können Sie keine voroptimierte Konfiguration bereitstellen.

  7. Erweitern Sie unter Modelle die Modellkonfiguration. Studio zeigt eine Tabelle mit den voroptimierten Konfigurationen an, aus denen Sie wählen können. Jede Option verfügt über Metriken für Latenz und Durchsatz. Wählen Sie die Option, die Ihren Anwendungsanforderungen am besten entspricht.

  8. Wählen Sie Bereitstellen.

Sie können ein voroptimiertes Modell bereitstellen, indem Sie das SageMaker AI Python SDK in Ihrem Projekt verwenden. Zunächst definieren Sie eine Model-Instance mithilfe der ModelBuilder-Klasse. Anschließend verwenden Sie die set_deployment_config()-Methode, um die voroptimierte Konfiguration festzulegen, die Sie bereitstellen möchten. Daraufhin erstellen Sie anhand der build()-Methode das Modell. Abschließend verwenden Sie die deploy()-Methode, um das Modell auf einem Inferenzendpunkt bereitzustellen.

Weitere Informationen zu den in den folgenden Beispielen verwendeten Klassen und Methoden finden Sie unter APIs in der Dokumentation zum SageMaker AI Python SDK.

So richten Sie Ihr Projekt ein
  1. Importieren Sie in Ihren Anwendungscode die erforderlichen Bibliotheken. Im folgenden Beispiel wird das SDK für Python (Boto3) importiert. Es werden außerdem die Module aus dem SageMaker AI Python SDK importiert, die Sie zum Definieren und Arbeiten mit Modellen verwenden:

    import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session
  2. Initialisieren Sie eine SageMaker-AI-Sitzung. Im folgenden Beispiel wird die Session()-Klasse verwendet:

    sagemaker_session = Session()
So definieren Sie Ihr Modell
  1. Erstellen Sie eine SchemaBuilder-Instance und stellen Sie Eingabe- und Ausgabebeispiele bereit. Sie stellen diese Instance der ModelBuilder-Klasse zur Verfügung, wenn Sie ein Modell definieren. Damit generiert SageMaker AI automatisch die Marshalling-Funktionen für die Serialisierung und Deserialisierung von Ein- und Ausgabe.

    Weitere Informationen zur Verwendung der SchemaBuilder- und ModelBuilder-Klassen finden Sie unter Erstellen eines Modells in Amazon SageMaker AI mit ModelBuilder.

    Im Folgenden finden Sie Beispiele für Eingabe- und Ausgabezeichenfolgen für die SchemaBuilder-Klasse.

    response = "Jupiter is the largest planet in the solar system. It is the fifth planet from the sun." sample_input = { "inputs": "What is the largest planet in the solar system?", "parameters": {"max_new_tokens": 128, "top_p": 0.9, "temperature": 0.6}, } sample_output = [{"generated_text": response}] schema_builder = SchemaBuilder(sample_input, sample_output)
  2. Definieren Sie Ihr Modell für SageMaker AI. Das folgende Beispiel legt die Parameter zum Initialisieren einer ModelBuilder-Instance fest:

    model_builder = ModelBuilder( model="jumpstart-model-id", schema_builder=schema_builder, sagemaker_session=sagemaker_session, role_arn=sagemaker_session.get_caller_identity_arn(), )

    In diesem Beispiel wird ein JumpStart-Modell verwendet. Ersetzen Sie jumpstart-model-id durch die ID eines JumpStart-Modells, z. B. meta-textgeneration-llama-3-70b.

So rufen Sie Benchmark-Metriken ab
  1. Um zu bestimmen, welche voroptimierte Konfiguration Sie bereitstellen möchten, schauen Sie sich die Optionen an, die SageMaker AI bietet. Das folgende Beispiel zeigt sie an:

    model_builder.display_benchmark_metrics()

    Diese display_benchmark_metrics()-Methode druckt eine Tabelle wie die folgende aus:

    | Instance Type | Config Name | Concurrent Users | Latency, TTFT (P50 in sec) | Throughput (P50 in tokens/sec/user) | |:----------------|:--------------|-------------------:|-----------------------------:|--------------------------------------:| | ml.g5.48xlarge | lmi-optimized | 1 | 2.25 | 49.70 | | ml.g5.48xlarge | lmi-optimized | 2 | 2.28 | 21.10 | | ml.g5.48xlarge | lmi-optimized | 4 | 2.37 | 14.10 | . . . | ml.p4d.24xlarge | lmi-optimized | 1 | 0.10 | 137.40 | | ml.p4d.24xlarge | lmi-optimized | 2 | 0.11 | 109.20 | | ml.p4d.24xlarge | lmi-optimized | 4 | 0.13 | 85.00 | . . .

    In der ersten Spalte sind in der Tabelle potenzielle Instance-Typen aufgeführt, die Sie zum Hosten des von Ihnen ausgewählten JumpStart-Modells verwenden können. Für jeden Instance-Typ werden unter Config Name die Namen der voroptimierten Konfigurationen aufgeführt. Die Konfigurationen, die SageMaker AI bereitstellt, heißen lmi-optimized. Für jeden Instance-Typ und jede Konfiguration enthält die Tabelle Benchmark-Metriken. Diese Metriken geben den Durchsatz und die Latenz an, die Ihr Modell für eine unterschiedliche Anzahl gleichzeitiger Benutzer unterstützt.

  2. Wählen Sie auf der Grundlage der Benchmark-Metriken den Instance-Typ und die Konfiguration aus, die Ihren Leistungsanforderungen am besten entsprechen. Sie werden diese Werte verwenden, wenn Sie eine Bereitstellungskonfiguration erstellen.

So stellen Sie ein voroptimiertes Modell bereit
  1. Erstellen Sie eine Bereitstellungskonfiguration. Im folgenden Beispiel wird eine ModelBuilder-Instance verwendet. Sie übergibt einen Instance-Typ und einen Konfigurationsnamen an die set_deployment_config()-Methode:

    model_builder.set_deployment_config( config_name="config-name", instance_type="instance-type", )

    Ersetzen Sie config-name durch einen Konfigurationsnamen aus der Tabelle, z. B. lmi-optimized. Ersetzen Sie instance-type durch einen Instance-Typ aus der Tabelle, z. B. ml.p4d.24xlarge.

  2. Erstellen Sie Ihr Modell. Im folgenden Beispiel wird die .build()-Methode der ModelBuilder-Instance verwendet:

    optimized_model = model_builder.build()

    Die .build()-Methode gibt eine bereitstellbare Model-Instance zurück.

  3. Stellen Sie Ihr Modell auf einem Inference-Endpunkt bereit. Im folgenden Beispiel wird die .deploy()-Methode der Model-Instance verwendet:

    predictor = optimized_model.deploy(accept_eula=True)

    Die deploy()-Methode gibt eine Predictor-Instance zurück, mit der Sie Inferenzanforderungen an das Modell senden können.

So testen Sie Ihr Modell mit einer Inferenzanforderung
  • Nachdem Sie Ihr Modell auf einem Inferenzendpunkt bereitgestellt haben, testen Sie die Prognosen des Modells. Im folgenden Beispiel wird mithilfe der Predictor-Instance eine Inferenzanforderung gesendet:

    predictor.predict(sample_input)

    Das Modell gibt den generierten Text mit einer Antwort wie der folgenden zurück:

    {'generated_text': ' Jupiter is the largest planet in the solar system. It is the fifth planet from the sun. It is a gas giant with . . .'}

Voroptimierte JumpStart-Modelle

Im Folgenden sind die JumpStart-Modelle mit voroptimierten Konfigurationen aufgeführt.

Meta
  • Llama 3.1 70B Instruct

  • Llama 3.1 70B

  • Llama 3.1 405B Instruct FP8

  • Llama 3.1 405B FP8

  • Llama 3 8B Instruct

  • Llama 3 8B

  • Llama 3 70B Instruct

  • Llama 3 70B

  • Llama 2 70B Chat

  • Llama 2 7B Chat

  • Llama 2 13B Chat

HuggingFace
  • Mixtral 8x7B Instruct

  • Mixtral 8x7B

  • Mistral 7B Instruct

  • Mistral 7B

Vorkompilierte JumpStart-Modelle

Für einige Modelle und Konfigurationen bietet SageMaker AI Modelle, die für bestimmte AWS-Inferentia- und AWS-Trainium-Instances vorkompiliert sind. Für diese Modelle ruft SageMaker AI die kompilierten Artefakte ab, wenn Sie einen Job zur Kompilierungsoptimierung erstellen und ml.inf2.48xlarge oder ml.trn1.32xlarge als Bereitstellungs-Instance-Typ wählen. Da der Job ein bereits kompiliertes Modell verwendet, wird er schnell abgeschlossen, ohne die Kompilierung von Grund auf neu ausführen zu müssen.

Im Folgenden sind die JumpStart-Modelle aufgeführt, für die SageMaker AI vorkompilierte Modelle bereitstellt:

Meta
  • Llama3 8B

  • Llama3 70B

  • Llama2 7B

  • Llama2 70B

  • Llama2 13B

  • Code Llama 7B

  • Code Llama 70B

HuggingFace
  • Mistral 7B