Découverte de capacité
Trouve la capacité disponible des modèles Azure OpenAI dans toutes les régions et projets accessibles. Recommande le meilleur emplacement de déploiement en fonction des besoins en capacité.
Référence rapide
| Propriété | Description |
|---|---|
| Objectif | Trouver où déployer un modèle avec une capacité suffisante |
| Périmètre | Toutes les régions et projets auxquels l'utilisateur a accès |
| Sortie | Tableau classé des régions/projets avec capacité disponible |
| Action | Analyse en lecture seule — NE déploie PAS. Passe à preset ou customize |
| Authentification | Azure CLI (az login) |
Quand utiliser cette compétence
- ✅ L'utilisateur demande « où puis-je déployer gpt-4o ? »
- ✅ L'utilisateur spécifie une cible de capacité : « trouve une région avec 10K TPM pour gpt-4o »
- ✅ L'utilisateur veut comparer la disponibilité : « quelles régions ont gpt-4o disponible ? »
- ✅ L'utilisateur a reçu une erreur de quota et a besoin de trouver un emplacement alternatif
- ✅ L'utilisateur demande « meilleure région et projet pour déployer le modèle X »
Après la découverte → passe à preset ou customize pour le déploiement réel.
Scripts
Des scripts pré-construits gèrent les appels REST API complexes et le traitement des données. Utilise-les au lieu de construire manuellement les commandes.
| Script | Objectif | Utilisation |
|---|---|---|
scripts/discover_and_rank.ps1 |
Découverte complète : capacité + projets + classement | Script principal pour la découverte de capacité |
scripts/discover_and_rank.sh |
Identique (bash) | Script principal pour la découverte de capacité |
scripts/query_capacity.ps1 |
Requête de capacité brute (pas de matching de projets) | Vérification rapide de capacité ou listage de versions |
scripts/query_capacity.sh |
Identique (bash) | Vérification rapide de capacité ou listage de versions |
Workflow
Phase 1 : Valider les prérequis
az account show --query "{Subscription:name, SubscriptionId:id}" --output table
Phase 2 : Identifier le modèle et la version
Extrais le nom du modèle à partir du message de l'utilisateur. Si la version est inconnue, interroge les versions disponibles :
.\scripts\query_capacity.ps1 -ModelName <model-name>
./scripts/query_capacity.sh <model-name>
Ceci liste les versions disponibles. Utilise la dernière version sauf si l'utilisateur en spécifie une autre.
Phase 3 : Exécuter la découverte
Exécute le script de découverte complète avec le nom du modèle, la version et la cible de capacité minimale :
.\scripts\discover_and_rank.ps1 -ModelName <model-name> -ModelVersion <version> -MinCapacity <target>
./scripts/discover_and_rank.sh <model-name> <version> <min-capacity>
💡 Le script interroge automatiquement la capacité dans TOUTES les régions, croise avec les projets existants de l'utilisateur, et affiche un tableau classé par : répond à la cible → nombre de projets → capacité disponible.
Phase 3.5 : Valider le quota de l'abonnement
Après que la découverte identifie les régions candidates, valide que l'abonnement de l'utilisateur a effectivement un quota disponible dans chaque région. La capacité du modèle (Phase 3) montre ce que la plateforme peut supporter, mais le quota d'abonnement limite ce que cet utilisateur spécifique peut déployer.
# Pour chaque région candidate dans les résultats de découverte :
$usageData = az cognitiveservices usage list --location <region> --subscription $SUBSCRIPTION_ID -o json 2>$null | ConvertFrom-Json
# Vérifie le quota pour chaque SKU que le modèle supporte
# Les noms de quota suivent le motif : OpenAI.<SKU>.<model-name>
$usageEntry = $usageData | Where-Object { $_.name.value -eq "OpenAI.<SKU>.<model-name>" }
if ($usageEntry) {
$quotaAvailable = $usageEntry.limit - $usageEntry.currentValue
} else {
$quotaAvailable = 0 # Aucun quota alloué
}
# Pour chaque région candidate dans les résultats de découverte :
usage_json=$(az cognitiveservices usage list --location <region> --subscription "$SUBSCRIPTION_ID" -o json 2>/dev/null)
# Extrait le quota pour un SKU+modèle spécifique
quota_available=$(echo "$usage_json" | jq -r --arg name "OpenAI.<SKU>.<model-name>" \
'.[] | select(.name.value == $name) | .limit - .currentValue')
Annote les résultats de découverte :
Ajoute une colonne « Quota disponible » au résultat classé de la Phase 3 :
| Région | Capacité disponible | Répond à la cible | Projets | Quota disponible |
|---|---|---|---|---|
| eastus2 | 120K TPM | ✅ | 3 | ✅ 80K |
| westus3 | 90K TPM | ✅ | 1 | ❌ 0 (à la limite) |
| swedencentral | 100K TPM | ✅ | 0 | ✅ 100K |
Les régions/SKU où quotaAvailable = 0 doivent être marqués avec ❌ dans les résultats. Si aucune région n'a de quota disponible, passe à la compétence quota pour les demandes d'augmentation et la résolution de problèmes.
Phase 4 : Présenter les résultats et passer à la phase suivante
Après que le script affiche le tableau classé (maintenant annoté avec les infos de quota), présente-le à l'utilisateur et demande :
- 🚀 Déploiement rapide vers la meilleure recommandation avec les valeurs par défaut → route vers preset
- ⚙️ Déploiement personnalisé avec sélection version/SKU/capacité/RAI → route vers customize
- 📊 Vérifier un autre modèle ou cible de capacité → ré-exécute Phase 2
- ❌ Annuler
Phase 5 : Confirmer le projet avant de déployer
Avant de passer à preset ou customize, confirme toujours le projet cible avec l'utilisateur. Voir les règles Project Selection dans le routeur parent.
Si le tableau de découverte affiche un exemple de projet pour la région choisie, suggère-le par défaut. Sinon, interroge les projets dans cette région et laisse l'utilisateur choisir.
Gestion des erreurs
| Erreur | Cause | Résolution |
|---|---|---|
| « Aucune capacité trouvée » | Modèle non disponible ou tous au quota | Passe à la compétence quota pour les demandes d'augmentation et la résolution de problèmes |
| Erreur d'authentification du script | az login expiré |
Ré-exécute az login |
| Liste de versions vide | Modèle absent du catalogue régional | Essaye une région différente : ./scripts/query_capacity.sh <model> "" eastus |
| « Aucun projet trouvé » | Aucune ressource AI Services | Guide vers la compétence project/create ou Azure Portal |