AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The Azure Machine Learning SDK v2 for Python provides a comprehensive interface for interacting with Azure ML resources. It enables developers to programmatically manage the entire machine learning lifecycle, from workspace configuration and data asset registration to compute cluster management, job execution, and pipeline orchestration. The SDK emphasizes secure authentication via DefaultAzureCredential and resource management through the MLClient class.
What it does
- Manage Azure ML workspaces, datastores, and compute clusters
- Register and version data assets and machine learning models
- Execute and monitor training jobs and complex pipelines
- Define and manage custom environments for reproducible training
- Support both synchronous and asynchronous operations for resource management
When to use it
- When automating the deployment and management of Azure ML infrastructure
- When integrating machine learning workflows into CI/CD pipelines
- When managing model registries and data assets programmatically
- When scaling machine learning experiments across cloud compute resources
Advantages
- Unified client interface for all Azure ML resource operations
- Native support for secure, identity-based authentication
- Enables reproducible workflows through versioned assets and environments
- Supports complex multi-step pipeline orchestration
Usage examples
- “How do I list all workspaces in my Azure ML subscription?”
- The agent provides a code snippet using MLClient.list() to iterate through and print available workspaces.
- “Show me how to register a new dataset in Azure ML.”
- The agent demonstrates creating a Data entity and using ml_client.data.create_or_update to register it.
- “How can I trigger a training job using the Python SDK?”
- The agent provides an example of defining a command job with inputs, environment, and compute settings, then submitting it via ml_client.jobs.create_or_update.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/microsoft/azure-ai-ml-py/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip azure-ai-ml-py.zip -d .agents/skills
Documentation by Microsoft
Azure Machine Learning SDK v2 for Python
Client library for managing Azure ML resources: workspaces, jobs, models, data, and compute.
Installation
pip install azure-ai-mlEnvironment Variables
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 productionAuthentication & Lifecycle
🔑 Two rules apply to every code sample below:
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:
DefaultAzureCredentialworks as-is.Production: set
AZURE_TOKEN_CREDENTIALS=prod(orAZURE_TOKEN_CREDENTIALS=<specific_credential>) to constrain the credential chain to production-safe credentials.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:andasync with DefaultAzureCredential() as credential:(fromazure.identity.aio)Snippets may abbreviate this setup, but production code should always follow both rules.
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
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 assumeml_clientwas created via the pattern above and is alive for the lifetime of your script. In production, wrap your top-level workflow in a singlewith MLClient(...) as ml_client:block so the underlying HTTP transport closes cleanly on exit.
Workspace Management
Create Workspace
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
for ws in ml_client.workspaces.list():
print(f"{ws.name}: {ws.location}")Data Assets
Register Data
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
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
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
for model in ml_client.models.list(name="my-model"):
print(f"{model.name} v{model.version}")Compute
Create Compute Cluster
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
for compute in ml_client.compute.list():
print(f"{compute.name}: {compute.type}")Jobs
Command Job
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
ml_client.jobs.stream(returned_job.name)Pipelines
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
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
for ds in ml_client.datastores.list():
print(f"{ds.name}: {ds.type}")Get Default Datastore
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
Pick sync OR async and stay consistent. Do not mix
azure.ai.mlsync clients withazure.ai.mlasync clients in the same call path. Choose one mode per module.Always use context managers for clients and async credentials. Wrap every client in
with MLClient(...) as client:(sync) orasync with MLClient(...) as client:(async). For asyncDefaultAzureCredentialfromazure.identity.aio, also useasync with credential:so tokens and transports are cleaned up.Use versioning for data, models, and environments
Configure idle scale-down to reduce compute costs
Use environments for reproducible training
Stream job logs to monitor progress
Register models after successful training jobs
Use pipelines for multi-step workflows
Tag resources for organization and cost tracking
Reference Files
| File | Contents |
|---|---|
| references/capabilities.md | Additional non-hero capabilities, operation-group coverage, and production checklists. |
| references/non-hero-scenarios.md | Dedicated non-hero examples for secondary/advanced scenarios. |
Files
- ATTRIBUTION.mdAdded by AutoGineer953 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md8.6 KiB
- references/capabilities.md1.6 KiB
- references/non-hero-scenarios.md2.4 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an API key, Needs Python
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Microsoft
- Publisher
- Microsoft (Official)
- Source
- microsoft/skills · .github/plugins/azure-sdk-python/skills/azure-ai-ml-py · commit 0696600
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Microsoft.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download azure-ai-ml-py.zip