Partager via


Commencer à utiliser les déploiements provisionnés sur Azure OpenAI Service

Le guide suivant vous guide dans la mise en place d'un déploiement provisionné avec votre ressource Azure OpenAI Service.

Prérequis

  • Un abonnement Azure - En créer un gratuitement
  • Accès accordé à Azure OpenAI dans l’abonnement Azure souhaité. L’accès à ce service se fait sur l’application. Vous pouvez demander l’accès à Azure OpenAI Service en complétant le formulaire à l’adresse https://aka.ms/oai/access.
  • Obtention d’un quota pour un déploiement approvisionné et achat d’un engagement.

Remarque

Les unités de débit provisionnées (PTU) sont différentes des quotas standard dans Azure OpenAI et ne sont pas disponibles par défaut. Pour en savoir plus sur cette offre, contactez l'équipe de votre compte Microsoft.

Créez votre déploiement provisionné

Après avoir acheté un engagement sur votre quota, vous pouvez créer un déploiement. Pour créer un déploiement provisionné, vous pouvez suivre les étapes suivantes ; les choix décrits reflètent les entrées affichées dans la capture d'écran.

Screenshot of the Azure OpenAI Studio deployment page for a provisioned deployment.

  1. Connectez-vous à Azure OpenAI Studio
  2. Choisissez l'abonnement qui a été activé pour les déploiements provisionnés et sélectionnez la ressource souhaitée dans une région où vous disposez du quota.
  3. Sous Gestion dans la navigation de gauche, sélectionnez Déploiements.
  4. Sélectionnez Créer un nouveau déploiement et configurez les champs suivants. Développez la liste déroulante « options avancées ».
  5. Complétez les valeurs de chaque champ. Voici un exemple :
Champ Description Exemple
Sélectionner un modèle Choisissez le modèle spécifique que vous souhaitez déployer. GPT-4
Version du modèle Choisissez la version du modèle à déployer. 0613
Nom du déploiement Le nom du déploiement est utilisé dans votre code pour appeler le modèle à l’aide des bibliothèques clientes et les API REST. gpt-4
Filtre de contenu Spécifiez la stratégie de filtrage à appliquer au déploiement. Découvrez-en plus sur notre procédure de filtrage de contenu. Par défaut
Type de déploiement Cela a un impact sur le débit et la performance. Choisissez Géré-Provisionné pour votre déploiement provisionné Géré-Provisionné
Unités de débit approvisionnées Choisissez la quantité de débit que vous souhaitez inclure dans le déploiement. 100

Si vous souhaitez créer votre déploiement de manière programmatique, vous pouvez le faire à l'aide de la commande de l’interface de ligne de commande Azure suivante. 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 relative à l’automatisation des déploiements dans le guide pratique de gestion des quotas et remplacez la valeur « Standard » de sku.name par « ProvisionedManaged ».

Effectuez vos premiers appels

Le code d’inférence pour les déploiements provisionnés est le même que pour le type de déploiement standard. L'extrait de code suivant montre un appel de complétion de chat à un modèle GPT-4. Si c’est la première fois que vous utilisez ces modèles par programmation, nous vous recommandons de commencer par notre guide de démarrage rapide. Nous recommandons d'utiliser la bibliothèque OpenAI avec la version 1.0 ou supérieure, car elle inclut la logique de nouvelle tentative.

    #Note: The openai-python library support for Azure OpenAI is in preview. 
    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-02-01"
    )

    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 AI 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 l’article de sécurité Azure AI services.

Compréhension du 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 le nombre total de jetons traités peuvent varier en fonction de ces valeurs. La méthode que nous recommandons pour déterminer le débit de votre déploiement est la suivante :

  1. Utilisez le calculateur de capacité pour une estimation de la taille. Vous pouvez trouver le calculateur de capacité dans Azure OpenAI Studio sous la page des quotas et l'onglet Provisionné.
  2. Étalonnez la charge à l'aide d'une charge de travail en trafic réel. Pour plus d’informations sur l’évaluation, consultez la section point de référence.

Mesurez l’utilisation de votre déploiement

Lorsque vous déployez un nombre spécifique d'unités de débit provisionnées (PTU), une quantité définie de débit d'inférence est mise à la disposition de ce point d'extrémité. L'utilisation de ce débit est une formule complexe basée sur le modèle, le taux d'appel modèle-version, la taille de l'invite, la taille de la génération. Pour simplifier ce calcul, nous fournissons une mesure d'utilisation dans Azure Monitor. Votre déploiement renvoie un 429 sur tous les nouveaux appels une fois que l'utilisation dépasse 100 %. L’utilisation provisionnée est définie comme suit :

Utilisation du déploiement des PTU = (PTU consommées au cours de la période) / (PTU déployées au cours de 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 et sélectionnez la page Mesures dans le menu de gauche. Sur la page des mesures, sélectionnez la mesure « Utilisation managée provisionnée ». Si vous avez plus d'un déploiement dans la ressource, vous devez également diviser les valeurs pour chaque déploiement en cliquant sur le bouton « Appliquer la division ».

Screenshot of the provisioned managed utilization on the resource's metrics blade in the Azure portal.

Pour plus d’informations sur la surveillance de vos déploiements, consultez la page Surveillance Azure OpenAI Service.

Gestion de l’utilisation élevée

Les déploiements provisionnés vous permettent de disposer d'une capacité de calcul allouée pour l'exécution d'un modèle donné. L'indicateur « Utilisation gérée provisionnée » dans Azure Monitor mesure l'utilisation du déploiement par incréments d'une minute. Les déploiements gérés provisionnés sont également optimisés pour que les appels acceptés soient traités avec une latence maximale constante par appel. Lorsque la charge de travail dépasse la capacité allouée, le service renvoie un code d'état HTTP 429 jusqu'à ce que l'utilisation descende en dessous de 100 %. Heure avant la nouvelle tentative est fournie dans les en-têtes de réponse retry-after et retry-after-ms qui fournissent respectivement la durée en secondes et en millisecondes. Cette approche permet de maintenir les objectifs de latence par appel tout en donnant au développeur le contrôle sur la manière de gérer les situations de forte charge ; par exemple, réessayer ou détourner vers une autre expérience/un autre point de terminaison.

Que dois-je faire lorsque 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 d’attente avant l’acceptation de l’appel suivant. La façon dont vous choisissez de traiter une réponse 429 dépend des exigences de votre application. Voici quelques éléments à prendre en compte :

  • 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 temps retry-after-ms et réessayer. Cette approche permet de maximiser le débit du déploiement. Les SDK clients fournis par Microsoft le gèrent déjà avec des valeurs par défaut raisonnables. Il se peut que vous ayez encore besoin d’ajustements supplémentaires 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 la moins lente car cette action peut être entreprise dès que vous recevez le signal 429. Le signal 429 n'est pas une réponse d'erreur inattendue en cas d'utilisation élevée, mais fait partie de la conception de la gestion des files d'attente et des charges élevées pour les déploiements provisionnés.

Modification de la logique de nouvelle tentative dans les bibliothèques du client

Les SDK Azure OpenAI tentent 429 réponses par défaut et en coulisses dans le client (jusqu'au nombre maximum de tentatives). Les bibliothèques respectent le temps retry-after. Vous pouvez également modifier le comportement de nouvelle tentative pour qu’il corresponde mieux à 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 :

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-02-01",
    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 AI services support this too?"}
    ]
)

Exécuter un point de référence

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 est d'effectuer une analyse comparative sur vos propres données.

Pour vous aider dans cette tâche, l'outil d'analyse comparative permet d'effectuer facilement des analyses comparatives de votre déploiement. L'outil est livré avec plusieurs formes de charge de travail préconfigurées et fournit des mesures de performance clés. En savoir plus sur les paramètres d’outil et de configuration dans notre dépôt GitHub : https://aka.ms/aoai/benchmarking.

Nous vous recommandons le flux de travail suivant :

  1. Estimez vos unités de débit à l’aide de la calculatrice de capacité.
  2. Exécutez un point de référence avec cette forme de trafic pendant une période prolongée (plus de 10 minutes) afin d'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 référence et d'Azure Monitor.
  4. Exécutez un point de référence avec votre propre forme de trafic et vos propres charges de travail en utilisant l'implémentation de votre client. Veillez à mettre en œuvre la logique de nouvelle tentative à l'aide d'une bibliothèque client Azure Openai ou d'une logique personnalisée.

Étapes suivantes