

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
<a name="model-optimize-create-job"></a>

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](model-optimize.md#optimization-techniques).

**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. ](https://aws.amazon.com/sagemaker/pricing/)  
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](optimization-supported-models.md).

## Amazon Studio SageMaker
<a name="optimize-create-studio"></a>

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

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

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

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

     1. 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 Training.

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

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

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

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

     1. Wählen Sie eine der folgenden Optionen:

        **Bestehendes Modell verwenden ** — Wählen Sie diese Option, um ein Modell zu optimieren, das Sie bereits in SageMaker AI erstellt haben.

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

        **Aus 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.

     1. (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 Namen auf der Grundlage Ihrer Auswahl.

1. Auf der ** Jobseite „Inferenzoptimierung ** erstellen“ können Sie für den ** Auftragsnamen den Standardnamen akzeptieren**, den SageMaker AI zuweist. 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 auswählen, die benutzerdefiniertes Silizium verwendet, wie die AWS Inferentia-Instanz ml.inf2.8xlarge, wird die Methode Compilierung unterstützt, mit der Sie das Modell für diesen ** bestimmten Hardwaretyp ** kompilieren können.

1. 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, ob Sie das von AI bereitgestellte Entwurfsmodell verwenden möchten. SageMaker 
**Anmerkung**  
Wenn Sie das SageMaker AI-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 GPUs in der Instance, die Sie für den **Bereitstellungs-Instance-Typ** ausgewählt haben, gleichmäßig verteilen. Wählen Sie z. B. die Werte 2, 4 oder 8 aus, um Ihr Modell zu fragmentieren, wenn Sie eine Instance mit 8 GPUs verwenden.
   + Wenn Sie den ** Deployment-Instanztyp ** 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.

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

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

1. 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
<a name="set-advanced-optimization-options"></a>

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

**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 der SageMaker KI ermöglicht, Aufgaben in Ihrem Namen auszuführen. Bei der Modelloptimierung benötigt SageMaker KI Ihre Zustimmung, um:  
+ Eingabedaten aus einem S3-Bucket lesen
+ Modellartefakte in einen S3-Bucket schreiben
+ Schreiben Sie Protokolle in Amazon CloudWatch Logs
+ Veröffentlichen Sie Kennzahlen auf Amazon CloudWatch
Sie gewähren einer IAM-Rolle Berechtigungen für all diese Aufgaben.  
Weitere Informationen finden Sie unter [Wie benutzt man SageMaker KI-Ausführungsrollen](sagemaker-roles.md).

**KMS-Verschlüsselungsschlüssel**  
Eine Taste 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 [Gewähren Sie SageMaker KI-gehosteten Endpunkten Zugriff auf Ressourcen in Ihrer Amazon VPC](host-vpc.md).

**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.  
Sie müssen diese Option aktivieren, wenn Sie mit spekulativer Dekodierung optimieren und das SageMaker AI-Entwurfsmodell verwenden.  
Weitere Informationen zur Netzwerkisolierung finden Sie unter [Netzwerkisolierung](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation).

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 die SageMaker KI den Job. Verwenden Sie diese Option, um die Kosten zu begrenzen.

**Tags (Markierungen)**  
Key-value Paare, die dem Optimierungsjob zugeordnet sind.  
Weitere Informationen zu Tags finden Sie unter [Markieren Ihrer AWS -Ressourcen](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) im *Allgemeine AWS-Referenz*.

**Umgebungsvariablen**  
Key-value Paare, die die Umgebungsvariablen definieren, die im Modellcontainer festgelegt werden sollen.

## SageMaker AI-Python-SDK
<a name="optimize-create-pysdk"></a>

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 unter [ APIs ](https://sagemaker.readthedocs.io/en/stable/) in 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. Außerdem werden die Klassen aus dem SageMaker AI Python SDK importiert, die Sie zum Definieren und Arbeiten mit Modellen verwenden:

   ```
   import boto3
   from sagemaker.serve.model_builder import ModelBuilder
   from sagemaker.serve.builder.schema_builder import SchemaBuilder
   from sagemaker.core.helper.session_helper import Session
   from pathlib import Path
   ```

1. 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 die SageMaker KI automatisch die Marshalling-Funktionen zum Serialisieren und Deserialisieren der Eingabe und Ausgabe.

   Weitere Informationen zur Verwendung der `SchemaBuilder`- und `ModelBuilder`-Klassen finden Sie unter [Erstellen Sie ein Modell in Amazon SageMaker AI mit ModelBuilder](how-it-works-modelbuilder-creation.md).

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

1. 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-id}}`Ersetzen 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 AI-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](mkt-algo-model-internet-free.md#mkt-algo-model-internet-free-isolation).

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

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

   ```
   endpoint = model_builder.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 `Endpoint` Objekt zurück, mit dem Sie Inferenzanforderungen an den Endpunkt senden können, der das Modell hostet.

**Zur Optimierung mit spekulativer Dekodierung mithilfe des AI-Entwurfsmodells SageMaker**

Wenn Sie Ihr Modell mit spekulativer Dekodierung optimieren, können Sie wählen, ob Sie ein von der SageMaker KI bereitgestelltes Entwurfsmodell verwenden möchten, oder Sie können Ihr eigenes verwenden. In den folgenden Beispielen wird das SageMaker AI-Entwurfsmodell verwendet.
**Voraussetzung**  
Zur Optimierung mit spekulativer Dekodierung und dem SageMaker AI-Entwurfsmodell 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. Das folgende Beispiel legt den `ModelProvider` Schlüssel `SAGEMAKER` zur Verwendung des von SageMaker AI bereitgestellten Entwurfsmodells fest.

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

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

   ```
   endpoint = model_builder.deploy(accept_eula=True)
   ```

   Die `deploy()` Methode gibt ein `Endpoint` Objekt 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 Ihren benutzerdefinierten Modellentwurf 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](https://huggingface.co/docs/hub/en/security-tokens) in der Hugging-Face-Dokumentation.

   Weitere Informationen zur `huggingface_hub`-Bibliothek finden Sie unter [Hub-Client-Bibliothek](https://huggingface.co/docs/huggingface_hub/en/index) in der Hugging-Face-Dokumentation.

1. Um Ihr heruntergeladenes Modell für SageMaker AI 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.

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

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

   ```
   endpoint = model_builder.deploy(accept_eula=True)
   ```

   Die `deploy()` Methode gibt ein `Endpoint` Objekt zurück, mit dem Sie Inferenzanfragen 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-Instanz setzen, z. B. `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.

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

   ```
   endpoint = model_builder.deploy(accept_eula=True)
   ```

   Die `deploy()` Methode gibt ein `Endpoint` Objekt zurück, das Sie verwenden können, um Inferenzanforderungen an den Endpunkt zu senden, der das Modell hostet.

**So testen Sie Ihr Modell mit einer Inferenzanforderung**
+ Verwenden Sie die `invoke()` Methode des Objekts, um eine Testinferenzanforderung an Ihr bereitgestelltes Modell zu senden. `Endpoint` 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:

  ```
  import json
  
  response = endpoint.invoke(body=json.dumps(sample_input), content_type="application/json")
  result = json.loads(response.body.read().decode('utf-8'))
  ```

  Die Beispieleingabe enthält den Prompt: `"What is the largest planet in the solar system?"`. Die `invoke()`-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 . . .'}
  ```

## AWS SDK für Python (Boto3)
<a name="optimize-create-pysdk-boto"></a>

Sie können das AWS SDK für 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
+ Ein SageMaker KI-Modell erstellt (wenn ein vorhandenes Modell verwendet wurde)
+ Aufbereitete Trainingsdaten in S3 (für spekulative Decodierungsoptimierung, 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 großes Sprachmodell mithilfe der EAGLE-Technik zur spekulativen Dekodierung:

```
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: Erstellen Sie einen Optimierungsjob aus S3-Modellartefakten (Qwen3 32B) **

Dieses Beispiel zeigt, wie Sie einen Optimierungsjob mithilfe von Modellartefakten direkt aus S3 erstellen:

```
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: Optimierungsaufträge überwachen und verwalten **

Nachdem Sie einen Optimierungsjob erstellt haben, können Sie dessen 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 Job 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 AI hat keine Berechtigungen, sie zu entschlüsseln. Wenn Sie möchten, dass die Zwischendaten vor diesem Zeitraum entfernt werden, stellen Sie sicher, dass Ihr Auftrag abgeschlossen oder gestoppt wurde, und öffnen Sie dann einen Support-Fall [[https://docs.aws.amazon.com/awssupport/latest/user/case-management.html\#creating -a-support-case](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 des Optimierungsauftrags an.

## Einschränkungen des SageMaker KI-Entwurfsmodells
<a name="sm-draft-model-limitations"></a>

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.

  Die verfügbaren Container finden Sie unter [ Large Model Inference Containers ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#large-model-inference-containers) im GitHub Deep-Learning-Container-Repository.
+ Wenn Sie das JumpStart Modell feinabstimmen, verwenden Sie das Safetensors-Format für die Modellgewichte.

  Weitere Informationen zu diesem Format finden Sie unter [Safetensors](https://huggingface.co/docs/safetensors/en/index) 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 ](https://sagemaker.readthedocs.io/en/stable/api/sagemaker_train.html) 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](ssm-access.md).
+ 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 ](sagemaker/latest/APIReference/API_ProductionVariantCoreDumpConfig.html)
+ Das Modell auf Multimodell-Endpunkten, Endpunkten mit mehreren Containern oder Endpunkten bereitstellen, die Inferenzkomponenten hosten. 

  Weitere Informationen zu diesen Endpunkttypen finden Sie unter [Multi-model Endpunkte](multi-model-endpoints.md), [Multi-container Endpunkte](multi-container-endpoints.md) und [Inferenzkomponenten](realtime-endpoints-deploy-models.md#inference-components).
+ Ein Modellpaket für das Modell erstellen. Sie verwenden Modellpakete, um einsatzfähige Modelle zu erstellen, auf denen Sie veröffentlichen. AWS Marketplace

  Weitere Informationen über dieses Feature finden Sie unter [Erstellen einer Modellpaketressource](sagemaker-mkt-create-model-package.md).
+ 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](https://docs.djl.ai/master/docs/serving/serving/docs/lmi/deployment_guide/configurations.html#environment-variable-configurations) in der LMI-Container-Dokumentation.
+ allgemeine Umgebungsvariablen für Pakete, die der Hugging Face Hub in seinen Git-Repositorys bereitstellt. 

  Informationen zu den Repositorys finden Sie unter [ Hugging Face on. ](https://github.com/huggingface) GitHub
+ Allgemeine PyTorch und CUDA-Umgebungsvariablen. 

  Weitere Informationen zu diesen Variablen finden Sie [ in der PyTorch Dokumentation unter ](https://pytorch.org/docs/stable/torch_environment_variables.html) Torch-Umgebungsvariablen.