View a markdown version of this page

Meilleures pratiques en matière d'évolutivité et de débit - Amazon Bedrock

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.

Meilleures pratiques en matière d'évolutivité et de débit

Cette rubrique explique comment les limites de débit et la planification fonctionnent sur les terminaux Amazon Bedrock et fournit les meilleures pratiques pour faire évoluer vos applications d'IA génératives.

Points de terminaison Amazon Bedrock

Amazon Bedrock prend en charge deux points de terminaison pour l'inférence :

  • bedrock-mantle.{region}.api.aws— Prend en charge les API OpenAI-compatible Chat Completions and Responses et l'API Anthropic Messages.

  • bedrock-runtime.{region}.amazonaws.com— Supporte les API Bedrock-native InvokeModel et Converse, les API OpenAI-compatible Chat Completions and Responses et l'API Anthropic Messages.

Pour la plupart des nouvelles applications, commencez parbedrock-runtime. À utiliser bedrock-mantle lorsque vous avez besoin de fonctionnalités disponibles uniquement sur ce terminal, telles que des outils côté serveur, l'inférence en arrière-plan, des projets, des espaces de travail ou un modèle disponible uniquement sur. bedrock-mantle Vous pouvez utiliser les deux terminaux dans la même application. Pour une comparaison complète, voirPoints de terminaison pris en charge par Amazon Bedrock.

Pourquoi les deux terminaux se comportent différemment

Les deux surfaces de terminaison utilisent le même moteur d'inférence sous-jacent, mais leurs options de comptabilisation des quotas et de capacité diffèrent. bedrock-runtimeutilise des quotas de jetons par modèle et, pour certains modèles, des quotas de demandes par minute (RPM). bedrock-mantlen'applique pas de quotas RPM et utilise des quotas de jetons d'entrée et de jetons de sortie distincts pour les modèles qui ont publié des quotas. D'autres modèles activés n'ont bedrock-mantle peut-être pas de quotas par compte exposés dans les quotas de service, mais leur débit est toujours régi par la capacité de service interne.

Un quota est une limite supérieure et ne garantit pas que chaque demande à la demande sera traitée immédiatement. Pendant les périodes de forte demande, les demandes peuvent être mises en file d'attente ou recevoir des erreurs de capacité transitoires. Concevez votre application de manière à limiter la simultanéité, à travailler en file d'attente et à réessayer les erreurs transitoires sans créer de nouvelles tentatives.

point final du manteau rocheux : débit et quotas

Le bedrock-mantle terminal présente le comportement de quota suivant :

  • Les modèles dont les quotas sont publiés ont des quotas distincts par modèle, par région en termes de jetons d'entrée par minute et de jetons de sortie par minute.

  • Le point de terminaison n'applique pas les quotas RPM. Deux charges de travail ayant le même RPM peuvent consommer des quantités de capacité très différentes. Planifiez et limitez le débit en fonction des jetons et de la simultanéité plutôt que du nombre de tours par minute uniquement.

  • Lorsqu'une demande est admise, la vérification des jetons d'entrée inclut les jetons d'entrée plus la valeur demandée. max_tokens Une fois la réponse terminée, la partie inutilisée de cette réservation est réapprovisionnée. Ne définissez max_tokens pas plus haut que ce dont votre application a besoin.

  • Les modèles sans quotas de TPM publiés n'ont actuellement pas de quotas de TPM par compte exposés dans les quotas de service. Cela ne signifie pas que le débit est illimité ; la capacité de service interne et la limitation du débit transitoire s'appliquent toujours.

  • L'inférence par lots et le débit provisionné ne sont disponibles que via. bedrock-runtime Service-tier et la prise en charge des modèles varie selon le modèle.

Les valeurs par défaut et les allocations de votre compte peuvent varier en fonction du modèle, de la région et de l'historique d'utilisation. Pour les valeurs actuelles, les détails de l'évaluation des quotas et la procédure d' AWS assistance pour demander une augmentation, consultezQuotas pour la limite entre le substrat rocheux et le manteau. Consultez les informations applicables Les modèles en un coup d'œil pour la prise en charge des terminaux, des niveaux de service et des fonctionnalités spécifiques au modèle.

point final d'exécution fondamental : débit et quotas

Le bedrock-runtime terminal présente le comportement de quota suivant :

  • Per-model, Les quotas de jetons par région comptent les jetons d'entrée et de sortie ensemble. Les jetons de sortie consomment un quota en fonction d'un taux de combustion spécifique au modèle.

  • Certains modèles ont également des quotas de tours par minute, tandis que d'autres modèles ne sont régis que par des quotas de jetons. Vérifiez les quotas qui s'appliquent au modèle exact et au profil d'inférence que vous utilisez.

  • Per-minute et les quotas de jetons par jour sont partagés entre les API d'inférence qui appellent le même modèle sur ce point de terminaison. Les allocations sont destinées à bedrock-runtime et bedrock-mantle sont indépendantes.

  • Les profils d'inférence personnalisés, l'inférence par lots et le débit provisionné ont des quotas distincts et ne sont disponibles que via. bedrock-runtime

Pour les valeurs de quota actuelles, les détails de la combustion des jetons et le processus d'augmentation des quotas, consultez. Quotas pour le paramètre d'exécution fondamental Consultez les informations applicables Les modèles en un coup d'œil pour la prise en charge des terminaux, des niveaux de service et des fonctionnalités spécifiques au modèle.

Comprendre les réponses aux erreurs HTTP

HTTP 429

Une réponse 429 signifie que la demande n'a pas été admise. Inspectez le type API-specific d'erreur plutôt que de vous fier uniquement au statut HTTP. Une erreur de limite de débit ThrottlingException ou de débit signifie généralement que la demande a dépassé un quota de compte ou une limite de débit de service. Certaines opérations d'exécution utilisent également HTTP 429 pourModelNotReadyException. Activébedrock-mantle, vérifiez l'utilisation du TPM en entrée et en sortie et la max_tokens valeur de la demande ; le terminal n'a pas de quota de RPM. Activébedrock-runtime, cochez les quotas de jetons combinés et le nombre de tours par minute, si le modèle dispose d'un quota de tours par minute.

HTTP 503

Une réponse 503 signifie que le service est temporairement incapable de traiter la demande en raison d'une forte demande ou d'une contrainte de capacité. Cela n'indique pas que vous avez dépassé le quota de votre compte. Réessayez les réponses transitoires avec un retard exponentiel et une gigue. Si la réponse persiste, arrêtez d'augmenter le trafic, réduisez la simultanéité et envisagez une autre inférence régionale ou interrégionale si elle est prise en charge.

HTTP 529 () overloaded_error

Certaines API de modèle renvoient 529 lorsque le modèle est temporairement incapable de traiter la demande en raison d'une forte demande ou d'une capacité de service insuffisante. Traitez-la comme une erreur de capacité transitoire. Si la réponse inclut un Retry-After en-tête, attendez au moins cette durée avant de réessayer et ajoutez du jitter afin que les clients ne réessayent pas simultanément.

Pour connaître API-specific les causes et les étapes de résolution, consultezRésolution des codes d’erreur d’API Amazon Bedrock.

Gestion des erreurs recommandée

Erreurs transitoires

Réessayez uniquement les erreurs qui peuvent être réessayées en toute sécurité, telles que les erreurs de limitation transitoire et de capacité. Si le service renvoie un Retry-After en-tête, respectez-le. Sinon, implémentez un ralentissement exponentiel avec une gigue aléatoire :

  • Commencez avec un court délai (par exemple, 1 seconde).

  • Augmentez le délai après chaque nouvelle tentative et plafonnez le délai maximum en fonction du budget de latence de votre application.

  • Ajoutez une instabilité aléatoire et évitez les nouvelles tentatives synchronisées entre les collaborateurs.

  • Utilisez un budget de nouvelles tentatives limité qui correspond à l'objectif de latence de votre application. Par exemple, limitez l'opération à six tentatives au total : la demande initiale et jusqu'à cinq nouvelles tentatives.

La plupart AWS des SDK et bibliothèques HTTP populaires fournissent un support intégré pour ce modèle. Retry-setting les noms diffèrent : celui de botocore total_max_attempts inclut la demande initiale, tandis que celui des SDK max_retries OpenAI et Anthropic ne compte que les nouvelles tentatives. Les exemples suivants utilisent donc des valeurs numériques différentes pour fournir le même exemple de budget pour six tentatives.

Exemple Réessayez la configuration pour bedrock-runtime ()AWS SDK/démarrage (3)
import boto3 from botocore.config import Config config = Config(retries={"total_max_attempts": 6, "mode": "standard"}) client = boto3.client("bedrock-runtime", config=config)
Exemple Réessayez la configuration pour bedrock-mantle (SDK OpenAI)
from openai import OpenAI client = OpenAI( api_key=api_key, base_url=f"https://bedrock-mantle.{region}.api.aws/v1", max_retries=5, )
Exemple Réessayez la configuration pour le manteau rocheux (Anthropic SDK)
import anthropic client = anthropic.Anthropic( api_key=api_key, base_url=f"https://bedrock-mantle.{region}.api.aws/anthropic", max_retries=5, )

Configurez les délais de connexion et de lecture séparément des nouvelles tentatives, en fonction du modèle et de la durée d'inférence maximale documentée de l'opération. Un délai d'attente plus court qu'une demande d'inférence valide de longue durée peut entraîner des tentatives évitables et des doublons.

Erreurs de capacité persistantes

Si vous recevez des erreurs 503 ou 529 persistantes, les nouvelles tentatives peuvent à elles seules amplifier la charge. Le service est peut-être confronté à une contrainte de capacité temporaire ou la charge de travail peut dépasser la capacité actuellement disponible pour le modèle et la région. Suivez les étapes suivantes:

  • Arrêtez la rampe et revenez au dernier taux de demande stable et au dernier niveau de simultanéité.

  • Utilisez la simultanéité limitée côté client, la limitation de débit et les files d'attente de demandes.

  • Reportez ou supprimez les demandes de moindre priorité jusqu'à ce que la capacité soit rétablie.

  • Pourbedrock-runtime, utilisez l'inférence interrégionale lorsque le modèle le prend en charge. Pour des charges de travail prévisibles et durables, évaluez le débit provisionné.

  • Si le problème persiste, consultez le tableau de bord de AWS santé et contactez le AWS support en indiquant les numéros de demande et l'horodatage UTC.

Augmenter le débit

On-demand la capacité peut varier selon le modèle, la région et l'heure. Le succès de toutes les demandes ne dépassant pas un quota n'est pas garanti pendant les périodes de forte demande. Vous devez donc augmenter progressivement lorsque vous lancez une charge de travail, changez de modèle ou de région ou augmentez considérablement le trafic. Ceci est particulièrement important pour les bedrock-mantle modèles qui n'ont pas de quota publié par compte.

Procédure de montée en puissance recommandée

  1. Estimez le taux de jetons cible et la simultanéité pour chaque point de terminaison, modèle et région. Pourbedrock-mantle, suivez les jetons d'entrée et de sortie séparément et incluez la max_tokens valeur demandée dans l'estimation d'admission des jetons d'entrée.

  2. Commencez par un niveau de référence stable connu en dessous de la cible. Si vous ne disposez pas d'une base de référence, commencez par une petite charge représentative au lieu d'envoyer le volume cible complet.

  3. Maintenez chaque niveau suffisamment longtemps pour observer le succès des requêtes, les erreurs 429/503 /529, les percentiles de latence, la consommation de jetons, la simultanéité et la profondeur de la file d'attente.

  4. Augmentez une étape contrôlée à la fois. Ne modifiez qu'une seule dimension de charge principale à la fois afin de pouvoir identifier la cause d'une régression.

  5. Si la limitation, les erreurs de capacité ou la latence dépassent votre seuil, mettez la rampe en pause, respectez n'importe quel Retry-After en-tête et revenez au dernier niveau stable.

  6. Continuez jusqu'à ce que vous atteigniez la cible et répétez la validation pour chaque modèle et chaque région qui recevront du trafic de production.

Choisissez la taille de l'étape et la période d'observation en fonction de la latence et du schéma de trafic de votre charge de travail. N'utilisez pas le RPM comme seul signal de commande : la taille des jetons de demande et la longueur des réponses peuvent modifier considérablement la consommation de capacité, même lorsque le RPM reste constant.

Pour les augmentations de bedrock-mantle quotas, suivezDemande d’augmentation de quota. Pourbedrock-runtime, suivezDemande d’augmentation de quota.

Bonnes pratiques supplémentaires

  • Utilisez des indicateurs de fonctionnalité pour transférer progressivement le trafic entre les modèles plutôt que de changer tout le trafic en une seule fois.

  • Répartissez les charges de travail importantes sur plusieurs minutes et tenez compte des horaires pour éviter les périodes de pointe d'utilisation.

  • Testez avec des distributions représentatives de la taille d'entrée, de la taille de sortie, de la latence et de la simultanéité. Évitez d'envoyer une rafale soudaine de demandes de test.

  • Utilisez la limitation de débit côté client, la simultanéité limitée et les files d'attente limitées tenant compte des jetons. Un RPM-only limiteur ne protège pas contre les modifications de la taille des demandes.

  • Pour les tâches hors ligne asynchrones à volume élevé, utilisez l'inférence par lots sur. bedrock-runtime

  • Pour les modèles pris en charge et les demandes non sensibles au facteur temps qui peuvent tolérer une latence variable, pensez au niveau de service Flex.

Disponibilité régionale et inférence interrégionale

On-demand la capacité est régionale et peut varier d'une région à l'autre. Si votre charge de travail cible une seule région, celle-ci peut rencontrer des erreurs de capacité pendant les périodes de forte demande. Avec bedrock-runtime, à utiliser Inférence interrégionale mondiale lorsque le modèle et vos exigences en matière de résidence des données le permettent. Si vous implémentez votre propre basculement régional, vérifiez la disponibilité du modèle dans chaque région cible et appliquez des nouvelles tentatives limitées afin que le basculement ne crée pas d'augmentation du trafic.

Obtenir de l'aide

  • Planification du débit  : estimez les pics d'entrée et de sortie, la latence de réponse, la concurrence et la tolérance de mise en file d'attente pour chaque modèle et chaque région. Incluez une marge de manœuvre spécifique à la charge de travail et contactez votre Compte AWS équipe pour les lancements importants ou critiques pour l'entreprise.

  • Optimisation des performances  : surveillez la taille des invites, les jetons générésmax_tokens, les percentiles de latence et l'utilisation du cache lorsque cela est pris en charge. Optimisez les invites et les limites de sortie pour éviter de réserver ou de consommer des jetons inutiles.

  • Escalade du support  : lorsque vous ouvrez un dossier de AWS support, indiquez l'identifiant du point de terminaison, de la région, du modèle ou du profil d'inférence, l'état HTTP et le type d'erreur d'API, les identifiants de demande, les horodatages UTC, le taux de jetons, le taux de demandes, la simultanéité et votre calendrier de mise à l'échelle.

Résumé des recommandations

Scénario Recommendation
Charges de travail générales Commencez parbedrock-runtime. À utiliser bedrock-mantle pour les fonctionnalités ou les modèles qui l'exigent. Consultez Points de terminaison pris en charge par Amazon Bedrock.
Erreurs transitoires 429, 503 ou 529 Vérifiez le type d'erreur de l'API. Pour les erreurs susceptibles d'être réessayées, respectez Retry-After et réessayez avec un retard exponentiel et une instabilité dans les limites d'un budget de nouvelles tentatives limité.
Erreurs de capacité persistantes Arrêtez la montée en puissance, revenez au dernier niveau stable, limitez la simultanéité et les files d'attente, reportez les tâches les moins prioritaires et utilisez l'inférence interrégionale lorsque cela est possible.
Planification des quotas Utilisez des TPM d'entrée et de sortie séparés pourbedrock-mantle. Utilisez des quotas de jetons combinés, un burndown de jetons et un RPM, le cas échéant pourbedrock-runtime.
Traitement hors ligne de grande envergure Utilisez l'inférence par lots pour les tâches asynchrones. Utilisez le niveau de service Flex pour les demandes prises en charge, non sensibles au facteur temps et pouvant tolérer une latence variable.