View a markdown version of this page

Inference Gateway für Amazon Inference SageMaker 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.

Inference Gateway für Amazon Inference SageMaker HyperPod

Das Amazon SageMaker HyperPod Inference Gateway ist eine Kubernetes-native auf Large Language Model (LLM) basierende Routing- und Orchestrierungsschicht für Cluster auf Amazon EKS. HyperPod Es prüft Inferenzanforderungen, liest den Modellnamen aus jeder Anfrage und wählt auf der Grundlage der GPU-Last einen Pod für die Modellbereitstellung aus, sodass der Datenverkehr mehrerer Modelle effizient über einen einzigen Gateway-Endpunkt geleitet wird.

Das Gateway leitet jede Anfrage durch drei Ebenen weiter. Der Body-Based Router (BBR), eine gemeinsam genutzte Komponente, liest das model Feld aus dem Anforderungstext, löst den Namen eines LoRa-Adapters in sein Basismodell auf und legt die X-Gateway-Model-Name UND-Header fest. X-Gateway-Base-Model-Name Das Gateway ordnet diese Header dann einer HttpRoute zu und leitet die Anfrage an das für das angeforderte Modell weiter. InferencePool Innerhalb dieses Pools wählt der Endpoint Picker (EPP/scheduler) einen Pod aus, der das Modell bereitstellt, indem er Kandidaten anhand von Modell-Server-Metriken wie Warteschlangentiefe und KV-Cache-Auslastung sowie Präfix-Cache- und LoRa-Adapter-Affinität bewertet. Jeder Eintrag, den Sie unter definieren, spec.schedulers führt seinen eigenen Endpoint Picker aus, daher werden in diesem Thema die Begriffe Endpoint Picker, EPP und Scheduler synonym verwendet.

Das Inference Gateway baut auf dem Inference Operator auf, anstatt ihn zu ersetzen HyperPod . Während der Operator die Modellbereitstellung weiter orchestriert, führt das Gateway eine LLM-aware Routing-Ebene vor den Pods ein, die das Modell bereitstellen. Das Gateway ist nicht von einem bestimmten Modellserver oder einer bestimmten Orchestrierungsebene abhängig und wird über das HyperPod Inference Amazon EKS-Add-on bereitgestellt.

Sie definieren ein Gateway mit der InferenceGatewayConfig benutzerdefinierten Ressource. Eine Single InferenceGatewayConfig beschreibt ein Gateway: den gemeinsam genutzten Body-Based Router, die TLS-Terminierung, die Anforderungsauthentifizierung und einen Scheduler für jedes Modell, das das Gateway bedient. Das vollständige Schema finden Sie unterInferenceGatewayConfig CRD-Referenz.

Wichtig

Vom Inference Gateway erstellte Endpunkte verfügen standardmäßig über keine Authentifizierung oder Autorisierung auf Anforderungsebene. Sofern Sie es nicht spec.auth.jwt auf dem konfigurierenInferenceGatewayConfig, akzeptiert das Gateway jede Anfrage, die es erreicht. Der Zugriff wird nur durch Ihre VPC und Netzwerksteuerungen eingeschränkt. Wir empfehlen dringend, die JWT-Authentifizierung auf jedem Gateway zu aktivieren. Informationen zur Konfiguration der Authentifizierung finden Sie unter Voraussetzungen und Bereitstellung und spec.auth unterSpezifikationsfelder.

Voraussetzungen und Bereitstellung

Das Inference Gateway wird als Teil des HyperPod Inference Amazon EKS-Add-ons geliefert. Durch die Installation des Add-ons ist das Gateway verfügbar, sodass keine separate Installation erforderlich ist. Anschließend aktivieren Sie das Gateway-Routing für ein Modell über das spec.inferenceGateway.enabled Feld in der InferenceEndpointConfig Ressource des Modells. Die Version, in der eine Funktion eingeführt wurde, finden Sie unterVersionshinweise SageMaker HyperPod zu Amazon Inference.

Bevor Sie den Verkehr durch das Gateway leiten, überprüfen Sie Folgendes:

Pods für Model-Serving bereitgestellt

Jeder Scheduler leitet an Pods zur Modellbereitstellung weiter, die von einem Label-Selector ausgewählt wurden. Stellen Sie Ihre Modelle mit dem HyperPod Inferenzoperator bereit und notieren Sie sich die Labels, die auf ihre Pods angewendet wurden, damit Sie sie in der Gateway-Konfiguration referenzieren können. Führen Sie den folgenden Befehl aus, um die Labels auf Ihren Modell-Pods aufzulisten:

kubectl get pods -n NAMESPACE --show-labels
Versionen des Modellservers

Das Inference Gateway benötigt vLLM v0.9.2 oder höher und sGLang v0.3.5.post1 oder höher. In früheren vLLM-Versionen wird die KV-Cache-Metrik unter einem anderen Namen veröffentlicht als dem, den das Gateway liest. Anfragen werden weiterhin mit den verbleibenden Signalen weitergeleitet, aber die KV-Cache-Nutzung wird ignoriert und es wird kein Fehler gemeldet. Frühere SGLang-Versionen unterstützen das --enable-metrics Flag nicht und der Container kann nicht gestartet werden. Starten Sie sgLang mit diesem Flag, damit das Gateway die Metriken lesen kann, die es für Routing-Entscheidungen benötigt.

Add-on Version

Das Inference Gateway ist ab v2.0.0-eksbuild.2 der Version des Amazon SageMaker HyperPod Inference-Add-ons verfügbar. Installieren Sie das Add-on oder aktualisieren Sie es auf die neueste verfügbare Version. Wenn Ihr Cluster die InferenceGatewayConfig Ressource nicht erkennt, wird auf dem Add-on eine frühere Version ausgeführt, die das Gateway nicht enthält.

Cluster-Abhängigkeiten
  • cert-manager muss auf dem Cluster für den TLS-Pfad zur automatischen Ausgabe installiert sein, den das Gateway verwendet, wenn er ohne einen festgelegt spec.tls ist. acmArn

  • Der Load AWS Balancer Controller muss für den Endpunkttyp Application Load Balancer installiert sein.

  • Das Gateway verwendet den Namespace. hyperpod-inference-system

TLS-Zertifikat

Um HTTPS am Gateway zu beenden, geben Sie entweder einen vorhandenen ACM-Zertifikat-ARN an oder lassen Sie das Gateway automatisch ein Zertifikat ausstellen. Auto-issue verwendet den Cert-Manager und importiert das Zertifikat in ACM. Für diesen Ablauf muss die Operator-Ausführungsrolle über IRSA über die acm:DeleteCertificate Berechtigungen acm:ImportCertificateacm:AddTagsToCertificate,acm:DescribeCertificate, und verfügen.

Authentifizierung anfordern (empfohlen)

Wir empfehlen dringend, die JWT-Authentifizierung auf jedem Gateway zu aktivieren, indem Sie die InferenceGatewayConfig Einstellung spec.auth.jwt auf. Wenn nicht spec.auth angegeben, hat das Gateway keine Authentifizierung auf Anforderungsebene und der Zugriff wird nur durch Ihre VPC und Netzwerksteuerungen eingeschränkt. Um die JWT-Authentifizierung zu aktivieren, müssen Sie Folgendes bereithalten, bevor Sie Folgendes erstellenInferenceGatewayConfig: eine OIDC-Aussteller-URL, den HTTPS-JWKS-Endpunkt, der die Signaturschlüssel des Ausstellers veröffentlicht, und die Zielgruppenwerte (oder erforderlichen Ansprüche), die Token für dieses Gateway enthalten müssen. Das vollständige Schema finden Sie unter. spec.auth Spezifikationsfelder

Richten Sie die IAM-Rolle des Zertifikatsausstellers ein

Wenn das Gateway automatisch ein TLS-Zertifikat ausstellt, generiert cert-manager das Zertifikat im Cluster und der Gateway-Controller importiert es in ACM. Da der Import ein AWS API-Aufruf ist, benötigt der Controller Anmeldeinformationen. AWS Stellen Sie sie bereit, indem Sie eine IAM-Rolle erstellen, die das inference-gateway-controller Dienstkonto im hyperpod-inference-system Namespace über IAM-Rollen für Dienstkonten (IRSA) übernimmt.

Wichtig

Die automatische TLS-Ausgabe ist standardmäßig aktiviert, und der Gateway-Controller liest diese Rolle, wenn er gestartet wird. Erstellen Sie die Rolle, bevor Sie das Add-on installieren.

Legen Sie die folgenden Umgebungsvariablen fest und rufen Sie den OIDC-Aussteller für Ihren Cluster ab.

export CLUSTER=EKS_CLUSTER_NAME export REGION=REGION export ACCOUNT=AWS_ACCOUNT_ID export ROLE_NAME=CERT_ISSUER_ROLE_NAME export OIDC_ID=$(aws eks describe-cluster --name $CLUSTER --region $REGION \ --query 'cluster.identity.oidc.issuer' --output text | sed 's|https://||')

Erstellen Sie eine Vertrauensrichtlinie, die es dem Gateway Controller-Dienstkonto ermöglicht, die Rolle zu übernehmen.

cat > trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${ACCOUNT}:oidc-provider/${OIDC_ID}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_ID}:sub": "system:serviceaccount:hyperpod-inference-system:inference-gateway-controller", "${OIDC_ID}:aud": "sts.amazonaws.com" } } }] } EOF

Erstellen Sie die Rolle und fügen Sie die AmazonSageMakerHyperPodInferenceGatewayAccess verwaltete Richtlinie hinzu. Die Richtlinie gewährt die ACM-Berechtigungen, die der Controller benötigt, um die von ihm erstellten Zertifikate zu importieren, zu kennzeichnen, zu beschreiben und zu löschen.

aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://trust-policy.json aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodInferenceGatewayAccess

Geben Sie diesen Rollen-ARN wie inferenceGateway.serviceAccount.roleArn bei der Installation des Add-ons an.

Anmerkung

Wenn die Rolle bereits in einem anderen Cluster existiert, stellen Sie sicher, dass die Vertrauensrichtlinie den OIDC-Anbieter für diesen Cluster einschließt.

Installieren Sie das Add-on

Das HyperPod Inferenz-Add-on installiert sowohl den Inference Operator als auch das Inference Gateway. Installieren Sie es mit dem folgenden Befehl. Verwenden Sie inferenceGateway.serviceAccount.roleArn z. B. die Rolle des Zertifikatsausstellers, die Sie im vorherigen Abschnitt erstellt haben. Ersetzen Sie die verbleibenden Platzhalterwerte durch die Rollen und den Bucket für Ihr Konto.

aws eks create-addon \ --cluster-name $CLUSTER --region $REGION \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v2.0.0-eksbuild.2 \ --configuration-values '{ "executionRoleArn": "arn:aws:iam::<ACCOUNT>:role/<EXEC_ROLE>", "tlsCertificateS3Bucket": "<TLS_BUCKET>", "inferenceOperator": { "enabled": true }, "inferenceGateway": { "enabled": true, "serviceAccount": { "roleArn": "arn:aws:iam::<ACCOUNT>:role/<CERT_ISSUER_ROLE_NAME>" } }, "keda": { "enabled": true, "auth": { "aws": { "irsa": { "enabled": true, "roleArn": "arn:aws:iam::<ACCOUNT>:role/<KEDA_IRSA_ROLE>" } } } }, "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "arn:aws:iam::<ACCOUNT>:role/<ALB_IRSA_ROLE>" } }, "jumpstartGatedModelDownloadRoleArn": "arn:aws:iam::<ACCOUNT>:role/<JUMPSTART_ROLE>" }'

Wenn das Add-on bereits auf dem Cluster installiert ist, create-addon ersetzen Sie es durch update-addon und fügen Sie --resolve-conflicts OVERWRITE es hinzu. Der Rest des Befehls ist unverändert. OVERWRITEwendet die Konfigurationswerte im Befehl auf die bestehende Zusatzkonfiguration an.

Vergewissern Sie sich, dass der Gateway-Controller läuft und dass die Gateway-Ressourcen registriert sind.

kubectl rollout status deploy/inference-gateway-controller \ -n hyperpod-inference-system --timeout=150s kubectl get crd inferencegatewayconfigs.inference.sagemaker.aws.amazon.com kubectl get gatewayclass inference-gateway

Vergewissern Sie sich, dass das Add-on selbst aktiv ist und keine Systemprobleme meldet.

aws eks describe-addon \ --cluster-name $CLUSTER --region $REGION \ --addon-name amazon-sagemaker-hyperpod-inference \ --query 'addon.{version:addonVersion,status:status,health:health.issues}'

Integration mit dem HyperPod Inferenzoperator

Der HyperPod Inferenzoperator und das Inferenz-Gateway haben unterschiedliche Verantwortlichkeiten. Der Betreiber ist für die Modellbereitstellung, die Orchestrierung und die Verkabelung verantwortlich, die ein Modell mit dem Gateway verbindet. Das Gateway ist für das Anforderungsrouting zuständig und generiert die Routing-Ressourcen für jeden Scheduler. Weitere Hinweise zur Bereitstellung von Modellen mit dem Operator finden Sie unterModelle auf Amazon bereitstellen SageMaker HyperPod.

HyperPod Inferenz-Operator

Stimmt die benutzerdefinierten Ressourcen InferenceEndpointConfig und JumpStartModel (Gruppeinference.sagemaker.aws.amazon.com, Versionv1) des Modells ab. Der Operator erstellt das Modell Deployment and Service, den Application Load Balancer, KEDA Autoscaling, das Cert-Manager-Zertifikat und die AI-Endpunktregistrierung. SageMaker Wenn das Gateway für ein Modell aktiviert ist, verbindet der Operator dieses Modell auch mit dem Gateway.

Inferenz-Gateway

Besitzt das Anforderungsrouting vom Body-Based Router über das Gateway und HttpRoute zum Endpoint Picker und generiert die Downstream-Routing-Ressourcen für jeden Scheduler: die Endpoint Picker-KonfigurationInferencePool, HttpRoute und. EnvoyExtensionPolicy

Anmerkung

Die benutzerdefinierten Ressourcen des Operatormodells verwenden Versionv1, während die Ressource des Gateways Version verwendet. InferenceGatewayConfig v1alpha1 Beide gehören zur inference.sagemaker.aws.amazon.com Gruppe.

Sie fügen dem Gateway über den Operator ein Modell auf der Ressource InferenceEndpointConfig (oderJumpStartModel) des Modells hinzu und verwenden dazu das spec.inferenceGateway Feld:

spec.inferenceGateway.enabled(Optional, boolesch)

Ob dieses Modell an das Gateway angeschlossen ist. Standard: false.

spec.inferenceGateway.name(Optional, Zeichenfolge)

Der Name der InferenceGatewayConfig Ressource, an die angehängt werden soll. Modelle, die einen Namen und einen Namespace gemeinsam haben, teilen sich ein Gateway. Wenn dieses Feld leer ist, generiert der Operator einen Namen für das Formularinf-igw-<uuid>.

Der folgende Ausschnitt zeigt das inferenceGateway Opt-In für eine Ressource. InferenceEndpointConfig

apiVersion: inference.sagemaker.aws.amazon.com/v1 kind: InferenceEndpointConfig metadata: name: my-model spec: # ... model deployment fields ... inferenceGateway: enabled: true name: my-gateway # Optional. When empty, the operator generates inf-igw-<uuid>.

Der Operator spiegelt den Status des Anhangs auf der Modellressource widerstatus.inferenceGateway, unter der die Werte „Von“ PendingReady, „oder“ und „Statedes Failed angehängten Objekts“ gemeldet Name werden. InferenceGatewayConfig Sie können nicht inferenceGateway.enabled zusammen mit intelligentRoutingSpec.enabled auf demselben Modell setzen; diese Felder schließen sich gegenseitig aus.

Wenn das Gateway für ein Modell aktiviert ist, erstellt oder aktualisiert der Operator eine einzelne InferenceGatewayConfig Ressource und fügt einen Eintrag für das Modell mit seiner spec.schedulers Liste zusammen. Der Operator legt den Schedulername, modelNametargetPort, und und als Standardeinstellung festmodelSelector, llm-d wenn der scheduler Eintrag zum ersten Mal erstellt wird. Bei späteren Abstimmungen behält der Operator vom Kunden eingegebene Werte wie, und bei. scheduler weights loraAdapters Der Body-Based Router wird automatisch aktiviert, wenn mehr als ein Scheduler vorhanden ist.

Der Operator löscht weder die InferenceGatewayConfig Ressource noch die Downstream-Routing-Ressourcen. Wenn Sie das Gateway für ein Modell deaktivieren oder das Modell löschen, entfernt der Operator nur den Scheduler-Eintrag dieses Modells. Der Gateway-Controller ist für die Bereinigung der Routing-Ressourcen zuständig.

Sie können eine InferenceGatewayConfig auf zwei Arten erstellen, und die beiden Pfade existieren gleichzeitig auf derselben Ressource:

  • Aktivieren Sie das Gateway pro Modell über den Operator, indem Sie die Einstellungen spec.inferenceGateway.enabled für das InferenceEndpointConfig Modell festlegen. Der Operator erstellt und verwaltet den Scheduler-Eintrag für das Modell.

  • Verfassen Sie die InferenceGatewayConfig Ressource direkt, wie unter gezeigt. Beispiele

Die Gateway-Komponenten und das InferenceGatewayConfig CRD müssen über das HyperPod Inference Amazon EKS-Add-on installiert werden, bevor eine Modellressource mit aktiviertem Gateway abgeglichen werden kann. Informationen zur Installation des Operator-Add-ons finden Sie unter. Installation des Inferenzoperators mit dem EKS-Add-on Informationen zur Bereitstellung der Model-Serving-Pods, zu denen ein Scheduler eine Route weiterleitet, finden Sie unter. Bereitstellen von Grundlagenmodellen und maßgeschneiderten, optimierten Modellen

Anmerkung

Die Aufrechterhaltung der Integrität des SageMaker HyperPod Inferenzoperators liegt in der gemeinsamen Verantwortung von und AWS dem Kunden. AWS ist für die Bereitstellung und Wartung des SageMaker HyperPod Inference Operators verantwortlich. Nach der Installation ist der Kunde für die Überwachung des Betriebszustands des Operators innerhalb seines Clusters verantwortlich.

InferenceGatewayConfig CRD-Referenz

Sie konfigurieren das Inference Gateway mit einer einzigen InferenceGatewayConfig benutzerdefinierten Ressource. Die Ressource ist ein Singleton für ein bestimmtes Gateway: Sie enthält die gemeinsam genutzte Body-Based Router-Konfiguration und eine Liste von Schedulern pro Modell. Der Controller generiert die zugrundeliegenden InferencePool Endpoint Picker-, HttpRoute- und EnvoyExtensionPolicy Ressourcen für jeden Scheduler. Sie erstellen nur die Ressource. InferenceGatewayConfig

InferenceGatewayConfig Metadaten der Ressource
Eigenschaft Wert
Art InferenceGatewayConfig
Group (Gruppieren) inference.sagemaker.aws.amazon.com
Version v1alpha1
Plural inferencegatewayconfigs
Kurzname igwc
Scope Mit Namespace
Status-Unterressource /status

Spezifikationsfelder

Das spec Feld der InferenceGatewayConfig Ressource enthält die gemeinsame Body-Based Router-Konfiguration, TLS-Einstellungen, die erforderliche Liste von Schedulern sowie optionale Observability- und Pod-Default-Einstellungen.

bbr (Erforderlich)

Konfiguration für den gemeinsam genutzten Router. Body-Based Enthält die folgenden Felder:

bbr.enabled(Erforderlich, boolesch)

Ob der Body-Based Router aktiviert ist. Der Router muss aktiviert sein, wenn mehr als ein Scheduler konfiguriert ist.

bbr.replicas (Optional, Ganzzahl)

Anzahl der Body-Based Router-Replikate. Mindestanzahl:1. Standard: 2.

bbr.defaultBackend (Optional)

Das Backend, das Anfragen empfängt, die der Router keinem Scheduler zuordnen kann. Enthält eine name Zeichenfolge und eine port Ganzzahl (Standard:8000).

bbr.maxRequestBodyBytes (Optional, Ganzzahl)

Maximale Größe des Anforderungstexts in Byte, die der Router zwischenspeichert, um das model Feld zu lesen. Standard und Maximum: 268435456 (256 MiB).

tls

HTTPS-Terminierungskonfiguration für das Gateway. Enthält ein acmArn Feld, das auf ein vorhandenes ACM-Zertifikat verweist. Wenn tls dieses Feld leer istacmArn, stellt das Gateway automatisch ein Zertifikat mit cert-manager aus und importiert es in ACM.

auth (optional, empfohlen)

Fordern Sie die Authentifizierungskonfiguration an. Wir empfehlen dringend, die JWT-Bearer-Token-Authentifizierung auf jedem Gateway zu aktivieren. Wenn sie weggelassen wird, hat das Gateway keine Authentifizierung auf Anforderungsebene. Load Balancer-Health-Check-Routen bleiben nicht authentifiziert, sodass Integritätstests auch ohne Token erfolgreich sein können.

Enthält die folgenden auth.jwt.provider Felder:

name(Erforderlich, Zeichenfolge)

Eindeutiger Name für den Anbieter.

issuer(Erforderlich, Zeichenfolge)

URL des OIDC-Ausstellers (). https://... Das Gateway validiert den iss Anspruch des Tokens anhand dieses Werts.

remoteJWKS.uri(Erforderlich, Zeichenfolge)

HTTPS-JWKS-Endpunkt, der zur Überprüfung der JWT-Signatur verwendet wird.

audiences(Optional, Liste)

audZulässige Anspruchswerte (bis zu 8). Mindestens einer von audiences oder requiredClaims muss gesetzt werden.

requiredClaims(Optional, Liste)

Claim-based Autorisierung (bis zu 16 Einträge). Jeder Eintrag hatname, valueType (StringoderStringArray) und values (1—128 Einträge, jeweils 1—1024 Zeichen). Wenn diese Option gesetzt ist, lehnt das Gateway Anfragen standardmäßig ab und lässt nur Token zu, deren Anspruchswerte übereinstimmen.

observability (Optional)

Konfiguration der Beobachtbarkeit. Enthältmetrics.enabled, das den Seitenwagen der OpenTelemetry Metriken steuert. Metriken sind standardmäßig aktiviert.

podDefaults (Optional)

Die Standard-Pod-Einstellungen gelten sowohl für den Body-Based Router- als auch für den Endpoint Picker-Pod. Unterstütztresources,nodeSelector, tolerationsaffinity,labels, annotationsenv, undenvFrom.

schedulers(Erforderlich, Liste)

Eine Liste der Scheduler-Konfigurationen pro Modell, gekennzeichnet durch. name Es ist mindestens ein Scheduler erforderlich, und Sie können bis zu 100 definieren. Jeder Eintrag ist einSchedulerSpec, wie unter beschriebenSchedulerSpec Felder.

SchedulerSpec Felder

Jeder Eintrag in spec.schedulers konfiguriert das Routing und die Endpunktauswahl für ein Modell. Ein Scheduler benennt die generierten RessourcenInferencePool, Endpoint Picker, HttpRoute und Ressourcen. EnvoyExtensionPolicy

name(Erforderlich, Zeichenfolge)

Der Name des Schedulers. Wird verwendet, um den generierten Endpoint PickerInferencePool, HttpRoute und Ressourcen zu benennen. EnvoyExtensionPolicy Maximale Länge: 63 Zeichen.

modelSelector (Erforderlich)

Ein Kubernetes-Labelselektor, der die Model-Serving-Pods auswählt, zu denen dieser Scheduler eine Route weiterleitet.

modelName(Erforderlich, Zeichenfolge)

Der Modellname stimmte mit dem model Feld im Anforderungstext überein und wurde als HttpRoute-Header-Match verwendet. Muss für alle Scheduler eindeutig sein. Maximale Länge: 253 Zeichen.

targetPort (Optional, Ganzzahl)

Der Port auf den Model-Serving-Pods, der weitergeleiteten Datenverkehr empfängt. Bereich: 1—65535. Standard: 8000.

appProtocol(Optional, Zeichenfolge)

Das Anwendungsprotokoll, das verwendet wird, um die Model-Serving-Pods zu erreichen. Zulässige Werte: http, kubernetes.io/h2c. Standard: http.

scheduler(Optional, Zeichenfolge)

Der Scheduler-Typ, der das Endpoint Picker-Image auswählt. Zulässige Werte: llm-d, epp. Standard: llm-d.

engineType(Optional, Zeichenfolge)

Die Inferenz-Engine, die in den Pods für die Modellbereitstellung läuft. Mit diesem Wert wird der Satz von Prometheus-Metriknamen ausgewählt, den der Endpoint Picker scrapt. Zulässige Werte: vllm, sglang. Standard: vllm.

weights (Optional)

Bewertungsgewichte, die der Endpoint Picker zur Rangfolge der Kandidaten-Pods verwendet. Alle Gewichtungen sind nicht negative Ganzzahlen. Schließt sich gegenseitig mit configMapRef aus. Unterstützte Gewichte:

queue

Gewicht für die Tiefe der Warteschlange für ausstehende Anfragen. Standard: 2.

kvCache

Gewicht für die KV-Cache-Nutzung. Standard: 2.

prefix

Gewicht für die Präfix-Cache-Affinität. Standard: 3.

lru

Gewichtung für die Bewertung, die am wenigsten kürzlich verwendet wurde. Gilt nur, wenn scheduler llm-d ist.

loraAffinity

Gewicht für die Affinität zum LoRa-Adapter.

runningRequests

Gewicht für die Anzahl der laufenden Anfragen auf einem Pod.

predictedLatency

Gewicht für die vorhergesagte Latenz bei Anfragen.

configMapRef (Optional)

Ein Verweis auf a ConfigMap , der eine benutzerdefinierte Endpoint Picker-Konfiguration bereitstellt, als Alternative zuweights. Enthält ein erforderliches name und ein key (Standard:default-plugins.yaml). Schließt sich gegenseitig mit weights aus.

replicas (Optional, Ganzzahl)

Anzahl der Endpoint Picker-Replikate für diesen Scheduler. Mindestwert:. 1 Standard: 2. Wenn der replicas Wert größer als 1 ist, wird der Endpoint Picker mit hoher Verfügbarkeit ausgeführt, wobei der Leader gewählt wird.

envund envFrom (optional)

Umgebungsvariablen, die an den Endpoint Picker-Container dieses Schedulers angehängt wurden.

loraAdapters(Optional, Liste)

Die Namen der LoRa-Adapter wurden hinter dem Modell dieses Schedulers verwendet. Maximal: 50 Elemente mit jeweils bis zu 253 Zeichen.

routeTimeout(Optional, Zeichenfolge)

Das Zeitlimit für die HttpRoute-Anfrage als Gateway-API-Dauer (z. B. 30s oder). 5m Stellen Sie ihn auf ein, um den 0s Timeout zu deaktivieren.

logLevel (Optional, Ganzzahl)

Die Ausführlichkeit des Endpoint Picker-Protokolls. Bereich: 0—5.

Regeln für die Validierung

Die InferenceGatewayConfig Ressource erzwingt die folgenden Validierungsregeln. Eine Ressource, die gegen eine dieser Regeln verstößt, wird abgelehnt.

  • Der Body-Based Router muss aktiviert (bbr.enabled: true) sein, wenn mehr als ein Scheduler konfiguriert ist.

  • modelNamemuss für alle Scheduler eindeutig sein.

  • Innerhalb eines Schedulers weights und schließen configMapRef sich gegenseitig aus.

  • Die weights.lru Gewichtung ist nur gültig, wenn der scheduler Typ des Schedulers lautet. llm-d

Status-Felder

Der Controller meldet den beobachteten Zustand des Gateways in der status Unterressource.

conditions

Kubernetes-Standardbedingungen, die den Gesamtstatus der Gateway-Konfiguration beschreiben.

schedulers

Per-scheduler Status. Jeder Eintrag enthält:

name

Der Name des Schedulers.

conditions

Bedingungen, die den Status dieses Schedulers beschreiben.

currentScheduler

Der Scheduler-Typ, der derzeit für diesen Eintrag gültig ist.

rolloutState

Der Rollout-Status des Schedulers. Einer der Werte Pending, Progressing, Available oder Degraded.

observedGeneration

Die Generierung der Ressource, die zuletzt vom Controller abgeglichen wurde.

tls

TLS-Status, der nur im Modus für die automatische Ausgabe gemeldet wird. Enthält acmArnissuedAt, unddnsNames.

Kubernetes RBAC-Berechtigungen

Das Inference Gateway wird als einzelner Controller unter dem Kubernetes-Dienstkonto im Namespace ausgeführt. inference-gateway-controller hyperpod-inference-system Der Body-Based Router, die Endpoint Pickers pro Scheduler, der Gateway-Controller und der InferenceGatewayConfig Reconiler werden alle unter diesem einen Controller ausgeführt. Seine clusterbezogenen Berechtigungen werden von einem benannten und einem passenden Benutzer erteilt. ClusterRole sagemaker-inference-gateway-controller-supplement ClusterRoleBinding Zusammen ergänzen sie das Dienstkonto und die Berechtigungen, die das gebündelte Gateway-Diagramm bereits bietet. Bei diesen Berechtigungen handelt es sich um bereichsbezogene und geringste Rechte, und der Controller wird nicht als Clusteradministrator ausgeführt.

In der folgenden Tabelle sind die Clusterberechtigungen des Controllers, gruppiert nach Zweck, aufgeführt. In dieser Tabelle bedeutet Vollzugriff die Verbencreate,get,, list watchupdate, patch und. delete

Berechtigungen für den Inference Gateway-Controller
API-Gruppe Ressourcen Verben Zweck
inference.sagemaker.aws.amazon.com inferencegatewayconfigs, einschließlich seiner status und Unterressourcen finalizers get,list, watchupdate, und patch fürinferencegatewayconfigs; getupdate, und patch für seinestatus; update für seine finalizers Stimmen Sie die InferenceGatewayConfig Ressource ab, schreiben Sie ihren Status und verwalten Sie ihren Finalizer.
gateway.networking.k8s.io httproutes, gateways, gatewayclasses Vollzugriff für httproutes undgateways;get, listwatch, create und für patch gatewayclasses Weiterleitung von Programmanfragen über die Gateway-API.
inference.networking.k8s.io inferencepools Vollzugriff Erstellen Sie das Routing-Backend für jeden Scheduler.
inference.networking.x-k8s.io inferencepools, inferenceobjectives, inferencemodelrewrites get, list, watch Lesen Sie die Routing-Absicht für die Endpunktauswahl.
gateway.envoyproxy.io envoyextensionpolicies, envoyproxies, httproutefilters, clienttrafficpolicies, securitypolicies Vollzugriff Konfigurieren Sie die Gateway-Datenebene und ihre Telemetrie.
Kern () "" configmaps, services, serviceaccounts, events, secrets, pods Voller Zugriff für configmapsservices, undserviceaccounts; create und patch fürevents; getlist, und watch für secrets und pods Verwalten Sie die generierten Workloads und lesen Sie den Routing- und Serverstatus.
apps deployments Vollzugriff Verwalten Sie die Body-Based Router- und Endpoint Picker-Bereitstellungen.
rbac.authorization.k8s.io roles, rolebindings Vollzugriff Erstellen Sie den Endpoint Picker pro Scheduler. Role
discovery.k8s.io, coordination.k8s.io endpointslices; leases getlist, und watch fürendpointslices;get,, list watchcreate, update und für patch leases Wahl zum Leiter von Endpoint Discovery und Endpoint Picker.
networking.k8s.io ingresses, networkpolicies Vollzugriff Stellen Sie den Application Load Balancer-Pfad über den Load AWS Balancer Controller bereit.
cert-manager.io issuers, certificates (mit getlist, und watch auf dem Kern) secrets Vollzugriff Auto-issue ein TLS-Zertifikat, wenn spec.tls es ohne ein gesetzt istacmArn.
apiextensions.k8s.io customresourcedefinitions create; undget, updatepatch, und delete beschränkt durch den Ressourcennamen auf die spezifischen Gateway-API-CDs, die das Gateway verwaltet Installieren Sie die benutzerdefinierten Ressourcendefinitionen, von denen das Gateway abhängig ist.
Anmerkung

Das create Verb on customresourcedefinitions ist nicht auf bestimmte Ressourcennamen beschränkt. Der Controller installiert die benutzerdefinierten Ressourcendefinitionen der Gateway-API, von denen er abhängig ist, indem er sie beim Start von seinem eigenen Container-Image aus anwendet, da ihre kombinierte Größe das Amazon EKS-Zusatznutzlastlimit überschreitet. In Kubernetes ist es nicht möglich, das create Verb auf benannte Ressourcen zu beschränken, daher ist diese Erlaubnis zwangsläufig weit gefasst. Alle anderen Operationen mit benutzerdefinierten Ressourcendefinitionen —get, updatepatch, und delete — sind auf die spezifischen benutzerdefinierten Ressourcendefinitionen beschränkt, die das Gateway verwaltet. Mit dieser Berechtigung können nur diese CRD-Typen definiert werden. Sie gewährt keinen Zugriff auf die Daten benutzerdefinierter Ressourcen.

Je nach Gateway-Konfiguration erstellt der Controller zur Laufzeit auch die folgenden Rollen mit Namespaces:

  • Body-Based Router — Ein NamespacesRole, der gewährt und watch auf dem der Router liest getlist, um configmaps LoRa-Adapter aufzulösen. Wenn der Router über mehrere Namespaces läuft, ist dies stattdessen ein. ClusterRole

  • Endpoint Picker — Ein Role Namespace-Bereich, auf den Lesezugriff gewährt wird. pods Wenn ein Endpoint Picker mit mehr als einem Replikat ausgeführt wird, erstellt der Controller auch eine Leader-Auswahl für und. Role leases events Wenn Prometheus-Metriken aktiviert sind, erstellt der Controller eine Option, die den Ein tokenreviews - subjectaccessreviews und ClusterRole Lesezugriff create auf den Endpunkt gewährt. /metrics

Anmerkung

Wenn Sie das Gateway über den HyperPod Inferenzoperator aktivieren, ist der eigene Controller des Operators berechtigt, Ressourcen zu erstellen und zu aktualisieren. InferenceGatewayConfig Informationen dazu, wie der Operator ein Modell mit dem Gateway verbindet, finden Sie unterIntegration mit dem HyperPod Inferenzoperator.

Einige dieser Berechtigungen gelten nur, wenn die entsprechende Funktion aktiviert ist.

Beobachtbarkeit

Das Inference Gateway gibt Prometheus-Metriken von jeder Gateway-Komponente aus. Sowohl der Body-Based Router als auch jeder Endpoint Picker stellen einen /metrics Standard-Prometheus-Endpunkt auf ihren Pods zur Verfügung. Body-Based Router-Pods werden im hyperpod-inference-system Namespace ausgeführt; Endpoint Picker-Pods werden im selben Namespace wie der ausgeführt. InferenceGatewayConfig Die Metriken umfassen Anforderungszähler und -dauern pro Modell, die Planung der Latenz und die Ausführungszeit pro Plugin innerhalb des Endpoint Pickers sowie aggregierte Pool-Metriken wie die durchschnittliche KV-Cache-Auslastung und die Warteschlangentiefe. Model-server Pod-Metriken (z. B. von vLLM oder sGLang) werden vom Modellserver selbst ausgegeben; der Endpoint Picker scrapt sie, um Kandidaten-Pods zu bewerten.

Wenn dies der spec.observability.metrics.enabled Fall ist true (Standardeinstellung), injiziert der Gateway-Controller einen OpenTelemetry Collector-Sidecar in jeden Router- und Endpoint Picker-Pod. Body-Based Der Sidecar leitet diese Metriken an den HyperPod Inferenz-Observability-Stack weiter, wo sie in den integrierten Grafana-Dashboards zusammen mit Modellserver- und Cluster-Metriken angezeigt werden. Einzelheiten zur Einrichtung Implementierung der Beobachtbarkeit von Inferenzen auf Clustern HyperPod und zum Dashboard finden Sie unter. Stellen Sie das Feld auf ein, false um die Beiwageninjektion zu überspringen. Die Feldreferenz finden Sie unterobservability. Spezifikationsfelder

Um die Gateway-Metriken in Amazon Managed Grafana anzuzeigen, öffnen Sie den Ordner Inference Dashboards und wählen Sie das Inference Gateway-Dashboard aus. Das Dashboard meldet die Gateway-weite Verfügbarkeit, die Anforderungsrate und die Ende-zu-Ende-Latenz, den Durchsatz pro Scheduler, die Latenz und die Fehler für jedes Modell sowie die Geschwindigkeit, mit der der Router Modellnamen aus den Anforderungstexten auflöst. Body-Based

Beispiele

Die folgenden Beispiele zeigen gängige InferenceGatewayConfig Konfigurationen und zeigen, wie das Gateway aufgerufen wird.

Minimale Konfiguration mit mehreren Modellen

Dieses Beispiel leitet an einen LLM-D-Scheduler mit automatisch ausgestelltem TLS weiter. Da tls es auf ein leeres Objekt gesetzt ist, stellt das Gateway automatisch ein Zertifikat aus und importiert es in ACM.

apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: InferenceGatewayConfig metadata: name: inference-gateway-demo namespace: inference-gateway spec: bbr: enabled: true tls: {} # Auto-issue a certificate via cert-manager and import to ACM. schedulers: - name: llama modelName: "meta-llama/Llama-3.2-1B-Instruct" modelSelector: matchLabels: app: vllm-llama targetPort: 8000 scheduler: llm-d

sLang-Scheduler mit expliziten Gewichten

In diesem Beispiel wird der epp Scheduler-Typ mit der sglang Engine verwendet und explizite Punktegewichte für Endpoint Picker festgelegt.

spec: bbr: enabled: true schedulers: - name: qwen7b modelName: "Qwen/Qwen2.5-7B-Instruct" modelSelector: matchLabels: app: sglang-qwen7b targetPort: 8000 scheduler: epp engineType: sglang logLevel: 4 weights: kvCache: 2 prefix: 3 runningRequests: 2

LoRa-Adapter ConfigMap

Der Body-Based Router erkennt LoRa-Adapter und ihr Basismodell anhand eines für die BBR-Verwaltung ConfigMap gekennzeichneten Geräts. Der Router verwendet diese Zuordnung, um einen Adapternamen im Anforderungstext in sein Basismodell aufzulösen.

apiVersion: v1 kind: ConfigMap metadata: name: deepseek-adapters labels: inference.networking.k8s.io/bbr-managed: "true" data: baseModel: deepseek/vllm-deepseek-r1 adapters: | - ski-resorts - movie-critique

Rufen Sie das Gateway auf

Das Gateway dient als OpenAI-compatible Inferenzendpunkt. Dies ist der Laufzeitaufrufvertrag für das Senden von Inferenzanforderungen über das Gateway; es handelt sich nicht um einen AWS API-Vorgang. Senden Sie Anfragen an den Gateway-Endpunkt, wobei das model Feld auf das Feld modelName des Ziel-Schedulers gesetzt ist. Der Body-Based Router liest dieses Feld, um die Anfrage weiterzuleiten.

curl https://your-gateway-endpoint/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "meta-llama/Llama-3.1-8B-Instruct", "messages": [ {"role": "user", "content": "Hello"} ] }'