Prise en main des déploiements provisionnés dans Microsoft Foundry

Le guide suivant vous guide tout au long des étapes clés de création d’un déploiement provisionné avec votre ressource Microsoft Foundry. Pour plus d’informations sur les concepts abordés ici, consultez :

Conditions préalables

Vérifier la disponibilité du quota PTU

Les déploiements de débit approvisionné sont dimensionnés en unités appelées PTU (Unités de Débit Approvisionné). Le quota de PTU pour chaque type de déploiement provisionné est accordé à un abonnement régionalement et limite le nombre total de PTUs pouvant être déployés dans cette région à travers les modèles et les versions.

La création d’un nouveau déploiement nécessite un quota disponible (inutilisé) pour couvrir la taille souhaitée du déploiement. Par exemple : Si un abonnement comporte les éléments suivants dans la région USA Centre Sud :

  • Quota total de PTU = 500 PTU
  • Déploiements:
    • 100 PTUs : GPT-4o, 2024-05-13
    • 100 unités de traitement : DeepSeek-R1, 1

Ensuite, 200 PTUs de quota sont considérés comme utilisés, et 300 PTUs sont disponibles pour créer de nouveaux déploiements.

Une quantité par défaut de quota global, de zone de données et de quota provisionné régional est affectée aux abonnements éligibles dans plusieurs régions.

Vous pouvez afficher le quota disponible dans une région en visitant le volet Quota dans la section Microsoft FoundryOperate et en sélectionnant l’abonnement et la région souhaités.

Vous pouvez demander un quota supplémentaire en sélectionnant le bouton Demander le quota .

Créer une ressource Foundry

Les déploiements provisionnés sont créés via des objets de ressources Foundry dans Azure. Vous devez disposer d’une ressource Foundry dans chaque région où vous envisagez de créer un déploiement.

Note

Les ressources Foundry peuvent prendre en charge plusieurs types de déploiements Foundry en même temps. Il n’est pas nécessaire de dédier de nouvelles ressources pour vos déploiements provisionnés.

Découvrir des modèles avec l’option de déploiement provisionné

Une fois que vous avez vérifié votre quota, vous pouvez créer un déploiement. Accédez au catalogue de modèles Foundry pour découvrir les modèles avec les options de déploiement approvisionnées.

  1. Connectez-vous à Microsoft Foundry. Vérifiez que le commutateur New Foundry est activé. Ces étapes font référence à Foundry (nouveau).
  2. Dans la page d’accueil du portail Foundry, choisissez l’abonnement activé pour les déploiements provisionnés et sélectionnez la ressource souhaitée dans une région où vous disposez du quota.
  3. Sélectionnez Découvrir dans le volet supérieur droit, puis Modèles dans le volet gauche.
  4. Sélectionnez le filtre Collections et filtrez par Direct à partir de Azure pour voir les modèles conservés et servis directement par Azure. Une sélection de ces modèles prend en charge l’option de déploiement de débit provisionné.
  5. Sélectionnez le modèle que vous souhaitez déployer pour ouvrir sa carte de modèle.
  6. Sélectionnez Déployer>des paramètres personnalisés pour personnaliser votre déploiement.
  7. Sélectionnez le menu déroulant Type de déploiement pour voir si le déploiement provisionné est disponible pour le modèle.

Créer votre déploiement provisionné : la capacité est disponible

Vous pouvez créer votre déploiement par programmation à l’aide de la commande Azure CLI suivante. Pour spécifier le type de déploiement, modifiez-le sku-nameGlobalProvisionedManagedDataZoneProvisionedManagedou ProvisionedManaged en fonction du type de déploiement prévu. Mettez à jour le sku-capacity avec le nombre souhaité d’unités de débit approvisionnées.

az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group <myResourceGroupName> \
--deployment-name MyModel \
--model-name GPT-4 \
--model-version 0613  \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged

Rest, modèle ARM, Bicep et Terraform peuvent également être utilisés pour créer des déploiements. Consultez la section sur l’automatisation des déploiements dans le guide pratique de gestion des quotas et remplacez sku.name par GlobalProvisionedManaged, DataZoneProvisionedManaged ou ProvisionedManaged plutôt que par Standard.

Acheter éventuellement une réservation

Après la création de votre déploiement, vous pouvez acheter une remise sur une durée déterminée via une Réservation Azure. Une réservation Azure peut fournir une remise substantielle sur le tarif horaire pour les utilisateurs ayant l’intention d’utiliser le déploiement au-delà de quelques jours.

Pour plus d’informations sur le modèle d’achat et les réservations, consultez :

Important

La disponibilité de la capacité pour les déploiements de modèles est dynamique et change fréquemment entre les régions et les modèles. Pour éviter d’acheter une réservation pour plus de PTU que vous ne pouvez en utiliser, créez d’abord des déploiements, puis achetez la réservation Azure pour couvrir les PTU que vous avez déployés. Cette bonne pratique garantit que vous pouvez tirer pleinement parti de la remise de réservation et vous empêcher d’acheter un engagement à terme que vous ne pouvez pas utiliser.

Effectuer vos premiers appels d’inférence

Le code d’inférence pour les déploiements provisionnés est identique à un type de déploiement standard. L'extrait de code suivant montre un appel de complétions de conversation à un modèle GPT-4. Pour votre première utilisation de ces modèles par programmation, nous vous recommandons de commencer par notre guide de démarrage rapide. Notre recommandation est d’utiliser la bibliothèque OpenAI avec la version 1.0 ou ultérieure, car cela inclut une logique de nouvelle tentative dans la bibliothèque.

    import os
    from openai import AzureOpenAI

    client = AzureOpenAI(
        azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
        api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
        api_version="2024-10-21"
    )

    response = client.chat.completions.create(
        model="gpt-4", # model = "deployment_name".
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
            {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
            {"role": "user", "content": "Do other Azure services support this too?"}
        ]
    )

    print(response.choices[0].message.content)

Important

Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez cet article de sécurité .

Comprendre le débit attendu

La quantité de débit que vous pouvez obtenir sur le point de terminaison est un facteur du nombre de PROCESSEURs déployés, de taille d’entrée, de taille de sortie et de taux d’appel. Le nombre d’appels simultanés et de jetons totaux traités peut varier en fonction de ces valeurs.

Mesurer l’utilisation du déploiement

Lorsque vous déployez un nombre spécifié d’unités de débit approvisionnées (PTU), une quantité définie de débit d’inférence est mise à la disposition de ce point de terminaison. L'utilisation de ce débit repose sur une formule complexe prenant en compte le modèle, le taux d'appels pour chaque version de modèle, la taille des invites, et la taille de génération. Pour simplifier ce calcul, nous fournissons une métrique d’utilisation dans Azure Monitor. Votre déploiement répond d’un code 429 pour tous les nouveaux appels lorsque l'utilisation dépasse 100%. L’utilisation provisionnée est définie comme suit :

Utilisation du déploiement de PTU = (PTUs consommées pendant la période) / (PTUs déployées pendant la période)

Vous trouverez la mesure d’utilisation dans la section Azure-Monitor de votre ressource. Pour accéder aux tableaux de bord de surveillance, connectez-vous à https://portal.azure.com, accédez à votre ressource OpenAI Azure et sélectionnez la page Métriques dans le volet de navigation gauche. Dans la page des métriques, sélectionnez la métrique « Utilisation managée provisionnée V2 ». Si vous avez plusieurs déploiements dans la ressource, vous devez également fractionner les valeurs par chaque déploiement en sélectionnant le bouton « Appliquer le fractionnement ».

Capture d'écran de l'utilisation gérée provisionnée dans le panneau des métriques de la ressource sur le portail Azure.

Gérer une utilisation élevée

Les déploiements provisionnés vous fournissent une quantité allouée de capacité de calcul pour exécuter un modèle donné. La métrique « Provisioned-Managed Utilization V2 » dans Azure Monitor mesure l’utilisation du déploiement par incréments d’une minute. Les déploiements gérés Provisioned-Managed sont également optimisés afin que les appels acceptés soient traités avec une latence maximale cohérente par appel. Lorsque la charge de travail dépasse sa capacité allouée, le service retourne un code d’état HTTP 429 jusqu’à ce que l’utilisation tombe en dessous de 100%. L'heure avant la nouvelle tentative est fournie dans les en-têtes de réponse retry-after et retry-after-ms, qui indiquent respectivement la durée en secondes et en millisecondes. Cette approche maintient les cibles de latence par appel tout en donnant au développeur le contrôle sur la façon de gérer des situations à charge élevée , par exemple réessayer ou rediriger vers une autre expérience/point de terminaison.

Que dois-je faire quand je reçois une réponse 429 ?

Une réponse 429 indique que les processeurs alloués sont entièrement consommés au moment de l’appel. La réponse inclut les en-têtes retry-after-ms et retry-after, qui vous indiquent le temps à attendre avant que l'appel suivant soit accepté. La façon dont vous choisissez de gérer une réponse 429 dépend des exigences de votre application. Voici quelques considérations :

  • Si vous êtes d’accord avec des latences plus longues par appel, implémentez la logique de nouvelle tentative côté client pour attendre le retry-after-ms temps et réessayer. Cette approche vous permet d’optimiser la performance du déploiement. les sdk clients fournis Microsoft le gèrent déjà avec des valeurs par défaut raisonnables. Vous aurez peut-être encore besoin d’un réglage supplémentaire en fonction de vos cas d’utilisation.
  • Envisagez de rediriger le trafic vers d’autres modèles, déploiements ou expériences. Cette approche est la solution à latence la plus faible, car cette action peut être effectuée dès que vous recevez le signal 429. Le signal 429 n’est pas une réponse d’erreur inattendue lors de la poussée vers une utilisation élevée, mais plutôt une partie de la conception pour gérer la mise en file d’attente et la charge élevée des déploiements provisionnés.

Modification de la logique de nouvelle tentative dans les bibliothèques clientes

Les kits de développement logiciel (SDK) OpenAI Azure réessayent 429 réponses par défaut et en arrière-plan dans le client (jusqu’aux nouvelles tentatives maximales). Les bibliothèques respectent le retry-after temps. Vous pouvez également modifier le comportement de nouvelle tentative pour mieux répondre à votre expérience. Voici un exemple avec la bibliothèque Python.

Vous pouvez utiliser l’option max_retries pour configurer ou désactiver les paramètres de nouvelle tentative :

import os
from openai import AzureOpenAI

# Configure the default for all requests:
client = AzureOpenAI(
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version="2024-10-21",
    max_retries=5,# default is 2
)

# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
    model="gpt-4", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure services support this too?"}
    ]
)

Exécuter un benchmark

Les performances et le débit exacts de votre instance dépendent du type de requêtes que vous effectuez et de la charge de travail exacte. La meilleure façon de déterminer le débit de votre charge de travail consiste à exécuter un benchmark sur vos propres données.

Pour vous aider dans ce travail, l’outil d’évaluation offre un moyen d’exécuter facilement des benchmarks sur votre déploiement. L’outil est fourni avec plusieurs formes de charge de travail préconfigurées possibles et génère des métriques de performances clés. En savoir plus sur les paramètres d’outil et de configuration dans notre dépôt de GitHub : https://github.com/Azure/azure-openai-benchmark.

Nous vous recommandons le flux de travail suivant :

  1. Estimez vos PTUs de débit avec le calculateur de capacité.
  2. Exécutez un benchmark avec cette forme de trafic pendant une période prolongée (10+ min) pour observer les résultats dans un état stable.
  3. Observez l’utilisation, les jetons traités et les valeurs du taux d’appel à partir de l’outil de benchmark et d'Azure Monitor.
  4. Exécutez un benchmark avec votre propre forme de trafic et vos charges de travail à l’aide de votre implémentation du client. Veillez à implémenter une logique de nouvelle tentative à l’aide d’une bibliothèque de client OpenAI Azure ou d’une logique personnalisée.