Module 1 — Espace de travail Azure ML et organisation des ressources
Un espace de travail Azure ML (workspace) n'est pas un service isolé mais un point d'orchestration qui agrège cinq services satellites dans un groupe de ressources unique. Comprendre cette topologie évite les deux erreurs les plus courantes : chercher un fichier de modèle dans le portail du workspace alors qu'il vit dans le compte de stockage, et pester contre un déploiement qui échoue parce que l'identité gérée du workspace n'a pas le droit de lire l'image.
Les cinq satellites obligatoires
À la création, Azure provisionne ou raccroche cinq ressources dans le même groupe de ressources :
| Ressource | Rôle |
|---|---|
Storage Account | stocke données, journaux, artefacts de tâche, snapshots de code |
Key Vault | stocke secrets, chaînes de connexion, identifiants d'accès aux données |
Container Registry (ACR) | héberge les images conteneurisées des environnements |
Application Insights | reçoit les journaux et métriques des tâches et des points de terminaison |
Log Analytics (via Insights) | index consultable par KQL sur les mêmes journaux |
Pour le fil rouge des magasins, ces cinq ressources sont créées d'un coup :
az group create -n rg-prev-demande -l westeurope
az ml workspace create -n mlw-prev-demande -g rg-prev-demande
La commande crée en cascade le compte de stockage mlwprevdemandestore, le coffre mlw-prev-demande-kv, le registre mlwprevdemandeacr, et l'instance Application Insights. Chaque nom Azure a ses règles (unicité globale pour le stockage, longueur maximale pour l'ACR) : laisser la CLI générer les noms au premier essai est le plus sûr.
Le contrat implicite du groupe de ressources
Toutes les ressources d'un même workspace doivent vivre dans le même groupe de ressources et la même région. Ce n'est pas une bonne pratique, c'est une contrainte du produit. En pratique, un projet par groupe de ressources donne un modèle mental clair : rg-prev-demande-dev, rg-prev-demande-prod. Le contrôle des coûts (module 10) et la suppression complète en une commande deviennent triviaux.
Un anti-patron courant consiste à partager un compte de stockage entre plusieurs workspaces « pour économiser ». Le coût du stockage est marginal, et la contention sur les journaux de tâches devient rapidement infernale à débuguer.
Identités et rôles : qui a le droit de quoi
L'espace de travail est protégé par le contrôle d'accès basé sur les rôles Azure (Azure RBAC). Trois rôles suffisent à couvrir l'immense majorité des cas :
Reader: voit l'espace dans le portail, ne lance rienAzureML Data Scientist: lance des tâches, publie des modèles, ne modifie ni le calcul ni les permissionsAzureML Compute Operator: crée et supprime des grappes de calcul, sans toucher aux données
Le rôle Contributor classique d'Azure donne trop de droits pour une équipe de science des données. Il est réservé à l'ingénieur qui provisionne l'infrastructure.
L'identité gérée du workspace
À la création, Azure attribue au workspace une identité gérée assignée par le système (system-assigned managed identity). C'est elle qui, par défaut, lit et écrit dans le compte de stockage, tire les images de l'ACR, et écrit dans Application Insights. Deux corollaires importants :
- Un accès données au nom de l'identité du workspace ne demande aucun secret dans le code ; la variable d'environnement
DefaultAzureCredentialdu SDK suffit. - Si un jeu de données pointe vers un compte de stockage externe au groupe de ressources, il faut explicitement accorder le rôle
Storage Blob Data Readerà l'identité duworkspacesur ce compte. C'est la première cause d'échec au déploiement.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
ml_client = MLClient(
credential=DefaultAzureCredential(),
subscription_id="00000000-0000-0000-0000-000000000000",
resource_group_name="rg-prev-demande",
workspace_name="mlw-prev-demande",
)
print(ml_client.workspace_name)
Ce MLClient est l'objet unique qui sert dans tout le reste du cours : c'est lui qui reçoit les définitions de calcul, de données, d'environnement et de tâche.
En résumé
- Un
workspaceAzure ML agrège cinq satellites (Storage,Key Vault,ACR,App Insights,Log Analytics) dans le mêmegroupe de ressourceset la même région - Séparer les environnements par groupe de ressources et non par partage de stockage, la suppression et l'analyse de coûts en dépendent
- Utiliser les rôles
AzureML Data ScientistetAzureML Compute Operatorplutôt queContributor, plus fin et plus sûr - L'identité gérée du workspace doit avoir accès à toute ressource externe (stockage, ACR privé) sinon les tâches échouent au démarrage sans message clair
Le module suivant s'appuie sur cet espace pour choisir les cibles de calcul : instances de développement, grappes à mise à l'échelle automatique et calcul sans serveur.