View a markdown version of this page

Holen Sie sich Empfehlungen für den Einsatz generativer KI-Inferenzen - 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.

Holen Sie sich Empfehlungen für den Einsatz generativer KI-Inferenzen

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

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

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

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

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, aValue, und ein optionales Feld angibtUnit. Zu den gängigen Statistiken gehören: average p50p90,p95,p99,max, undmin.

Ressourcen für Empfehlungen verwalten

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