View a markdown version of this page

Datenerfassung für Rückschlüsse auf HyperPod - 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.

Datenerfassung für Rückschlüsse auf HyperPod

Mit der SageMaker HyperPod Amazon-Inferenzdatenerfassung können Sie Inferenzanforderungs- und Antwortdaten für die Modellüberwachung, das Debugging und die Modellverbesserung aufzeichnen. Inferenzanfragen werden vom SageMaker KI-Endpunkt an den Application Load Balancer und dann an den Modell-Pod weitergeleitet. Sie können die Erfassung auf jeder Ebene unabhängig aktivieren, von der äußersten Ebene (Tier 1, SageMaker KI-Endpunkt) bis zur tiefsten Ebene (Tier 3, Modell-Pod):

Ebenen der Datenerfassung
Stufe Erfassungspunkt Was wird erfasst Amazon S3-Pfad
Stufe 1 SageMaker KI-Endpunkt Eingabe- und Ausgabe-Payloads, Sampling, Verschlüsselung AWS KMS {s3Uri}/{hash}/sme/
Stufe 2 Application Load Balancer Zugriffsprotokolle (Anforderungspfade, Client-IPs, Latenzen) {s3Uri}/{hash}/alb/
Stufe 3 Pod modellieren Inferenzieren Sie Eingabe- und Ausgabe-Payloads mit konfigurierbaren Sampling-, Puffer- und Nutzlast-Größenbeschränkungen. Unterstützt AWS KMS Verschlüsselung, wenn Sie einen Schlüssel angeben. Erfasst Daten, die dem Modell am nächsten sind, um die größtmögliche Sichtbarkeit zu gewährleisten. {s3Uri}/{hash}/pod/

Tier 1 erfasst die gesamten Nutzlasten an der SageMaker AI-Runtime-API-Grenze und erfordert eine Endpunktregistrierung. Verwenden Sie Tier 1, wenn Sie Kompatibilität mit SageMaker AI Model Monitor benötigen. Tier 3 erfasst die gesamten Nutzlasten im Inferenzcontainer mit konfigurierbaren Puffer-, Sampling- und Nutzlastgrenzwerten und funktioniert ohne SageMaker KI-Endpunktregistrierung. Verwenden Sie Tier 3, wenn Sie die tiefste Sichtbarkeit benötigen, die dem Modell am nächsten kommt. Aktivieren Sie eine beliebige Kombination — jede Stufe erfasst die Daten an einem anderen Punkt im Anforderungsablauf.

Alle Stufen schreiben in Ihren Amazon S3-Bucket. Wenn Sie kein angebens3Uri, werden Daten standardmäßig im TLS-Zertifikat-Bucket unter einem /data-capture/ Präfix gespeichert. Innerhalb des Buckets erhält jede Bereitstellung einen eindeutigen Pfad, der auf einem Hash basiert, der aus dem Cluster-ARN, dem Namespace, dem CRD-Typ und dem Bereitstellungsnamen abgeleitet wird. Dieselbe Bereitstellung generiert immer dasselbe Präfix, sodass Datenerfassungsartefakte aus mehreren CRD-Übermittlungen, die auf dieselbe Bereitstellung abzielen, in denselben Amazon S3-Unterordner fließen.

Um die Datenerfassung für eine Ebene zu deaktivieren, setzen Sie das entsprechende enabled Feld auf false oder entfernen Sie den Abschnitt „Stufe“ aus Ihrer CRD. Um die gesamte Datenerfassung zu deaktivieren, entfernen Sie den dataCapture Abschnitt vollständig.

Konfiguration der Datenerfassung

Aktivieren Sie die Datenerfassung, indem Sie Ihrer InferenceEndpointConfig oder JumpStartModel CRD einen dataCapture Abschnitt hinzufügen. Der dataCapture Block enthält eine einzelne s3Uri (optionale) und eine oder mehrere Ebenenkonfigurationen. Das folgende Beispiel zeigt die Gesamtstruktur, bei der alle drei Ebenen aktiviert sind:

dataCapture: s3Uri: s3://my-capture-bucket/captures/ # Optional. Defaults to TLS bucket. sagemakerEndpoint: enabled: true # Tier 1 fields... loadBalancer: enabled: true modelPod: enabled: true # Tier 3 fields...
dataCapture.s3Uri(Optional, Zeichenfolge)

Die Amazon S3-URI, in der die erfassten Daten gespeichert werden. Wenn nicht angegeben, wird der TLS-Zertifikat-Bucket mit einem /data-capture/ Präfix verwendet. Maximale Länge: 512 Zeichen. Der Bucket muss sich im selben Konto wie der Cluster befinden.

Stufe 1: Erfassung von SageMaker KI-Endpunkten

Stufe 1 verwendet die native SageMaker KIDataCaptureConfig, um Inferenz-Eingabe- und Ausgabe-Payloads auf Endpunktebene zu erfassen. Dies ist der äußerste Erfassungspunkt und ist mit SageMaker AI Model Monitor für die automatische Überwachung der Datenqualität kompatibel. Weitere Informationen zur SageMaker KI-Datenerfassung finden Sie unter Erfassen von Daten von einem Echtzeit-Endpunkt.

sagemakerEndpoint: enabled: true initialSamplingPercentage: 100 kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id captureOptions: - captureMode: Input - captureMode: Output captureContentTypeHeader: jsonContentTypes: - application/json
sagemakerEndpoint.enabled(Erforderlich, boolesch)

Auf setzen, true um Tier 1-Capture zu aktivieren.

sagemakerEndpoint.initialSamplingPercentage(Optional, Ganzzahl, 0—100)

Prozentsatz der zu erfassenden Inferenzanfragen. Standard: 100 (alle Anfragen werden erfasst).

sagemakerEndpoint.captureOptions(Optional, Liste)

Gibt an, ob die Nutzlast für die Inferenzanforderung (Input), die Nutzlast der Inferenzantwort (Output) oder beides erfasst werden soll. Jedes Element hat ein captureMode Feld, das auf oder gesetzt ist. Input Output Standard: [Input, Output] (Sowohl Anfrage als auch Antwort werden erfasst). Maximum: 32 Artikel.

sagemakerEndpoint.kmsKeyId(Optional, Zeichenfolge)

ARN, Schlüssel-ID, Aliasname oder Alias-ARN eines AWS KMS Schlüssels zum Verschlüsseln erfasster Daten im Ruhezustand. Wenn angegeben, werden die erfassten Daten mit diesem Schlüssel verschlüsselt. Wenn dieser Wert weggelassen wird, werden die Daten mit den standardmäßigen Amazon S3-Bucket-Verschlüsselungseinstellungen verschlüsselt. Maximale Länge: 2048 Zeichen.

sagemakerEndpoint.captureContentTypeHeader (Optional)

Gibt an, wie der Inhaltstyp der erfassten Payloads interpretiert werden soll. Unterstützungen jsonContentTypes und csvContentTypes Arrays. Maximal: jeweils 10 Artikel.

Stufe 2: Erfassung durch den Load Balancer

Tier 2 ermöglicht ALB-Zugriffsprotokolle und erfasst Anforderungsmetadaten wie Client-IPs, Anforderungspfade und Latenzen.

loadBalancer: enabled: true
loadBalancer.enabled(Erforderlich, boolesch)

Auf setzen, true um Tier 2-Capture zu aktivieren.

Anmerkung

ALB-Zugriffsprotokolle erfassen Anforderungsmetadaten, einschließlich URLs und Abfrageparameter. Verwenden Sie POST-Anforderungstexte anstelle von Abfrageparametern für vertrauliche Eingaben. ALB-Protokolle unterstützen keine AWS KMS Verschlüsselung und verwenden nur die Amazon S3-Standardverschlüsselung.

Stufe 3: Erfassung des Modell-Pods

Stufe 3 erfasst die Nutzlasten der Inferenzeingabe und -ausgabe auf der Ebene des Modell-Pods und bietet so den umfassendsten Einblick in den Inferenzverkehr. Verwenden Sie diese Ebene, wenn Sie eine detaillierte Kontrolle über die Pufferung, die Größenbeschränkungen für die Nutzlast und die Erfassung benötigen, die dem Modell am nächsten kommt.

modelPod: enabled: true initialSamplingPercentage: 100 kmsKeyId: arn:aws:kms:us-east-2:123456789012:key/my-key-id captureOptions: - captureMode: Input - captureMode: Output bufferConfig: batchSize: 100 flushIntervalSeconds: 60 payloadConfig: maxPayloadSizeKB: 1024
modelPod.enabled(Erforderlich, boolesch)

Auf setzen, true um Tier 3-Capture zu aktivieren.

modelPod.initialSamplingPercentage(Optional, Ganzzahl, 0—100)

Prozentsatz der zu erfassenden Inferenzanfragen. Standard: 100 (alle Anfragen werden erfasst).

modelPod.captureOptions(Optional, Liste)

Gibt an, ob die Nutzlast für die Inferenzanforderung (Input), die Nutzlast der Inferenzantwort (Output) oder beides erfasst werden soll. Jedes Element hat ein captureMode Feld, das auf oder gesetzt ist. Input Output Standard: [Input, Output] (Sowohl Anfrage als auch Antwort werden erfasst). Maximum: 32 Artikel.

modelPod.kmsKeyId(Optional, Zeichenfolge)

ARN, Schlüssel-ID, Aliasname oder Alias-ARN eines AWS KMS Schlüssels zum Verschlüsseln erfasster Daten im Ruhezustand. Wenn angegeben, werden die erfassten Daten mit diesem Schlüssel verschlüsselt. Wenn dieser Wert weggelassen wird, werden die Daten mit den standardmäßigen Amazon S3-Bucket-Verschlüsselungseinstellungen verschlüsselt. Maximale Länge: 2048 Zeichen.

modelPod.bufferConfig.batchSize(Optional, Ganzzahl, 1—1000)

Anzahl der Inferenzanforderungen, die vor dem Leeren stapelweise ausgeführt werden müssen. Standard: 10.

modelPod.bufferConfig.flushIntervalSeconds(Optional, Integer, 10—300)

Maximale Zeit in Sekunden, für die ein Stapel aufbewahrt wird, bevor er geleert wird, unabhängig davon, ob die Batchgröße erreicht wurde. Standard: 60.

modelPod.payloadConfig.maxPayloadSizeKB (Optional, Ganzzahl)

Maximale Nutzdatengröße in KB pro Anfrage. Nutzlasten, die dieses Limit überschreiten, werden gekürzt. Wenn nicht gesetzt, wird die gesamte Nutzlast erfasst.

Addon aktualisieren

Voraussetzungen: Authentifizieren Sie sich und stellen Sie eine Verbindung zu Ihrem EKS-Cluster her

Authentifizieren Sie sich bei Ihrem AWS Konto. Bevor Sie eine Verbindung herstellen, erfassen Sie den Namen, die Region und den HyperPod Cluster-ARN des EKS-Clusters:

CLUSTER=EKS_CLUSTER_NAME REGION=REGION HP_ARN=HYPERPOD_CLUSTER_ARN

Stellen Sie eine Verbindung zu Ihrem EKS-Cluster her:

aws eks update-kubeconfig --region REGION --name EKS_CLUSTER_NAME

Aktualisieren Sie die Addon-Konfiguration:

VERSION=$(aws eks describe-addon --cluster-name $CLUSTER --addon-name amazon-sagemaker-hyperpod-inference --region $REGION --query 'addon.addonVersion' --output text) CURRENT_CONFIG=$(aws eks describe-addon --cluster-name $CLUSTER --addon-name amazon-sagemaker-hyperpod-inference --region $REGION --query 'addon.configurationValues' --output text) NEW_CONFIG=$(echo "$CURRENT_CONFIG" | jq --arg arn "$HP_ARN" '. + {hyperpodClusterArn: $arn}') aws eks update-addon \ --cluster-name $CLUSTER \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version "$VERSION" \ --configuration-values "$NEW_CONFIG" \ --resolve-conflicts OVERWRITE \ --region $REGION

Warten Sie, bis das Addon aktiv ist, und stellen Sie dann die Modelle bereit

Aktualisierung der Berechtigungen für bestehende Cluster

Um die Datenerfassung HyperPod in Ihren Inference-Bereitstellungen zu aktivieren, konfigurieren Sie die folgenden IAM-Berechtigungen.

  1. Rolle „Ausführung des Inferenz-Operators“

    Fügen Sie die folgende S3-Berechtigung hinzu:

    { "Sid": "DataCaptureS3Access", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }

    Fügen Sie Ihren Bucket-Namen hinzu, wenn Sie einen benutzerdefinierten S3-Bucket verwenden möchten.

    Wenn Sie einen vom Kunden verwalteten KMS-Schlüssel verwenden, fügen Sie außerdem Folgendes hinzu:

    { "Sid": "DataCaptureKmsAccess", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:*:*:key/*", "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::hyperpod-tls*" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }
  2. Rolle des S3-CSI-Treibers

    Fügen Sie die folgende S3-Berechtigung hinzu:

    { "Sid": "DataCaptureWriteAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }

    Wenn Sie einen vom Kunden verwalteten KMS-Schlüssel verwenden, fügen Sie außerdem Folgendes hinzu:

    { "Sid": "DataCaptureKmsAccess", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "arn:aws:kms:*:*:key/*", "Condition": { "StringLike": { "kms:ViaService": "s3.*.amazonaws.com" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }
  3. S3-Bucket-Richtlinie

    Fügen Sie diese Bucket-Richtlinie nur hinzu, wenn Sie die Load Balancer-Datenerfassung (Tier 2) aktivieren, damit ALB Zugriffsprotokolle schreiben kann. Ersetzen Sie $ACCOUNT_ID durch Ihre AWS Konto-ID.

    { "Sid": "AllowALBAccessLogDelivery", "Effect": "Allow", "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::hyperpod-tls*/data-capture/*", "Condition": { "StringEquals": { "aws:SourceAccount": "$ACCOUNT_ID" } } }

Bewährte Methoden

  • Wird verwendetinitialSamplingPercentage, um das Volumen der erfassten Daten zu kontrollieren. Beginnen Sie mit einem niedrigeren Prozentsatz der Produktion und erhöhen Sie ihn nach Bedarf.

  • Verwenden Sie payloadConfig.maxPayloadSizeKB (Tier 3), um die Größe der erfassten Nutzlasten zu begrenzen und die Speicherkosten zu kontrollieren.

  • Geben Sie einen kmsKeyId für Tier 1 und Tier 3 an, wenn Ihr Workload eine Verschlüsselung im Ruhezustand mit Ihrem eigenen AWS KMS Schlüssel erfordert.