Erstellen eines Jobs zur Inferenzoptimierung - 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.

Erstellen eines Jobs zur Inferenzoptimierung

Sie können einen Job zur Inferenzoptimierung mithilfe von Studio oder dem SageMaker AI Python SDK erstellen. Der Job optimiert Ihr Modell, indem er die von Ihnen ausgewählten Methoden anwendet. Weitere Informationen finden Sie unter Optimierungsmethoden.

Instance-Gebühren für Jobs zur Inferenzoptimierung

Wenn Sie einen Job zur Inferenzoptimierung erstellen, der Quantisierung oder Kompilierung anwendet, wählt SageMaker AI aus, welcher Instanztyp für die Ausführung des Jobs verwendet werden soll. Die Gebühren werden auf Grundlage der verwendeten Instance berechnet.

Die möglichen Instance-Typen und ihre Preisdetails finden Sie in den Preisinformationen zur Inferenzoptimierung auf der SageMaker Amazon-Preisseite.

Für Jobs, bei denen spekulative Dekodierung angewendet wird, fallen keine zusätzlichen Kosten an.

Informationen zu den unterstützten Modellen, die Sie optimieren können, finden Sie unter Referenz zu unterstützten Modellen.

Führen Sie die folgenden Schritte aus, um einen Job zur Inferenzoptimierung in Studio zu erstellen.

So beginnen Sie mit der Erstellung eines Optimierungsjobs
  1. Erstellen Sie in SageMaker AI Studio einen Optimierungsjob über einen der folgenden Pfade:

    • Gehen Sie wie folgt vor, um einen Job für ein JumpStart Modell zu erstellen:

      1. Wählen Sie im Navigationsmenü JumpStart.

      2. Wählen Sie auf der Seite Alle öffentlichen Modelle einen Modellanbieter und dann eines der Modelle aus, die die Optimierung unterstützen.

      3. Wählen Sie auf der Seite mit den Modelldetails die Option Optimieren aus. Diese Schaltfläche ist nur für Modelle aktiviert, die die Optimierung unterstützen.

      4. Auf der Jobseite „Inferenzoptimierung erstellen“ 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.

    • Gehen Sie wie folgt vor, um einen Job für ein fein abgestimmtes JumpStart Modell zu erstellen:

      1. Wählen Sie im Navigationsbereich unter Jobs die Option Training aus.

      2. Wählen Sie auf der Seite Trainingsjobs den Namen eines Jobs aus, den Sie zur Feinabstimmung eines JumpStart Modells verwendet haben. Diese Jobs haben in der Spalte Jobtyp den Typ JumpStart Ausbildung.

      3. Wählen Sie auf der Detailseite für den Trainingsjob die Option Optimieren aus.

    • Gehen Sie wie folgt vor, um einen Job für ein benutzerdefiniertes Modell zu erstellen:

      1. Wählen Sie im Navigationsmenü unter Jobs die Option Inferenzoptimierung aus.

      2. Wählen Sie Create new job (Neuen Auftrag anlegen) aus.

      3. Wählen Sie auf der Seite Job für Inferenzoptimierung erstellen die Option Modell hinzufügen aus.

      4. Wählen Sie im Fenster Modell hinzufügen die Option Benutzerdefiniertes Modell aus.

      5. Wählen Sie eine der folgenden Optionen:

        Verwenden Sie Ihr vorhandenes Modell — Wählen Sie diese Option, um ein Modell zu optimieren, das Sie bereits in SageMaker KI erstellt haben.

        Bestehender Modellname — geben Sie den Namen Ihres SageMaker KI-Modells ein.

        Von S3 — Wählen Sie diese Option, um Modellartefakte aus Amazon S3 bereitzustellen. Geben Sie unter S3-URI den URI für den Speicherort in Amazon S3 ein, an dem Sie Ihre Modellartefakte gespeichert haben.

      6. (Optional) Für den Namen des Ausgabemodells können Sie einen benutzerdefinierten Namen für das optimierte Modell eingeben, das der Job erstellt. Wenn Sie keinen Namen angeben, generiert Studio automatisch einen auf der Grundlage Ihrer Auswahl.

  2. Auf der Jobseite Inferenzoptimierung erstellen können Sie für Jobname den von SageMaker AI zugewiesenen Standardnamen akzeptieren. Wenn Sie jedoch einen benutzerdefinierten Jobnamen eingeben möchten, wählen Sie das Feld Jobname und anschließend Jobname eingeben aus.

So legen Sie die Optimierungskonfigurationen fest
  1. Wählen Sie unter Bereitstellungs-Instance-Typ den Instance-Typ aus, für den Sie das Modell optimieren möchten.

    Der Instance-Typ wirkt sich darauf aus, welche Optimierungsmethoden Sie auswählen können. Für die meisten Typen, die GPU-Hardware verwenden, werden Quantisierung und Spekulative Dekodierung unterstützt. Wenn Sie eine Instance wählen, die benutzerdefiniertes Silizium verwendet, wie die AWS Inferentia-Instanz ml.inf2.8xlarge, wird die Methode Compilation unterstützt, mit der Sie das Modell für diesen bestimmten Hardwaretyp kompilieren können.

  2. Wählen Sie eine oder mehrere der Optimierungsmethoden aus, die Studio bietet:

    • Wenn Sie Quantisierung auswählen, wählen Sie unter Präzisionsdatentyp einen Datentyp aus.

    • Wenn Sie Spekulative Dekodierung auswählen, wählen Sie eine der folgenden Optionen aus:

      • SageMaker KI-Entwurfsmodell verwenden — Wählen Sie aus, ob Sie das von AI bereitgestellte Entwurfsmodell verwenden möchten. SageMaker

        Anmerkung

        Wenn Sie das SageMaker KI-Entwurfsmodell verwenden möchten, müssen Sie auch die Netzwerkisolierung aktivieren. Studio bietet diese Option unter Sicherheit.

      • JumpStart Entwurfsmodell wählen — Wählen Sie ein Modell aus dem JumpStart Katalog aus, das Sie als Entwurfsmodell verwenden möchten.

      • Eigenes Entwurfsmodell wählen – Wählen Sie diese Option aus, um Ihr eigenes Entwurfsmodell zu verwenden, und geben Sie den S3-URI an, mit dem das Modell gefunden werden kann.

    • Wenn Sie Schnelles Laden des Modells wählen, zeigt Studio die Umgebungsvariable OPTION_TENSOR_PARALLEL_DEGREE an. Legen Sie im Feld Wert den Grad der Tensorparallelität fest. Der Wert muss die Anzahl der Instanzen, die Sie für GPUs den Instanztyp Deployment ausgewählt haben, gleichmäßig teilen. Um beispielsweise Ihr Modell zu teilen, während Sie eine Instanz mit 8 verwenden GPUs, verwenden Sie die Werte 2, 4 oder 8.

    • Wenn Sie den Instanztyp Deployment auf eine AWS Inferentia- oder AWS Trainium-Instanz festlegen, zeigt Studio möglicherweise an, dass Compilation die einzige unterstützte Option ist. In diesem Fall wählt Studio diese Option für Sie aus.

  3. Geben Sie unter Ausgabe den URI eines Speicherorts in Amazon S3 ein. Dort speichert SageMaker KI die Artefakte des optimierten Modells, das Ihr Job erstellt.

  4. (Optional) Erweitern Sie Erweiterte Optionen, um detaillierte Einstellungen wie IAM-Rolle, VPC und Umgebungsvariablen zu steuern. Weitere Informationen finden Sie nachstehend unter Erweiterte Optionen.

  5. Wenn Sie mit der Konfiguration des Jobs fertig sind, wählen Sie Job erstellen aus.

    In Studio wird die Seite mit den Jobdetails einschließlich des Status und aller zugehörigen Einstellungen angezeigt.

Erweiterte Optionen

Sie können die folgenden erweiterten Optionen festlegen, wenn Sie einen Job zur Inferenzoptimierung erstellen.

Unter Konfigurationen können Sie die folgenden Optionen festlegen:

Tensor-Parallelgrad

Ein Wert für den Grad der Tensorparallelität. Tensor-Parallelität ist eine Art von Modellparallelität, bei der bestimmte Modellgewichtungen, Steigungen und Optimierer-Zustände auf verschiedene Geräte aufgeteilt werden. Der Wert muss die Anzahl der GPUs in Ihrem Cluster gleichmäßig teilen.

Maximale Token-Länge

Die Höchstanzahl der Token, die vom Modell generiert werden sollen. Beachten Sie, dass das Modell möglicherweise nicht immer die maximale Anzahl von Token generiert.

Nebenläufigkeit

Die Fähigkeit, mehrere Instances eines Modells auf derselben zugrunde liegenden Hardware auszuführen. Verwenden Sie die Gleichzeitigkeit, um Prognosen für mehrere Benutzer bereitzustellen und die Hardwarenutzung zu maximieren.

Batch-Größe

Wenn Ihr Modell Batch-Inferencing durchführt, legen Sie anhand dieser Option die Größe der Batches fest, die Ihr Modell verarbeitet.

Beim Batch-Inferencing werden Modellprognosen anhand einer Reihe von Beobachtungen erstellt. Es ist eine gute Option für große Datensätze oder wenn Sie keine sofortige Antwort auf eine Inferenzanforderung benötigen.

Unter Sicherheit können Sie die folgenden Optionen festlegen:

IAM Role (IAM-Rolle)

Eine IAM-Rolle, die es SageMaker KI ermöglicht, Aufgaben in Ihrem Namen auszuführen. Während der Modelloptimierung benötigt SageMaker KI Ihre Erlaubnis, um:

  • Eingabedaten aus einem S3-Bucket lesen

  • Modellartefakte in einen S3-Bucket schreiben

  • Logs in Amazon CloudWatch Logs schreiben

  • Metriken auf Amazon veröffentlichen CloudWatch

Sie gewähren einer IAM-Rolle Berechtigungen für all diese Aufgaben.

Weitere Informationen finden Sie unter Wie verwendet man SageMaker AI-Ausführungsrollen.

KMS-Verschlüsselungsschlüssel

Ein Schlüssel in AWS Key Management Service (AWS KMS). SageMaker KI verwendet ihren Schlüssel, um die Artefakte des optimierten Modells zu verschlüsseln, wenn SageMaker KI das Modell auf Amazon S3 hochlädt.

VPC

SageMaker KI verwendet diese Informationen, um Netzwerkschnittstellen zu erstellen und sie an Ihre Modellcontainer anzuhängen. Die Netzwerkschnittstellen stellen Ihren Modellcontainern eine Netzwerkverbindung innerhalb Ihrer VPC zur Verfügung, die nicht mit dem Internet verbunden ist. Außerdem kann Ihr Modell auf diese Weise eine Verbindung zu Ressourcen in Ihrer privaten VPC herstellen.

Weitere Informationen finden Sie unter Geben Sie SageMaker KI-gehosteten Endpunkten Zugriff auf Ressourcen in Ihrer Amazon VPC.

Aktivieren der Netzwerkisolierung

Aktivieren Sie diese Option, wenn Sie den Internetzugang Ihres Containers einschränken möchten. Container, die mit Netzwerkisolierung ausgeführt werden, können keine ausgehenden Netzwerkaufrufe tätigen.

Anmerkung

Sie müssen diese Option aktivieren, wenn Sie mit spekulativer Dekodierung optimieren und das SageMaker KI-Entwurfsmodell verwenden.

Weitere Informationen zur Netzwerkisolierung finden Sie unter Netzwerkisolierung.

Unter Erweiterte Containerdefinition können Sie die folgenden Optionen festlegen:

Stoppen

Gibt an, wie lange ein Job ausgeführt werden kann. Wenn der Job das Zeitlimit erreicht, beendet SageMaker KI den Job. Verwenden Sie diese Option, um die Kosten zu begrenzen.

Tags (Markierungen)

Mit dem Optimierungsjob verknüpfte Schlüssel-Wert-Paare.

Weitere Informationen zu Tags finden Sie unter Markieren Ihrer AWS-Ressourcen im Allgemeine AWS-Referenz.

Umgebungsvariablen

Schlüssel-Wert-Paare, die die Umgebungsvariablen definieren, die im Modellcontainer festgelegt werden sollen.

Sie können einen Job zur Inferenzoptimierung erstellen, 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 optimize()-Methode, um einen Job auszuführen, der Ihr Modell durch Quantisierung, spekulative Dekodierung oder Kompilierung optimiert. Wenn der Job abgeschlossen ist, stellen Sie das Modell mithilfe der deploy()-Methode auf einem Inferenzendpunkt bereit.

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

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 importiert auch die Klassen aus dem SageMaker AI Python SDK, die Sie verwenden, um Modelle zu definieren und mit ihnen zu arbeiten:

    import boto3 from sagemaker.serve.builder.model_builder import ModelBuilder from sagemaker.serve.builder.schema_builder import SchemaBuilder from sagemaker.session import Session from pathlib import Path
  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 KI automatisch die Marshalling-Funktionen für die Serialisierung und Deserialisierung der Eingabe 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 KI. SageMaker 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. jumpstart-model-idErsetzen Sie es durch die ID eines JumpStart Modells, z. meta-textgeneration-llama-3-70b B.

    Anmerkung

    Wenn Sie mit spekulativer Dekodierung optimieren und den SageMaker KI-Entwurf verwenden möchten, müssen Sie die Netzwerkisolierung aktivieren. Geben Sie hierfür bei der Initialisierung einer ModelBuilder-Instance das folgende Argument an:

    enable_network_isolation=True,

    Weitere Informationen zur Netzwerkisolierung finden Sie unter Netzwerkisolierung.

So optimieren Sie Ihr Modell anhand von Quantisierung
  1. Um einen Quantisierungsjob auszuführen, verwenden Sie die optimize()-Methode und legen Sie das quantization_config-Argument fest. Im folgenden Beispiel wird OPTION_QUANTIZE als Umgebungsvariable im Optimierungscontainer festgelegt:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, quantization_config={ "OverrideEnvironment": { "OPTION_QUANTIZE": "awq", }, }, output_path="s3://output-path", )

    Ersetzen Sie in diesem Beispiel instance-type durch eine ML-Instance, wie ml.p4d.24xlarge. Ersetzen Sie s3://output-path durch den Pfad zum S3-Speicherort, an dem Sie das optimierte Modell speichern, das der Job erstellt.

    Die optimize()-Methode gibt ein Model-Objekt zurück, mit dem Sie Ihr Modell auf einem Endpunkt bereitstellen können.

  2. Wenn der Job abgeschlossen ist, stellen Sie das Modell bereit. Im folgenden Beispiel wird die deploy()-Methode angewendet:

    predictor = optimized_model.deploy( instance_type="instance-type", accept_eula=True, )

    Ersetzen Sie in diesem Beispiel instance-type durch eine ML-Instance, wie ml.p4d.24xlarge.

    Die deploy()-Methode gibt ein Prognoseobjekt zurück, mit dem Sie Inferenzanforderungen an den Endpunkt senden können, der das Modell hostet.

Um mit spekulativer Dekodierung unter Verwendung des KI-Entwurfsmodells zu optimieren SageMaker

Wenn Sie Ihr Modell mit spekulativer Dekodierung optimieren, können Sie wählen, ob Sie einen von SageMaker KI bereitgestellten Modellentwurf oder Ihr eigenes Modell verwenden möchten. In den folgenden Beispielen wird das SageMaker KI-Entwurfsmodell verwendet.

Voraussetzung

Um mit spekulativer Dekodierung und dem SageMaker KI-Entwurfsmodell zu optimieren, müssen Sie bei der Definition Ihres Modells die Netzwerkisolierung aktivieren.

  1. Um einen Job zur spekulativen Dekodierung auszuführen, verwenden Sie die optimize()-Methode und legen Sie das Argument speculative_decoding_config fest. Im folgenden Beispiel wird der ModelProvider Schlüssel SAGEMAKER zur Verwendung des von SageMaker KI bereitgestellten Entwurfsmodells festgelegt.

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelProvider": "SAGEMAKER", }, )

    Ersetzen Sie in diesem Beispiel instance-type durch eine ML-Instance, wie ml.p4d.24xlarge.

    Die optimize()-Methode gibt ein Model-Objekt zurück, mit dem Sie Ihr Modell auf einem Endpunkt bereitstellen können.

  2. Wenn der Job abgeschlossen ist, stellen Sie das Modell bereit. Im folgenden Beispiel wird die deploy()-Methode angewendet:

    predictor = optimized_model.deploy(accept_eula=True)

    Die deploy()-Methode gibt ein Prognoseobjekt zurück, mit dem Sie Inferenzanforderungen an den Endpunkt senden können, der das Modell hostet.

So optimieren Sie Ihr Modell anhand von spekulativer Dekodierung mithilfe eines benutzerdefinierten Entwurfsmodells

Bevor Sie Ihr benutzerdefiniertes Entwurfsmodell für SageMaker AI bereitstellen können, müssen Sie zunächst die Modellartefakte auf Amazon S3 hochladen.

Die folgenden Beispiele zeigen eine Möglichkeit, ein benutzerdefiniertes Entwurfsmodell bereitzustellen. Sie veranschaulichen, wie der Modellentwurf vom Hugging-Face-Hub heruntergeladen und in Amazon S3 hochgeladen wird und wie der S3-URI für das Argument speculative_decoding_config bereitgestellt wird.

  1. Wenn Sie ein Modell vom Hugging-Face-Hub herunterladen möchten, fügen Sie die huggingface_hub-Bibliothek zu Ihrem Projekt hinzu und laden Sie ein Modell mit der snapshot_download()-Methode herunter. Im folgenden Beispiel wird ein Modell in ein lokales Verzeichnis heruntergeladen:

    import huggingface_hub huggingface_hub.snapshot_download( repo_id="model-id", revision="main", local_dir=download-dir, token=hf-access-token, )

    Ersetzen Sie in diesem Beispiel model-id durch die ID eines Modells im Hugging-Face-Hub, wie z. B. meta-llama/Meta-Llama-3-8B. Ersetzen Sie download-dir durch ein lokales Verzeichnis. Ersetzen Sie hf-access-token durch Ihr Benutzerzugriffstoken. Informationen dazu, wie Sie Ihr Zugriffstoken erhalten, finden Sie unter Benutzerzugriffstoken in der Hugging-Face-Dokumentation.

    Weitere Informationen zur huggingface_hub-Bibliothek finden Sie unter Hub-Client-Bibliothek in der Hugging-Face-Dokumentation.

  2. Um Ihr heruntergeladenes Modell für SageMaker KI verfügbar zu machen, laden Sie es auf Amazon S3 hoch. Im folgenden Beispiel wird das Modell mit dem sagemaker_session-Objekt hochgeladen:

    custom_draft_model_uri = sagemaker_session.upload_data( path=hf_local_download_dir.as_posix(), bucket=sagemaker_session.default_bucket(), key_prefix="prefix", )

    Ersetzen Sie in diesem Beispiel prefix durch einen Qualifizierer, der Ihnen hilft, das Entwurfsmodell in S3 von anderen Modellen zu unterscheiden, z. B. spec-dec-custom-draft-model.

    Die upload_data()-Methode gibt den S3-URI für die Modellartefakte zurück.

  3. Um einen Job zur spekulativen Dekodierung auszuführen, verwenden Sie die optimize()-Methode und legen Sie das Argument speculative_decoding_config fest. Im folgenden Beispiel wird der ModelSource-Schlüssel auf den S3-URI des benutzerdefinierten Entwurfsmodells gesetzt:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, speculative_decoding_config={ "ModelSource": custom_draft_model_uri + "/", }, )

    Ersetzen Sie in diesem Beispiel instance-type durch eine ML-Instance, wie ml.p4d.24xlarge.

    Die optimize()-Methode gibt ein Model-Objekt zurück, mit dem Sie Ihr Modell auf einem Endpunkt bereitstellen können.

  4. Wenn der Job abgeschlossen ist, stellen Sie das Modell bereit. Im folgenden Beispiel wird die deploy()-Methode angewendet:

    predictor = optimized_model.deploy(accept_eula=True)

    Die deploy()-Methode gibt ein Prognoseobjekt zurück, mit dem Sie Inferenzanforderungen an den Endpunkt senden können, der das Modell hostet.

So optimieren Sie Ihr Modell anhand von Kompilierung
  1. Um einen Kompilierungsjob auszuführen, verwenden Sie die optimize()-Methode und legen Sie das compilation_config-Argument fest. Im folgenden Beispiel wird der OverrideEnvironment-Schlüssel verwendet, um die erforderlichen Umgebungsvariablen im Optimierungscontainer festzulegen:

    optimized_model = model_builder.optimize( instance_type="instance-type", accept_eula=True, compilation_config={ "OverrideEnvironment": { "OPTION_TENSOR_PARALLEL_DEGREE": "24", "OPTION_N_POSITIONS": "8192", "OPTION_DTYPE": "fp16", "OPTION_ROLLING_BATCH": "auto", "OPTION_MAX_ROLLING_BATCH_SIZE": "4", "OPTION_NEURON_OPTIMIZE_LEVEL": "2", } }, output_path="s3://output-path", )

    In diesem Beispiel wird instance-type auf einen ML-Instance-Typ mit beschleunigter Hardware gesetzt. Für eine beschleunigte Inferenz mit AWS Inferentia könnten Sie den Typ beispielsweise auf eine Inf2-Instance festlegen, wie z. ml.inf2.48xlarge Ersetzen Sie s3://output-path durch den Pfad zum S3-Speicherort, an dem Sie das optimierte Modell speichern, das der Job erstellt.

  2. Wenn der Job abgeschlossen ist, stellen Sie das Modell bereit. Im folgenden Beispiel wird die deploy()-Methode angewendet:

    predictor = optimized_model.deploy(accept_eula=True)

    Die deploy()-Methode gibt ein Prognoseobjekt zurück, mit dem Sie Inferenzanforderungen an den Endpunkt senden können, der das Modell hostet.

So testen Sie Ihr Modell mit einer Inferenzanforderung
  • Verwenden Sie die predict()-Methode eines Prognoseobjekts, um eine Test-Inferenzanforderung an Ihr bereitgestelltes Modell zu senden. Im folgenden Beispiel wird die sample_input-Variable übergeben, die auch an die SchemaBuilder-Klasse in den Beispielen übergeben wurde, um Ihr Modell zu definieren:

    predictor.predict(sample_input)

    Die Beispieleingabe enthält den Prompt: "What is the largest planet in the solar system?". Die predict()-Methode gibt die vom Modell generierte Antwort zurück, wie das folgende Beispiel zeigt:

    {'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 . . .'}

Sie können das AWS SDK for Python (Boto3) verwenden, um Aufträge zur Inferenzoptimierung programmgesteuert zu erstellen und zu verwalten. Dieser Abschnitt enthält Beispiele für verschiedene Optimierungstechniken.

Voraussetzungen

Bevor Sie einen Optimierungsjob mit Boto3 erstellen, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Konfigurierte AWS Anmeldeinformationen — Richten Sie Ihre AWS Anmeldeinformationen mit den entsprechenden Berechtigungen ein

  • Es wurde ein SageMaker KI-Modell erstellt (falls ein vorhandenes Modell verwendet wurde)

  • Aufbereitete Trainingsdaten in S3 (für spekulative Dekodierungsoptimierung, unterstützte Kontextlänge bis zu 4096)

  • IAM-Rolle mit den erforderlichen Berechtigungen — Ihre Ausführungsrolle muss über Berechtigungen verfügen, um auf S3 zuzugreifen und Ressourcen zu erstellen SageMaker

Beispiel: Erstellen Sie einen Optimierungsjob mit EAGLE Speculative Decoding (Llama 3.3 70B)

Dieses Beispiel zeigt die Erstellung eines Optimierungsjobs für ein umfangreiches Sprachmodell mithilfe der spekulativen Dekodierungstechnik von EAGLE:

import boto3 # Initialize SageMaker client sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Step 1: Create a SageMaker model (if not already created) model_response = sagemaker_client.create_model( ModelName='meta-llama-3-3-70b-instruct', ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', PrimaryContainer={ 'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>', 'ModelDataSource': { 'S3DataSource': { 'S3Uri': 's3://my-bucket/models/Llama-3.3-70B-Instruct/', 'S3DataType': 'S3Prefix', 'CompressionType': 'None' } }, 'Environment': { 'SAGEMAKER_ENV': '1', 'SAGEMAKER_MODEL_SERVER_TIMEOUT': '3600' } } ) # Step 2: Create optimization job with speculative decoding optimization_response = sagemaker_client.create_optimization_job( OptimizationJobName='llama-optim-job-eagle-speculative-decoding', RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', ModelSource={ 'SageMakerModel': { 'ModelName': 'meta-llama-3-3-70b-instruct' } }, DeploymentInstanceType='ml.p4d.24xlarge', # MaxInstanceCount specifies the maximum number of instances for distributed training MaxInstanceCount=4, OptimizationConfigs=[ { 'ModelSpeculativeDecodingConfig': { 'Technique': 'EAGLE', 'TrainingDataSource': { 'S3Uri': 's3://my-bucket/training_data/ultrachat_8k/', 'S3DataType': 'S3Prefix' } } } ], OutputConfig={ 'S3OutputLocation': 's3://my-bucket/optimized-models/llama-optim-output/', }, StoppingCondition={ 'MaxRuntimeInSeconds': 432000 # 5 days } ) print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")

Beispiel: Einen Optimierungsjob aus S3-Modellartefakten erstellen (Qwen3 32B)

Dieses Beispiel zeigt, wie ein Optimierungsjob mit Modellartefakten direkt aus S3 erstellt wird:

import boto3 sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Create model from S3 artifacts model_response = sagemaker_client.create_model( ModelName='qwen3-32b', ExecutionRoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', PrimaryContainer={ 'Image': '763104351884.dkr.ecr.us-west-2.amazonaws.com/djl-inference:<tag>', 'Mode': 'SingleModel', 'ModelDataSource': { 'S3DataSource': { 'S3Uri': 's3://my-bucket/models/qwen3-32b/', 'S3DataType': 'S3Prefix', 'CompressionType': 'None' } }, 'Environment': { 'AWS_REGION': 'us-west-2' } } ) # Create optimization job with smaller training dataset optimization_response = sagemaker_client.create_optimization_job( OptimizationJobName='qwen3-optim-job-eagle', RoleArn='arn:aws:iam::123456789012:role/SageMakerExecutionRole', ModelSource={ 'SageMakerModel': { 'ModelName': 'qwen3-32b' } }, DeploymentInstanceType='ml.g6.48xlarge', MaxInstanceCount=4, OptimizationConfigs=[ { 'ModelSpeculativeDecodingConfig': { 'Technique': 'EAGLE', 'TrainingDataSource': { 'S3Uri': 's3://my-bucket/training_data/ultrachat_1k/', 'S3DataType': 'S3Prefix' } } } ], OutputConfig={ 'S3OutputLocation': 's3://my-bucket/optimized-models/qwen3-optim-output/', }, StoppingCondition={ 'MaxRuntimeInSeconds': 432000 # 5 days } ) print(f"Optimization job ARN: {optimization_response['OptimizationJobArn']}")

Beispiel: Optimierungsjobs überwachen und verwalten

Nachdem Sie einen Optimierungsjob erstellt haben, können Sie seinen Fortschritt überwachen und ihn mit den folgenden Befehlen verwalten:

import boto3 sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') # Describe optimization job to check status describe_response = sagemaker_client.describe_optimization_job( OptimizationJobName='llama-optim-job-eagle-speculative-decoding' ) print(f"Job Status: {describe_response['OptimizationJobStatus']}") # List all optimization jobs (with pagination) list_response = sagemaker_client.list_optimization_jobs( MaxResults=10, SortBy='CreationTime', SortOrder='Descending' ) print("\nRecent optimization jobs:") for job in list_response['OptimizationJobSummaries']: print(f"- {job['OptimizationJobName']}: {job['OptimizationJobStatus']}") # Stop a running optimization job if needed # sagemaker_client.stop_optimization_job( # OptimizationJobName='llama-optim-job-eagle-speculative-decoding' # ) # Delete a completed or failed optimization job # sagemaker_client.delete_optimization_job( # OptimizationJobName='llama-optim-job-eagle-speculative-decoding' # )

Bei der spekulativen Dekodierung mit Eagle Heads werden vier aufeinanderfolgende Trainingsjobs ausgeführt. Jeder Job erzeugt eine Ausgabe, die als Eingabe für den nächsten dient. Nur die Ausgabe des endgültigen Jobs wird an Ihren S3-Bucket übermittelt. Die Zwischenausgaben werden verschlüsselt und bis zu 20 Tage in einem internen SageMaker KI-Service-Bucket gespeichert. SageMaker KI ist nicht berechtigt, sie zu entschlüsseln. Wenn Sie möchten, dass die Zwischendaten vor diesem Zeitraum entfernt werden, stellen Sie sicher, dass Ihr Job abgeschlossen oder gestoppt wurde, und öffnen Sie dann eine Support-Anfrage [https://docs.aws.amazon.com/awssupport/latest/user/case-management.html# creating-a-support-case], damit diese Daten gelöscht werden. Geben Sie in der Anfrage Ihre AWS Konto-ID und den ARN für den Optimierungsjob an.

Einschränkungen des SageMaker KI-Entwurfsmodells

Beachten Sie bei jedem Modell, das Sie mit dem SageMaker KI-Entwurfsmodell optimieren, die Anforderungen, Einschränkungen und unterstützten Umgebungsvariablen.

Voraussetzungen

Sie müssen die folgenden Schritte ausführen:

  • Verwenden Sie ein Modell, das von bereitgestellt wird SageMaker JumpStart.

  • Aktivieren Sie die Netzwerkisolierung für die Modellbereitstellung.

  • Wenn Sie das Modell in einem LMI-Container (Large Model Inference) bereitstellen, verwenden Sie einen DJLServing Container der Version 0.28.0 oder höher.

    Informationen zu den verfügbaren Containern finden Sie unter Large Model Inference Containers im Deep Learning Containers GitHub Container-Repository.

  • Verwenden Sie bei der Feinabstimmung des JumpStart Modells das Safetensors-Format für die Modellgewichte.

    Weitere Informationen zu diesem Format finden Sie unter Safetensors in der Hugging-Face-Dokumentation.

Einschränkungen

Sie haben nicht die folgenden Möglichkeiten:

  • Das Modell in lokalen Testumgebungen verwenden, die Sie im lokalen Modus erstellen.

    Weitere Informationen zum lokalen Modus finden Sie unter Lokaler Modus in der SageMaker AI Python SDK-Dokumentation.

  • Greifen Sie über den AWS Systems Manager Agenten (SSM-Agent) auf den Modellcontainer zu. Der SSM-Agent bietet Zugriff auf Shell-Ebene auf Ihren Modellcontainer, sodass Sie Prozesse debuggen und Befehle mit Amazon protokollieren können. CloudWatch

    Weitere Informationen über dieses Feature finden Sie unter Greifen Sie über SSM auf Container zu.

  • Den Modellcontainer für einen Core-Dump konfigurieren, der auftritt, wenn der Prozess abstürzt.

    Weitere Informationen zu Core-Dumps aus Modellcontainern finden Sie unter. ProductionVariantCoreDumpConfig

  • Das Modell auf Multimodell-Endpunkten, Endpunkten mit mehreren Containern oder Endpunkten bereitstellen, die Inferenzkomponenten hosten.

    Weitere Informationen zu diesen Endpunkttypen finden Sie unter Multimodell-Endpunkte, Endpunkte mit mehreren Containern und Inferenzkomponenten.

  • Ein Modellpaket für das Modell erstellen. Sie verwenden Modellpakete, um bereitstellbare Modelle zu erstellen, auf denen Sie veröffentlichen. AWS Marketplace

    Weitere Informationen über dieses Feature finden Sie unter Erstellen einer Modellpaketressource.

  • Ihren eigenen Inferenzcode im Modellcontainer verwenden.

  • Verwenden Sie eine requirements.txt-Datei im Modellcontainer. Dieser Dateityp listet Paketabhängigkeiten auf.

  • Den Hugging-Face-Parameter trust_remote_code aktivieren.

Unterstützte Umgebungsvariablen

Sie können den Container nur mit den folgenden Umgebungsvariablen konfigurieren:

  • allgemeine Umgebungsvariablen für Large Model Inference (LMI)-Container.

    Weitere Informationen zu diesen Variablen finden Sie unter Konfigurationen von Umgebungsvariablen in der LMI-Container-Dokumentation.

  • allgemeine Umgebungsvariablen für Pakete, die der Hugging Face Hub in seinen Git-Repositorys bereitstellt.

    Informationen zu den Repositorien finden Sie unter Hugging Face on. GitHub

  • Allgemeine PyTorch und CUDA-Umgebungsvariablen.

    Weitere Informationen zu diesen Variablen finden Sie in der PyTorch Dokumentation unter Torch-Umgebungsvariablen.