azure-ai-ml-py

CategoryCoding
AuthorAgentic Awesome Skills 社区
LicenseMIT
Rating4.20/5
Uses7.7K

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>
AZURE_RESOURCE_GROUP=<your-resource-group>
AZURE_ML_WORKSPACE_NAME=<your-workspace-name>

Authentication

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

ml_client = MLClient(
credential=DefaultAzureCredential(),
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"],
resource_group_name=os.environ["AZURE_RESOURCE_GROUP"],
workspace_name=os.environ["AZURE_ML_WORKSPACE_NAME"]
)

From Config File

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

Uses config.json in current directory or parent

ml_client = MLClient.from_config( credential=DefaultAzureCredential() )

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. Use versioning for data, models, and environments
2. Configure idle scale-down to reduce compute costs
3. Use environments for reproducible training
4. Stream job logs to monitor progress
5. Register models after successful training jobs
6. Use pipelines for multi-step workflows
7. Tag resources for organization and cost tracking

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Join our Telegram