LE MÉDIA DE L’IA QUI SERT VRAIMENT.Édition française · Comprendre & passer à l’action
Microsoft

Piloter Azure Machine Learning (SDK v2) en Python

azure-ai-ml-py

En bref

Le SDK Azure Machine Learning v2 pour Python pilote les espaces de travail, les jobs, les modèles, les jeux de données, le calcul et les pipelines, principalement via MLClient. Le client peut s’appuyer sur un fichier config.json dans le répertoire courant ou un parent. Le skill décrit la gestion de l’espace de travail, les actifs de données (par exemple l’enregistrement d’un fichier) et le reste du cycle ML v2. DefaultAzureCredential sert en local ; une credentiel de jeton, en production. On ne mélange pas les usages sync et async du paquet azure.ai.ml. Ce n’est pas le SDK v1 historique, ni un client d’inférence générique hors espace AML.

Ce que ça fait

  • Couvre workspaces, jobs, registre de modèles, datasets, compute et pipelines du SDK v2.
  • Peut découvrir l’espace de travail via config.json, ou via une authentification Entra explicite.
  • N’est pas le plan de gestion ARM générique : il parle le modèle AML v2.
  • Évite les secrets d’espace de travail dans le code source.

Pour qui, et un exemple

Data scientists et ingénieurs ML qui orchestrent entraînement, données et registre depuis Python, dans Azure Machine Learning.

Exemple de demande : On enregistre un fichier en tant qu’actif de données, puis on soumet un job d’entraînement sur le compute du workspace, avec MLClient et DefaultAzureCredential.

Quand on cite azure-ai-ml, MLClient, un workspace, un registre de modèles, des jobs d’entraînement ou des datasets AML en Python. Exemple rédigé par iadujour.fr à partir du SKILL.md, non testé.

Installer

npx skills add microsoft/skills (sélection de la skill dans l’assistant, README).

npx skills add microsoft/skills

Fonctionne avec

  • GitHub Copilot
  • Copilot CLI

Source : README : exemples de « Copilot CLI » et « GitHub Copilot in VS Code » ; l’installation `npx skills add` envoie les fichiers vers le répertoire de l’agent choisi, sans liste exhaustive.

Niveau : Intermédiaire

Suppose un projet de l’éditeur et la maîtrise du SDK ou de la CLI correspondante.

À savoir

Dépôt officiel Microsoft ; le README le présente comme un travail en cours (skills et tests encore enrichis).

Extrait du SKILL.md

La description d’origine, celle que l’agent lit pour décider de charger la skill (en anglais) :

Azure Machine Learning SDK v2 for Python. Use for ML workspaces, jobs, models, datasets, compute, and pipelines. Triggers: "azure-ai-ml", "MLClient", "workspace", "model registry", "training jobs", "datasets".

Citée depuis le SKILL.md au commit e19efc2 . Le dossier contient aussi 2 fichiers annexes (references/).

Le SKILL.md compte 296 lignes et 28 sections principales :

  • Installation
  • Environment Variables
  • Authentication & Lifecycle
  • From Config File
  • Workspace Management
  • Create Workspace
  • List Workspaces
  • Data Assets
  • Register Data
  • Register Folder
  • Model Registry
  • Register Model
  • List Models
  • Compute
  • Create Compute Cluster
  • List Compute
  • Jobs
  • Command Job
  • Monitor Job
  • Pipelines
  • Environments
  • Create Custom Environment
  • Datastores
  • List Datastores
  • Get Default Datastore
  • MLClient Operations
  • Best Practices
  • Reference Files

Licence : MIT

Vérifiée le 10 novembre 2026 sur : fichier LICENSE du dépôt . Licence déclarée dans le frontmatter : « MIT ». Titulaire : Copyright (c) Microsoft Corporation..

La licence autorise la reprise : le texte intégral du SKILL.md est reproduit ci-dessous, sans modification, avec sa mention de licence.

Texte intégral du SKILL.md

Reproduit sans modification depuis microsoft/skills (commit e19efc2) , © Microsoft, sous licence MIT (fichier de licence d’origine ).

Afficher le SKILL.md original (296 lignes, en anglais)
---
name: azure-ai-ml-py
description: |
  Azure Machine Learning SDK v2 for Python. Use for ML workspaces, jobs, models, datasets, compute, and pipelines.
  Triggers: "azure-ai-ml", "MLClient", "workspace", "model registry", "training jobs", "datasets".
license: MIT
metadata:
  author: Microsoft
  version: "1.0.0"
  package: azure-ai-ml
---

# Azure Machine Learning SDK v2 for Python

Client library for managing Azure ML resources: workspaces, jobs, models, data, and compute.

## Installation

```bash
pip install azure-ai-ml
```

## Environment Variables

```bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id>  # Required for all auth methods
AZURE_RESOURCE_GROUP=<your-resource-group>  # Required for all auth methods
AZURE_ML_WORKSPACE_NAME=<your-workspace-name>  # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```

## Authentication & Lifecycle

> **🔑 Two rules apply to every code sample below:**
>
> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI / VS Code / Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account/API keys — they bypass Entra audit and rotation.
>    - Local dev: `DefaultAzureCredential` works as-is.
>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:
>    - Sync: `with <Client>(...) as client:`
>    - Async: `async with <Client>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)
>
> Snippets may abbreviate this setup, but production code should always follow both rules.

```python
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
import os

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()
with MLClient(
    credential=credential,
    subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
    resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
    workspace_name=os.environ["AZURE_ML_WORKSPACE_NAME"]
) as ml_client:
    for ws in ml_client.workspaces.list():
        print(ws.name)
```

### From Config File

```python
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

# Uses config.json in current directory or parent
with MLClient.from_config(
    credential=DefaultAzureCredential()
) as ml_client:
    for ws in ml_client.workspaces.list():
        print(ws.name)
```

> **Long-lived `ml_client`:** Subsequent examples in this skill assume `ml_client` was created via the pattern above and is alive for the lifetime of your script. In production, wrap your top-level workflow in a single `with MLClient(...) as ml_client:` block so the underlying HTTP transport closes cleanly on exit.

## Workspace Management

### Create Workspace

```python
from azure.ai.ml.entities import Workspace

ws = Workspace(
    name="my-workspace",
    location="eastus",
    display_name="My Workspace",
    description="ML workspace for experiments",
    tags={"purpose": "demo"}
)

ml_client.workspaces.begin_create(ws).result()
```

### List Workspaces

```python
for ws in ml_client.workspaces.list():
    print(f"{ws.name}: {ws.location}")
```

## Data Assets

### Register Data

```python
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# Register a file
my_data = Data(
    name="my-dataset",
    version="1",
    path="azureml://datastores/workspaceblobstore/paths/data/train.csv",
    type=AssetTypes.URI_FILE,
    description="Training data"
)

ml_client.data.create_or_update(my_data)
```

### Register Folder

```python
my_data = Data(
    name="my-folder-dataset",
    version="1",
    path="azureml://datastores/workspaceblobstore/paths/data/",
    type=AssetTypes.URI_FOLDER
)

ml_client.data.create_or_update(my_data)
```

## Model Registry

### Register Model

```python
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes

model = Model(
    name="my-model",
    version="1",
    path="./model/",
    type=AssetTypes.CUSTOM_MODEL,
    description="My trained model"
)

ml_client.models.create_or_update(model)
```

### List Models

```python
for model in ml_client.models.list(name="my-model"):
    print(f"{model.name} v{model.version}")
```

## Compute

### Create Compute Cluster

```python
from azure.ai.ml.entities import AmlCompute

cluster = AmlCompute(
    name="cpu-cluster",
    type="amlcompute",
    size="Standard_DS3_v2",
    min_instances=0,
    max_instances=4,
    idle_time_before_scale_down=120
)

ml_client.compute.begin_create_or_update(cluster).result()
```

### List Compute

```python
for compute in ml_client.compute.list():
    print(f"{compute.name}: {compute.type}")
```

## Jobs

### Command Job

```python
from azure.ai.ml import command, Input

job = command(
    code="./src",
    command="python train.py --data ${{inputs.data}} --lr ${{inputs.learning_rate}}",
    inputs={
        "data": Input(type="uri_folder", path="azureml:my-dataset:1"),
        "learning_rate": 0.01
    },
    environment="AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest",
    compute="cpu-cluster",
    display_name="training-job"
)

returned_job = ml_client.jobs.create_or_update(job)
print(f"Job URL: {returned_job.studio_url}")
```

### Monitor Job

```python
ml_client.jobs.stream(returned_job.name)
```

## Pipelines

```python
from azure.ai.ml import dsl, Input, Output
from azure.ai.ml.entities import Pipeline

@dsl.pipeline(
    compute="cpu-cluster",
    description="Training pipeline"
)
def training_pipeline(data_input):
    prep_step = prep_component(data=data_input)
    train_step = train_component(
        data=prep_step.outputs.output_data,
        learning_rate=0.01
    )
    return {"model": train_step.outputs.model}

pipeline = training_pipeline(
    data_input=Input(type="uri_folder", path="azureml:my-dataset:1")
)

pipeline_job = ml_client.jobs.create_or_update(pipeline)
```

## Environments

### Create Custom Environment

```python
from azure.ai.ml.entities import Environment

env = Environment(
    name="my-env",
    version="1",
    image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
    conda_file="./environment.yml"
)

ml_client.environments.create_or_update(env)
```

## Datastores

### List Datastores

```python
for ds in ml_client.datastores.list():
    print(f"{ds.name}: {ds.type}")
```

### Get Default Datastore

```python
default_ds = ml_client.datastores.get_default()
print(f"Default: {default_ds.name}")
```

## MLClient Operations

| Property | Operations |
|----------|------------|
| `workspaces` | create, get, list, delete |
| `jobs` | create_or_update, get, list, stream, cancel |
| `models` | create_or_update, get, list, archive |
| `data` | create_or_update, get, list |
| `compute` | begin_create_or_update, get, list, delete |
| `environments` | create_or_update, get, list |
| `datastores` | create_or_update, get, list, get_default |
| `components` | create_or_update, get, list |

## Best Practices

1. **Pick sync OR async and stay consistent.** Do not mix `azure.ai.ml` sync clients with `azure.ai.ml` async clients in the same call path. Choose one mode per module.
2. **Always use context managers for clients and async credentials.** Wrap every client in `with MLClient(...) as client:` (sync) or `async with MLClient(...) as client:` (async). For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.
3. **Use versioning** for data, models, and environments
4. **Configure idle scale-down** to reduce compute costs
5. **Use environments** for reproducible training
6. **Stream job logs** to monitor progress
7. **Register models** after successful training jobs
8. **Use pipelines** for multi-step workflows
9. **Tag resources** for organization and cost tracking

## Reference Files

| File | Contents |
|------|----------|
| [references/capabilities.md](references/capabilities.md) | Additional non-hero capabilities, operation-group coverage, and production checklists. |
| [references/non-hero-scenarios.md](references/non-hero-scenarios.md) | Dedicated non-hero examples for secondary/advanced scenarios. |
Source. Fiche rédigée par iadujour.fr à partir de : Frontmatter, sections et corps du SKILL.md, README du dépôt. Consultée le 10 novembre 2026. Dépôt : microsoft/skills .

Dans l’annuaire

Cas d’usage et guides qui partagent un thème, un métier ou un outil avec cette skill.

DANS L’ANNUAIRE

Cas d’usage liés.

Des fiches de l’annuaire qui partagent au moins deux mots-clés précis avec cette skill.

Productivité

Obtenir en quelques heures des prévisions de demande qui prenaient 160 heures

Danone a automatisé la planification de la demande dans 38 pays avec SAP IBP et des modèles de machine learning : les prévisions, qui demandaient 160 heures, sont obtenues entre 20 minutes et 4 heures, pour plus de 230 prévisionnistes.

Outil : SAP IBP et modèles de machine learning (Danone)Type : Repéré
Commercial

Recatégoriser des millions de fiches produits, pour +30 % de ventes, chez Cdiscount

Thomas Métivier, PDG de Cdiscount, a livré fin 2025 des chiffres de production : l’IA générative recatégorise les fiches, en complément du machine learning, et divise par deux le taux d’erreur. « Un produit qui est bien catégorisé fait 30 % de ventes en plus. » Dix millions de références ont déjà été retraitées.

Outil : IA générative (Cdiscount)Type : Repéré
MÊME ÉDITEUR

Autres skills Microsoft : IA et apprentissage automatique

Toute la catégorie
MicrosoftIA et apprentissage automatique

Créer, diagnostiquer et interroger une base de connaissances Foundry IQ

foundry-iq

Porte sur les bases de connaissances Foundry IQ : rendre recherchables des documents locaux ou Blob, créer ou diagnostiquer une base, trier un connecteur non pris en charge ou une base multi-sources (même avec un vocabulaire de recherche « classique »), relier une base existante à des agents, créer ou réutiliser un service Search, et interroger une base avec citations.

Outils : GitHub Copilot, Copilot CLINiveau : Débutantmàj 03/11/2026
MicrosoftIA et apprentissage automatique

Construire, déployer et exploiter agents et modèles Microsoft Foundry

microsoft-foundry

Couvre le cycle de vie complet des agents, modèles et ressources Microsoft Foundry : construction, déploiement, évaluation, optimisation, affinage et exploitation, y compris azd, les agents hébergés, les outils, les évaluations par lot ou continues, le CI/CD, l’optimiseur d’agent, le déploiement et l’affinage de modèles (SFT, DPO, RFT), le RBAC, les quotas, les régions et les index de connaissances.

Outils : GitHub Copilot, Copilot CLINiveau : Avancémàj 28/10/2026
ÉCHANGES

Commentaires.

Un retour d’expérience, une question, une précision sur cette skill ? Les commentaires sont relus avant publication.

Commentaires publiés

Chargement des commentaires…

    Laisser un commentaire

    Charte de modération. Chaque commentaire est relu avant publication. Sont refusés : l’incitation à la haine, les propos injurieux ou discriminatoires, la publicité, le spam et les liens promotionnels, le hors-sujet et les données personnelles d’autrui.