

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.

# Holen Sie sich Empfehlungen für den Einsatz generativer KI-Inferenzen
<a name="generative-ai-inference-recommendations-get-started"></a>

KI-Empfehlungsjobs analysieren Ihr Modell und Ihre Workload-Merkmale, um Bereitstellungskonfigurationen zu generieren, die für Kosten, Latenz oder Durchsatz optimiert sind. Der Service bewertet Instanztypen, wendet Optimierungen wie spekulative Dekodierung an und bewertet jede Konfiguration anhand einer realen GPU-Infrastruktur.

## Voraussetzungen
<a name="generative-ai-inference-recommendations-get-started-prereqs"></a>

Bevor Sie einen Empfehlungsjob erstellen, benötigen Sie Folgendes:
+ Modellieren Sie Artefakte, die in Amazon S3 im HuggingFace Checkpoint-Format mit SafeTensor Gewichten gespeichert sind
+ Ein Amazon S3 S3-Bucket für die Empfehlungsausgabe
+ Eine Ausführungsrolle für AWS Identity and Access Management (IAM), die SageMaker KI Zugriff auf Ihre Modellartefakte und Ihren Ausgabe-Bucket gewährt

## Schritt 1: Erstellen Sie einen Empfehlungsjob
<a name="generative-ai-inference-recommendations-get-started-create"></a>

Ein Empfehlungsjob analysiert Ihr Modell und generiert Bereitstellungsempfehlungen. Sie geben den Modellstandort, den Ausgabeort, die Workload-Konfiguration und ein Leistungsziel an.

**Python (Teil 3)**

```
response = client.create_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job",
    ModelSource={
        "S3": {
            "S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/",
        }
    },
    OutputConfig={
        "S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"
    },
    PerformanceTarget={
        "Constraints": [
            {"Metric": "ttft-ms"}
        ]
    },
    AIWorkloadConfigIdentifier="my-recommendation-workload",
    RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
)
print(response["AIRecommendationJobArn"])
```

**AWS CLI**

```
aws sagemaker create-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --model-source '{"S3": {"S3Uri": "s3://DOC-EXAMPLE-BUCKET/models/my-model/"}}' \
  --output-config '{"S3OutputLocation": "s3://DOC-EXAMPLE-BUCKET/recommendations/"}' \
  --performance-target '{"Constraints": [{"Metric": "ttft-ms"}]}' \
  --ai-workload-config-identifier "my-recommendation-workload" \
  --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \
  --region us-west-2
```

Sie können auch die folgenden optionalen-Parameter angeben:

`ComputeSpec`  
Beschränken Sie die auszuwertenden Instanztypen (maximal drei). Beispiel: `{"InstanceTypes": ["ml.g5.12xlarge", "ml.p4d.24xlarge"]}`

`OptimizeModel`  
Wird auf gesetzt, `true` um Modelloptimierungen wie spekulative Dekodierung zuzulassen.

`InferenceSpecification`  
Geben Sie das Inferenz-Framework an. Zulässige Werte: `LMI`, `VLLM`.

## Schritt 2: Auftragsstatus überwachen
<a name="generative-ai-inference-recommendations-get-started-monitor"></a>

Fragen Sie den Auftragsstatus ab, bis er einen Terminalstatus erreicht.

**Python (Teil 3)**

```
import time

while True:
    response = client.describe_ai_recommendation_job(
        AIRecommendationJobName="my-recommendation-job"
    )
    status = response["AIRecommendationJobStatus"]
    print(f"Status: {status}")
    if status in ("Completed", "Failed", "Stopped"):
        break
    time.sleep(30)
```

**AWS CLI**

```
aws sagemaker describe-ai-recommendation-job \
  --ai-recommendation-job-name "my-recommendation-job" \
  --region us-west-2
```

## Schritt 3: Empfehlungen überprüfen
<a name="generative-ai-inference-recommendations-get-started-results"></a>

Wenn der Job abgeschlossen ist, enthält die Describe-Antwort ein `Recommendations` Array. Jede Empfehlung enthält eine einsatzbereite Konfiguration mit den folgenden Informationen:

`DeploymentConfiguration`  
Container-Image-URI, Instanztyp, Anzahl der Instanzen und Umgebungsvariablen. Sie können diese Konfiguration verwenden, um die Bereitstellung direkt auf einem SageMaker KI-Endpunkt durchzuführen.

`ExpectedPerformance`  
Validierte Leistungskennzahlen wie Time to First Token (TTFT), Anforderungslatenz bei P90 und P99, Durchsatz in Token pro Sekunde und Anforderungsdurchsatz.

`OptimizationDetails`  
Angewandte Optimierungstechniken wie spekulative Dekodierung oder Kernel-Tuning mit ihren Konfigurationsparametern.

Die folgenden Optimierungstechniken können angewendet werden:

Spekulative Dekodierung  
Die spekulative Dekodierung beschleunigt die Textgenerierung, indem mehrere Token parallel statt eines Tokens gleichzeitig verarbeitet werden. Ein leichter Spekulant schlägt mehrere Kandidaten-Tokens in einem einzigen Schritt vor, und das Primärmodell verifiziert sie dann gemeinsam in einem Forward-Durchgang, wobei die Kandidaten, die mit der eigenen Verteilung einverstanden sind, beibehalten werden und der Rest verworfen wird. Der Spekulant ist darin geschult, sich an der Datenverteilung des Primärmodells auszurichten, sodass mehr seiner Vorschläge akzeptiert werden, was sich direkt in nützlicheren Tokens niederschlägt, die pro Forward-Pass generiert werden. Die Output-Verteilung des Primärmodells wird beibehalten, sodass die Qualität der Antworten unverändert bleibt. Das Ergebnis sind höhere Ausgabetokens pro Sekunde und eine geringere Inter-Token-Latenz (ITL), wodurch Ihre Durchsatzmetriken verbessert werden.

Kernel-Tuning  
Die Kerneloptimierung beginnt mit der Analyse des Modellausführungsdiagramms, um leistungskritische Kernel zu identifizieren, die sich gut für die Optimierung eignen, wie z. B. Attention-Kernel und Fused Operator-Kernel. Ihre Start- und Tiling-Parameter werden dann so abgestimmt, dass die Implementierung besser auf die Ziel-GPU-Hardware und das erwartete Datenverkehrsmuster, wie z. B. Parallelität, abgestimmt ist. Diese Parameter wirken sich auf die Wiederverwendung des Speichers, die Cache-Lokalität und die Parallelität aus und verbessern so die Ausführungseffizienz. Die Anzahl der Pipeline-Stufen, die für das Laden von Daten und die Berechnung verwendet werden, wird ebenfalls angepasst, sodass Speicherbewegungen und Berechnungen überlagert werden. Durch die Optimierung dieser Parameter für die spezifische Kombination aus Modell, Hardware und ausgelieferter Arbeitslast verbessert das Kernel-Tuning den Durchsatz und die Latenz, indem sichergestellt wird, dass die GPU voll ausgelastet wird.

Die folgenden Leistungszielmetriken sind verfügbar:

`ttft-ms`  
Zeit bis zum ersten Token in Millisekunden.

`throughput`  
Tokens pro Sekunde.

`cost`  
Kosten pro Stunde der Bereitstellungskonfiguration.

Jede Metrik in der `ExpectedPerformance` Antwort enthält ein `Stat` Feld, das die statistische Kennzahl, a`Value`, und ein optionales Feld angibt`Unit`. Zu den gängigen Statistiken gehören: `average` `p50``p90`,`p95`,`p99`,`max`, und`min`.

## Ressourcen für Empfehlungen verwalten
<a name="generative-ai-inference-recommendations-get-started-manage"></a>

Verwenden Sie die folgenden Operationen, um Ihre Empfehlungsjobs und Workload-Konfigurationen zu verwalten.

```
# List recommendation jobs
response = client.list_ai_recommendation_jobs(MaxResults=10)
for job in response["AIRecommendationJobs"]:
    print(f"{job['AIRecommendationJobName']} - {job['AIRecommendationJobStatus']}")

# Stop a running job
client.stop_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job"
)

# Delete a job (must be in a terminal state)
client.delete_ai_recommendation_job(
    AIRecommendationJobName="my-recommendation-job"
)

# List workload configurations
response = client.list_ai_workload_configs(MaxResults=10)
for config in response["AIWorkloadConfigs"]:
    print(f"{config['AIWorkloadConfigName']} - {config['AIWorkloadConfigArn']}")

# Delete a workload configuration
client.delete_ai_workload_config(
    AIWorkloadConfigName="my-recommendation-workload"
)
```