Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Passerelle d'inférence pour Amazon SageMaker HyperPod Inference
Amazon SageMaker HyperPod Inference Gateway est une Kubernetes-native couche de routage et d'orchestration compatible avec les grands modèles de langage (LLM) pour HyperPod les clusters sur Amazon EKS. Il inspecte les demandes d'inférence, lit le nom du modèle de chaque demande et sélectionne un pod servant le modèle en fonction de la charge du processeur graphique, afin que le trafic de plusieurs modèles soit acheminé efficacement via un point de terminaison de passerelle unique.
La passerelle achemine chaque demande via trois couches. Le Body-Based routeur (BBR), un composant partagé, lit le model champ du corps de la requête, résout le nom d'un adaptateur LoRa en son modèle de base et définit les en-têtes X-Gateway-Model-Name etX-Gateway-Base-Model-Name. La passerelle associe ensuite ces en-têtes à un HttpRoute et transmet la demande au modèle InferencePool demandé. Au sein de ce pool, Endpoint Picker (EPP/scheduler) choisit un pod servant de modèle en évaluant les candidats sur la base de paramètres du serveur de modèles tels que la profondeur de la file d'attente et l'utilisation du cache KV, ainsi que le cache de préfixe et l'affinité avec l'adaptateur LoRa. Chaque entrée que vous définissez sous spec.schedulers exécute son propre Endpoint Picker. Cette rubrique utilise donc les termes Endpoint Picker, EPP et planificateur de manière interchangeable.
La passerelle d'inférence s'appuie sur l'opérateur HyperPod d'inférence au lieu de le remplacer. Pendant que l'opérateur continue d'orchestrer le déploiement du modèle, la passerelle introduit une couche de LLM-aware routage devant les modules servant les modèles. La passerelle ne dépend pas d'un serveur modèle ou d'une couche d'orchestration spécifique et est fournie via le module complémentaire HyperPod Inference Amazon EKS.
Vous définissez une passerelle avec la ressource InferenceGatewayConfig personnalisée. Une seule InferenceGatewayConfig décrit une passerelle : le Body-Based routeur partagé, la terminaison TLS, l'authentification des demandes et un planificateur pour chaque modèle desservi par la passerelle. Pour le schéma complet, voirInferenceGatewayConfig Référence CRD.
Important
Les points de terminaison créés par la passerelle d'inférence ne disposent d'aucune authentification ou autorisation au niveau de la demande par défaut. À moins que vous ne configuriez spec.auth.jwt sur leInferenceGatewayConfig, la passerelle accepte toutes les demandes qui lui parviennent ; l'accès est limité uniquement par votre VPC et les contrôles réseau. Nous vous recommandons vivement d'activer l'authentification JWT sur chaque passerelle. Pour configurer l'authentification, consultez Prérequis et déploiement et spec.auth ci-dessouschamps de spécifications.
Prérequis et déploiement
La passerelle d'inférence est fournie dans le cadre du module complémentaire HyperPod Inference Amazon EKS. L'installation du module complémentaire rend la passerelle disponible, aucune installation séparée n'est donc requise. Vous activez ensuite le routage de passerelle pour un modèle via le spec.inferenceGateway.enabled champ de la InferenceEndpointConfig ressource du modèle. Pour la version dans laquelle une fonctionnalité a été introduite, voirNotes de mise SageMaker HyperPod à jour d'Amazon Inference.
Avant d'acheminer le trafic via la passerelle, vérifiez les points suivants :
- Pods servant des modèles déployés
-
Chaque planificateur est acheminé vers des modules proposant des modèles sélectionnés par un sélecteur d'étiquettes. Déployez vos modèles à l'aide de l'opérateur d' HyperPod inférence et notez les étiquettes appliquées à leurs pods afin de pouvoir les référencer dans la configuration de la passerelle. Pour répertorier les étiquettes de vos modules de modèles, exécutez la commande suivante :
kubectl get pods -n NAMESPACE --show-labels - Versions de serveurs modèles
-
La passerelle d'inférence nécessite vLLM v0.9.2 ou version ultérieure et SGlang v0.3.5.post1 ou version ultérieure. Dans les versions précédentes de vLLM, la métrique de cache KV est publiée sous un nom différent de celui lu par la passerelle. Les demandes sont toujours acheminées à l'aide des signaux restants, mais l'utilisation du cache KV est ignorée et aucune erreur n'est signalée. Les versions antérieures de SGLang ne prennent pas en charge l'
--enable-metricsindicateur et le conteneur ne démarre pas. Démarrez SGlang avec cet indicateur afin que la passerelle puisse lire les métriques dont elle a besoin pour prendre des décisions de routage. - Add-on version
-
L'Inference Gateway est disponible à partir de la version
v2.0.0-eksbuild.2du module complémentaire Amazon SageMaker HyperPod Inference. Installez ou mettez à jour la dernière version disponible du module complémentaire. Si votre cluster ne reconnaît pas laInferenceGatewayConfigressource, cela signifie que le module complémentaire exécute une version antérieure qui n'inclut pas la passerelle. - Dépendances des clusters
-
-
cert-manager doit être installé sur le cluster pour le chemin TLS émis automatiquement, que la passerelle utilise lorsqu'elle
spec.tlsest définie sans.acmArn -
Le AWS Load Balancer Controller doit être installé pour le type de point de terminaison Application Load Balancer.
-
La passerelle utilise l'espace de
hyperpod-inference-systemnoms.
-
- Certificat TLS
-
Pour mettre fin au protocole HTTPS sur la passerelle, fournissez un ARN de certificat ACM existant ou laissez la passerelle émettre automatiquement un certificat. Auto-issue utilise cert-manager et importe le certificat dans ACM. Ce flux nécessite que le rôle d'exécution de l'opérateur dispose des
acm:DeleteCertificateautorisationsacm:ImportCertificateacm:AddTagsToCertificateacm:DescribeCertificate,, et via IRSA. - Demande d'authentification (recommandé)
-
Nous vous recommandons vivement d'activer l'authentification JWT sur chaque passerelle en activant
spec.auth.jwtleInferenceGatewayConfig. En casspec.authd'omission, la passerelle ne dispose d'aucune authentification au niveau de la demande et l'accès est limité uniquement par votre VPC et les contrôles réseau. Pour activer l'authentification JWT, munissez-vous des éléments suivants avant de créer leInferenceGatewayConfig: une URL d'émetteur OIDC, le point de terminaison HTTPS JWKS qui publie les clés de signature de l'émetteur et les valeurs d'audience (ou les revendications requises) que les jetons de cette passerelle doivent porter. Voirspec.authci-dessous champs de spécifications pour le schéma complet.
Configurer le rôle IAM de l'émetteur du certificat
Lorsque la passerelle émet automatiquement un certificat TLS, cert-manager génère le certificat dans le cluster et le contrôleur de passerelle l'importe dans ACM. L'importation étant un appel d' AWS API, le contrôleur a besoin AWS d'informations d'identification. Fournissez-les en créant un rôle IAM que le compte de inference-gateway-controller service dans l'hyperpod-inference-systemespace de noms assume via les rôles IAM pour les comptes de service (IRSA).
Important
L'émission automatique TLS est activée par défaut et le contrôleur de passerelle lit ce rôle au démarrage. Créez le rôle avant d'installer le module complémentaire.
Définissez les variables d'environnement suivantes et récupérez l'émetteur OIDC de votre cluster.
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://||')
Créez une politique de confiance qui permet au compte de service du contrôleur de passerelle d'assumer ce rôle.
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
Créez le rôle et associez la politique AmazonSageMakerHyperPodInferenceGatewayAccess gérée. La politique accorde les autorisations ACM dont le contrôleur a besoin pour importer, baliser, décrire et supprimer les certificats qu'il crée.
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
Indiquez l'ARN de ce rôle comme inferenceGateway.serviceAccount.roleArn lorsque vous installez le module complémentaire.
Note
Si le rôle existe déjà dans un autre cluster, vérifiez que sa politique de confiance inclut le fournisseur OIDC pour ce cluster.
Installez le module complémentaire
Le module complémentaire HyperPod Inference installe à la fois l'opérateur d'inférence et la passerelle d'inférence. Installez-le à l'aide de la commande suivante. PourinferenceGateway.serviceAccount.roleArn, utilisez le rôle d'émetteur de certificat que vous avez créé dans la section précédente. Remplacez les valeurs d'espace réservé restantes par les rôles et le compartiment de votre compte.
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>" }'
Si le module complémentaire est déjà installé sur le cluster, remplacez-le create-addon par update-addon et ajoutez-le--resolve-conflicts OVERWRITE. Le reste de la commande est inchangé. OVERWRITEapplique les valeurs de configuration de la commande à la configuration du module complémentaire existant.
Vérifiez que le contrôleur de passerelle est en cours d'exécution et que les ressources de passerelle sont enregistrées.
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
Vérifiez que le module complémentaire lui-même est actif et ne signale aucun problème de santé.
aws eks describe-addon \ --cluster-name $CLUSTER --region $REGION \ --addon-name amazon-sagemaker-hyperpod-inference \ --query 'addon.{version:addonVersion,status:status,health:health.issues}'
Intégration avec l'opérateur HyperPod d'inférence
L'opérateur HyperPod d'inférence et la passerelle d'inférence ont des responsabilités distinctes. L'opérateur est propriétaire du déploiement, de l'orchestration et du câblage qui relie un modèle à la passerelle. La passerelle possède le routage des demandes et génère les ressources de routage pour chaque planificateur. Pour plus d'informations sur le déploiement de modèles avec l'opérateur, consultezDéploiement de modèles sur Amazon SageMaker HyperPod.
- HyperPod Opérateur d'inférence
-
Réconcilie les ressources personnalisées du modèle
InferenceEndpointConfigetJumpStartModel(groupeinference.sagemaker.aws.amazon.com, versionv1). L'opérateur crée le modèle Deployment and Service, l'équilibreur de charge des applications, la mise à l'échelle automatique KEDA, le certificat cert-manager et l'enregistrement du point de terminaison AI. SageMaker Lorsque la passerelle est activée pour un modèle, l'opérateur connecte également ce modèle à la passerelle. - Passerelle d'inférence
-
Possède le routage des demandes, depuis le Body-Based routeur via la passerelle et HttpRoute vers le Endpoint Picker, et génère les ressources de routage en aval pour chaque planificateur : la configuration Endpoint Picker
InferencePool, HttpRoute et.EnvoyExtensionPolicy
Note
Les ressources personnalisées du modèle de l'opérateur utilisent la versionv1, tandis que la InferenceGatewayConfig ressource de la passerelle utilise la versionv1alpha1. Les deux appartiennent au inference.sagemaker.aws.amazon.com groupe.
Vous attachez un modèle à la passerelle via l'opérateur, sur la ressource du modèle InferenceEndpointConfig (ouJumpStartModel), à l'aide du spec.inferenceGateway champ :
spec.inferenceGateway.enabled(Facultatif, booléen)Si ce modèle est connecté à la passerelle. Valeur par défaut :
false.spec.inferenceGateway.name(Facultatif, chaîne)Le nom de la
InferenceGatewayConfigressource à laquelle se rattacher. Les modèles qui partagent un nom et un espace de noms partagent une passerelle. Lorsque ce champ est vide, l'opérateur génère le nom du formulaireinf-igw-<uuid>.
L'extrait suivant montre l'inferenceGatewayopt-in sur une 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>.
L'opérateur reflète l'état de la pièce jointe sur la ressource modèle ci-dessousstatus.inferenceGateway, qui indique un State de Pending ReadyFailed, ou et le Name de la pièce jointeInferenceGatewayConfig. Vous ne pouvez pas inferenceGateway.enabled les définir ensemble intelligentRoutingSpec.enabled sur le même modèle ; ces champs s'excluent mutuellement.
Lorsque la passerelle est activée pour un modèle, l'opérateur crée ou met à jour une InferenceGatewayConfig ressource unique et fusionne une entrée pour le modèle dans sa spec.schedulers liste. L'opérateur définit le planificateurname,, et modelName targetPortmodelSelector, et la valeur par défaut est la llm-d date scheduler à laquelle il crée l'entrée pour la première fois. Lors de rapprochements ultérieurs, l'opérateur conserve les valeurs fournies par le client, telles scheduler que, et. weights loraAdapters Le Body-Based routeur est activé automatiquement lorsque plusieurs planificateurs sont présents.
L'opérateur ne supprime pas la InferenceGatewayConfig ressource ni les ressources de routage en aval. Lorsque vous désactivez la passerelle pour un modèle ou que vous supprimez le modèle, l'opérateur supprime uniquement l'entrée du planificateur de ce modèle. Le contrôleur de passerelle est responsable du nettoyage des ressources de routage.
Vous pouvez InferenceGatewayConfig en créer un de deux manières, et les deux chemins coexistent sur la même ressource :
-
Activez la passerelle par modèle via l'opérateur, en réglant le paramètre
spec.inferenceGateway.enabledsur celui du modèleInferenceEndpointConfig. L'opérateur crée et gère l'entrée du planificateur pour le modèle. -
Créez la
InferenceGatewayConfigressource directement, comme indiqué dansExemples.
Les composants de la passerelle et le InferenceGatewayConfig CRD doivent être installés via le module complémentaire HyperPod Inference Amazon EKS pour qu'une ressource de modèle avec la passerelle activée puisse être réconciliée. Pour l'installation du module complémentaire pour opérateurs, consultezInstallation de l'opérateur d'inférence avec le module complémentaire EKS. Pour déployer les pods servant des modèles vers lesquels un planificateur est acheminé, consultez. Déploiement de modèles de fondation et de modèles personnalisés et peaufinés
Note
Le maintien de la santé de l'opérateur d' SageMaker HyperPod inférence est une responsabilité partagée entre AWS et le client. AWS est responsable de la fourniture et de la maintenance de l'opérateur SageMaker HyperPod d'inférence. Après l'installation, le client est responsable de la surveillance de l'état de fonctionnement de l'opérateur au sein de son cluster.
InferenceGatewayConfig Référence CRD
Vous configurez la passerelle d'inférence avec une seule ressource InferenceGatewayConfig personnalisée. La ressource est un singleton pour une passerelle donnée : elle contient la configuration du Body-Based routeur partagé et une liste de planificateurs par modèle. Le contrôleur génère le sous-jacentInferencePool, Endpoint Picker, HttpRoute et les EnvoyExtensionPolicy ressources pour chaque planificateur ; vous créez uniquement la ressource. InferenceGatewayConfig
| Propriété | Value |
|---|---|
| Kind | InferenceGatewayConfig |
| Groupe | inference.sagemaker.aws.amazon.com |
| Version | v1alpha1 |
| Pluriel | inferencegatewayconfigs |
| Nom court | igwc |
| Scope | Namespacé |
| Sous-ressource Status | /status |
champs de spécifications
Le spec champ de la InferenceGatewayConfig ressource contient la configuration du Body-Based routeur partagé, les paramètres TLS, la liste requise de planificateurs, ainsi que les paramètres facultatifs d'observabilité et les paramètres par défaut du pod.
bbr(Obligatoire)-
Configuration du Body-Based routeur partagé. Contient les champs suivants :
bbr.enabled(Obligatoire, booléen)Si le Body-Based routeur est activé. Le routeur doit être activé lorsque plusieurs planificateurs sont configurés.
bbr.replicas(facultatif, entier)Nombre de répliques de Body-Based routeurs. Minimum :
1. Valeur par défaut :2.bbr.defaultBackend(facultatif)Le backend qui reçoit les demandes que le routeur ne peut pas faire correspondre à un planificateur. Contient une
namechaîne et unportentier (par défaut :8000).bbr.maxRequestBodyBytes(facultatif, entier)Taille maximale du corps de requête, en octets, que le routeur met en mémoire tampon pour lire le
modelchamp. Par défaut et maximum :268435456(256 Mo).
tls-
Configuration de terminaison HTTPS pour la passerelle. Contient un
acmArnchamp qui fait référence à un certificat ACM existant. S'iltlsest défini avec un videacmArn, la passerelle émet automatiquement un certificat avec cert-manager et l'importe dans ACM. auth(Facultatif, Recommandé)-
Configuration de l'authentification des demandes. Nous vous recommandons vivement d'activer l'authentification par jeton porteur JWT sur chaque passerelle ; en cas d'omission, la passerelle ne dispose d'aucune authentification au niveau de la demande. Les itinéraires de vérification de l'état de l'équilibreur de charge ne sont pas authentifiés, de sorte que les sondes d'état peuvent réussir sans jeton.
Contient
auth.jwt.providerles champs suivants :name(Obligatoire, chaîne)Nom unique du fournisseur.
issuer(Obligatoire, chaîne)URL de l'émetteur OIDC (
https://...). La passerelle valide laissréclamation du jeton par rapport à cette valeur.remoteJWKS.uri(Obligatoire, chaîne)Point de terminaison HTTPS JWKS utilisé pour vérifier la signature JWT.
audiences(Facultatif, liste)Valeurs de
audréclamation acceptées (jusqu'à 8). Au moins l'un desaudiencesparamètres ourequiredClaimsdoit être défini.requiredClaims(Facultatif, liste)Claim-based autorisation (jusqu'à 16 entrées). Chaque entrée comporte
name,valueType(StringouStringArray) etvalues(1 à 128 entrées, chacune de 1 à 1 024 caractères). Lorsqu'elle est définie, la passerelle refuse les demandes par défaut et n'admet que les jetons dont les valeurs de réclamation correspondent.
observability(facultatif)-
Configuration de l'observabilité. Contient
metrics.enabled, qui contrôle le OpenTelemetry sidecar des métriques. Les métriques sont activées par défaut. podDefaults(facultatif)-
Les paramètres de module par défaut s'appliquaient à la fois aux modules Body-Based Router et Endpoint Picker. Supporte
resourcesnodeSelectortolerations,affinity,labels,annotationsenv, etenvFrom. schedulers(Obligatoire, liste)-
Une liste de configurations de planificateur par modèle, saisie par.
nameAu moins un planificateur est requis et vous pouvez en définir jusqu'à 100. Chaque entrée est unSchedulerSpec, décrit dansSchedulerSpec champs.
SchedulerSpec champs
Chaque entrée spec.schedulers configure le routage et la sélection des points de terminaison pour un modèle. Un planificateur nomme les ressources généréesInferencePool, Endpoint Picker, HttpRoute et. EnvoyExtensionPolicy
name(Obligatoire, chaîne)Le nom du planificateur. Utilisé pour nommer les ressources générées
InferencePool, Endpoint Picker, HttpRoute et.EnvoyExtensionPolicyLongueur maximale : 63 caractères.modelSelector(Obligatoire)Un sélecteur d'étiquettes Kubernetes qui sélectionne les pods servant des modèles vers lesquels ce planificateur est acheminé.
modelName(Obligatoire, chaîne)Le nom du modèle correspond au
modelchamp du corps de la requête et a été utilisé comme correspondance d'en-tête HttpRoute. Doit être unique pour tous les planificateurs. Longueur maximale : 253 caractères.targetPort(facultatif, entier)Port sur les pods servant des modèles qui reçoit le trafic transféré. Plage de valeurs : 1 à 65 535. Valeur par défaut :
8000.appProtocol(Facultatif, chaîne)Protocole d'application utilisé pour atteindre les modules servant les modèles. Valeurs valides :
http,kubernetes.io/h2c. Valeur par défaut :http.scheduler(Facultatif, chaîne)Type de planificateur, qui sélectionne l'image Endpoint Picker. Valeurs valides :
llm-d,epp. Valeur par défaut :llm-d.engineType(Facultatif, chaîne)Le moteur d'inférence qui fonctionne dans les modules servant le modèle. Cette valeur sélectionne l'ensemble de noms de métriques Prometheus que le Endpoint Picker extrait. Valeurs valides :
vllm,sglang. Valeur par défaut :vllm.weights(facultatif)-
Poids de notation utilisés par Endpoint Picker pour classer les pods candidats. Toutes les pondérations sont des entiers non négatifs. Mutuellement exclusif avec
configMapRef. Poids supportés :queuePoids correspondant à la profondeur de la file d'attente des demandes en attente. Valeur par défaut :
2.kvCachePoids correspondant à l'utilisation du cache en KV. Valeur par défaut :
2.prefixPoids de l'affinité entre le préfixe et le cache. Valeur par défaut :
3.lruPoids correspondant à la notation la moins utilisée récemment. Valide uniquement lorsque
schedulerestllm-d.loraAffinityPoids pour l'affinité de l'adaptateur LoRa.
runningRequestsPoids du nombre de requêtes en cours d'exécution sur un pod.
predictedLatencyPoids de la latence de demande prévue.
configMapRef(facultatif)Une référence à un ConfigMap qui fournit une configuration personnalisée de Endpoint Picker, comme alternative à
weights. Contient un obligatoirenameet unkey(par défaut :default-plugins.yaml). Mutuellement exclusif avecweights.replicas(facultatif, entier)Nombre de répliques Endpoint Picker pour ce planificateur. Minimum :
1. Valeur par défaut :2. Lorsqu'ilreplicasest supérieur à 1, le Endpoint Picker fonctionne en haute disponibilité avec élection du leader.envetenvFrom(Facultatif)Variables d'environnement ajoutées au conteneur Endpoint Picker de ce planificateur.
loraAdapters(Facultatif, liste)Les noms des adaptateurs LoRa ont été utilisés derrière le modèle de ce planificateur. Maximum : 50 éléments, chacun de 253 caractères maximum.
routeTimeout(Facultatif, chaîne)Le délai d'expiration de la requête HttpRoute, en tant que durée de l'API Gateway (par exemple,
30sou).5mRéglez sur0spour désactiver le délai d'attente.logLevel(facultatif, entier)Verbosité du journal Endpoint Picker. Plage de valeurs : 0 à 5.
Règles de validation
La InferenceGatewayConfig ressource applique les règles de validation suivantes. Une ressource qui enfreint l'une de ces règles est rejetée.
-
Le Body-Based routeur doit être activé (
bbr.enabled: true) lorsque plusieurs planificateurs sont configurés. -
modelNamedoit être unique pour tous les planificateurs. -
Au sein d'un planificateur,
weightset s'configMapRefexcluent mutuellement. -
Le
weights.lrupoids n'est valide que lorsque leschedulertype du planificateur l'estllm-d.
champs de statut
Le contrôleur rapporte l'état observé de la passerelle dans la status sous-ressource.
conditionsConditions Kubernetes standard décrivant l'état général de la configuration de la passerelle.
schedulers-
Per-scheduler statut. Chaque entrée contient :
nameLe nom du planificateur.
conditionsConditions décrivant l'état de ce planificateur.
currentSchedulerType de planificateur actuellement en vigueur pour cette entrée.
rolloutStateÉtat de déploiement du planificateur. L'une des valeurs suivantes :
Pending,Progressing,AvailableouDegraded.
observedGenerationGénération de la ressource la plus récemment réconciliée par le contrôleur.
tlsÉtat TLS, signalé uniquement en mode d'émission automatique. Contient
acmArnissuedAt, etdnsNames.
Autorisations RBAC de Kubernetes
L'Inference Gateway s'exécute en tant que contrôleur unique sous le compte inference-gateway-controller de service Kubernetes dans l'espace de noms. hyperpod-inference-system Le Body-Based routeur, les Endpoint Pickers par planificateur, le contrôleur Gateway et le InferenceGatewayConfig réconciliateur s'exécutent tous sous ce contrôleur unique. Ses autorisations à l'échelle du cluster sont accordées par un ClusterRole nom sagemaker-inference-gateway-controller-supplement et un correspondant. ClusterRoleBinding Ensemble, ils complètent le compte de service et les autorisations déjà fournis par le graphique Gateway groupé. Ces autorisations sont limitées et dotées du moindre privilège, et le contrôleur ne s'exécute pas en tant qu'administrateur de cluster.
Le tableau suivant répertorie les autorisations du contrôleur par cluster, regroupées par objectif. Dans ce tableau, l'accès complet signifie les delete verbes create get listwatch,update,patch,, et.
| Groupe d'API | Ressources | Verbes | Objectif |
|---|---|---|---|
inference.sagemaker.aws.amazon.com |
inferencegatewayconfigs, y compris ses ressources status et ses finalizers sous-ressources |
get,list, watchupdate, et patch pour inferencegatewayconfigs ;get,update, et patch pour son status ; update pour son finalizers |
Réconciliez la InferenceGatewayConfig ressource, écrivez son statut et gérez son finaliseur. |
gateway.networking.k8s.io |
httproutes, gateways,
gatewayclasses |
Accès complet pour httproutes et gateways ; getlist, watchcreate, et patch pour gatewayclasses |
Routage des demandes de programme via l'API Gateway. |
inference.networking.k8s.io |
inferencepools |
Accès complet à | Créez le backend de routage pour chaque planificateur. |
inference.networking.x-k8s.io |
inferencepools, inferenceobjectives,
inferencemodelrewrites |
get, list, watch |
Lisez l'intention de routage pour la sélection des points de terminaison. |
gateway.envoyproxy.io |
envoyextensionpolicies, envoyproxies,
httproutefilters, clienttrafficpolicies,
securitypolicies |
Accès complet à | Configurez le plan de données de la passerelle et sa télémétrie. |
Noyau ("") |
configmaps, services,
serviceaccounts, events, secrets,
pods |
Accès complet pour configmapsservices, et pour serviceaccounts ; create et patch pour events ; getlist, et watch pour secrets et pods |
Gérez les charges de travail générées et lisez le routage et l'état de service. |
apps |
deployments |
Accès complet à | Gérez les déploiements de Body-Based Router et Endpoint Picker. |
rbac.authorization.k8s.io |
roles, rolebindings |
Accès complet à | Créez le Endpoint Picker par planificateur. Role |
discovery.k8s.io, coordination.k8s.io |
endpointslices; leases |
getlist, et watch pour endpointslices ; getlist,watch, createupdate, et patch pour leases |
Endpoint Discovery et élection du leader d'Endpoint Picker. |
networking.k8s.io |
ingresses, networkpolicies |
Accès complet à | Provisionnez le chemin de l'équilibreur de charge des applications via le AWS Load Balancer Controller. |
cert-manager.io |
issuers, certificates (avec getlist, et watch sur le noyausecrets) |
Accès complet à | Auto-issue un certificat TLS lorsqu'il spec.tls est défini sans. acmArn |
apiextensions.k8s.io |
customresourcedefinitions |
create; etget, updatepatch, et delete limité par le nom de la ressource aux CRD d'API Gateway spécifiques que la passerelle gère |
Installez les définitions de ressources personnalisées dont dépend la passerelle. |
Note
Le create verbe activé n'customresourcedefinitionsest pas limité à des noms de ressources spécifiques. Le contrôleur installe les définitions de ressources personnalisées de l'API Gateway dont il dépend en les appliquant au démarrage à partir de sa propre image de conteneur, car leur taille combinée dépasse la limite de charge utile du module complémentaire Amazon EKS. Kubernetes ne permet pas de limiter le create verbe aux ressources nommées, cette autorisation est donc nécessairement large. Toutes les autres opérations sur les définitions de ressources personnalisées (getupdate,patch, etdelete) sont limitées aux définitions de ressources personnalisées spécifiques gérées par la passerelle. Cette autorisation permet de définir uniquement ces types de CRD ; elle ne donne accès aux données d'aucune ressource personnalisée.
Le contrôleur crée également les rôles d'espace de noms suivants lors de l'exécution, en fonction de la configuration de votre passerelle :
-
Body-Based Routeur : espace de noms
Rolequi accordeget, etwatchonlistconfigmaps, que le routeur lit pour résoudre les adaptateurs LoRa. Lorsque le routeur traverse plusieurs espaces de noms, il s'agit d'un à laClusterRoleplace. -
Endpoint Picker : espace de noms
Rolequi accorde un accès en lecture à.podsLorsqu'un Endpoint Picker s'exécute avec plusieurs répliques, le contrôleur crée également une élection de leader pour etRole.leaseseventsLorsque les métriques Prometheus sont activées, le contrôleur crée une optionClusterRolequi accorde un accèscreateentokenreviewslignesubjectaccessreviewset en lecture au/metricsterminal.
Note
Lorsque vous activez la passerelle via l'opérateur d' HyperPod inférence, le contrôleur de l'opérateur est autorisé à créer et à mettre à jour InferenceGatewayConfig des ressources. Pour savoir comment l'opérateur connecte un modèle à la passerelle, voirIntégration avec l'opérateur HyperPod d'inférence.
Certaines de ces autorisations ne s'appliquent que lorsque la fonctionnalité correspondante est activée.
Observabilité
La passerelle d'inférence émet des métriques Prometheus depuis chaque composant de la passerelle. Le Body-Based routeur et chaque Endpoint Picker exposent un point de /metrics terminaison Prometheus standard sur leurs pods. Body-Based Les pods du routeur s'exécutent dans l'hyperpod-inference-systemespace de noms ; les pods Endpoint Picker s'exécutent dans le même espace de noms que le. InferenceGatewayConfig Les métriques couvrent les compteurs et les durées de requêtes par modèle, la planification de la latence et le temps d'exécution par plug-in dans Endpoint Picker, ainsi que les mesures de pool agrégées telles que l'utilisation moyenne du cache KV et la profondeur de la file d'attente. Model-server les métriques de pod (provenant par exemple de vLLM ou SGlang) sont émises par le serveur de modèles lui-même ; le Endpoint Picker les extrait pour évaluer les pods candidats.
Lorsque cette valeur spec.observability.metrics.enabled est true définie (par défaut), le contrôleur de passerelle injecte un side-car OpenTelemetry Collector dans chaque module Body-Based Router et Endpoint Picker. Le side-car transmet ces métriques à la pile d'observabilité par HyperPod inférence, où les tableaux de bord Grafana intégrés les présentent aux côtés des métriques modèle-serveur et cluster. Pour plus de détails sur la configuration et le tableau de bord, consultezMise en œuvre de l'observabilité par inférence sur les clusters HyperPod. Réglez le champ sur false pour ignorer l'injection de side-car. Pour la référence du champ, voir observability ci-dessouschamps de spécifications.
Pour afficher les mesures de passerelle dans Amazon Managed Grafana, ouvrez le dossier Inference Dashboards et sélectionnez le tableau de bord Inference Gateway. Le tableau de bord indique la disponibilité à l'échelle de la passerelle, le taux de demandes et la latence de bout en bout, le débit par planificateur, la latence et les erreurs pour chaque modèle, ainsi que la vitesse à laquelle le Body-Based routeur résout les noms de modèles à partir des corps de requête.
Exemples
Les exemples suivants montrent les InferenceGatewayConfig configurations courantes et la manière d'invoquer la passerelle.
Configuration multimodèle minimale
Cet exemple achemine vers un planificateur llm-d avec un protocole TLS émis automatiquement. Comme elle tls est définie sur un objet vide, la passerelle émet automatiquement un certificat et l'importe dans 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
Planificateur SGlang avec pondérations explicites
Cet exemple utilise le type de epp planificateur avec le sglang moteur et définit des pondérations de notation explicites pour Endpoint Picker.
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
adaptateur LoRa ConfigMap
Le Body-Based routeur découvre les adaptateurs LoRa et leur modèle de base à partir d'un système ConfigMap étiqueté pour la gestion BBR. Le routeur utilise ce mappage pour résoudre le nom d'un adaptateur dans le corps de la requête en son modèle de base.
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
Invoquer la passerelle
La passerelle sert de point de terminaison d' OpenAI-compatible inférence. Il s'agit du contrat d'invocation d'exécution pour l'envoi de demandes d'inférence via la passerelle ; il ne s'agit pas d'une opération d' AWS API. Envoyez des demandes au point de terminaison de la passerelle avec le model champ défini sur modelName celui du planificateur cible. Le Body-Based routeur lit ce champ pour acheminer la demande.
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"} ] }'