9. Glossary and Cheatsheet
Glossary
| Term | One line |
|---|---|
| Workspace | The regional ARM resource that owns everything. Check its kind before assuming what it is |
kind |
Default (Azure ML), Hub / Project (Foundry classic), FeatureStore. Same resource type, different products |
| Dependent resources | The storage account, Key Vault, Application Insights, and container registry beside every workspace. They survive workspace deletion |
| Datastore | A saved, named connection to a storage service with its auth attached |
workspaceblobstore |
The default datastore on the workspace's own storage account. Job outputs and snapshots land here |
| Data asset | A named, versioned pointer to data — uri_file, uri_folder, or mltable. Not a copy, not a snapshot |
| MLTable | A spec file describing how to load a folder of data — schema, delimiters, partitions |
| Environment | A versioned image + dependency spec, materialised and cached in ACR |
| Curated environment | Microsoft-maintained, prebuilt, in the shared azureml registry. Fast; you don't control what's in it |
| Job | One tracked execution. Types: command, sweep, pipeline, automl, spark |
| Experiment | A name you group jobs under. Nothing more than that |
| Code snapshot | The upload of the job's code directory at submission. A real copy, unlike a data asset. Governed by .amlignore |
| Component | A reusable, versioned pipeline step with a typed input/output interface |
| Pipeline job | A DAG of components, with step-level caching and per-step compute |
| Sweep | A hyperparameter search over a command job, with an early-termination policy |
| AutoML | Azure ML searching models and hyperparameters for you |
| Model | A versioned artifact: custom_model, mlflow_model (prefer this), or triton_model |
| Registry | A separate ARM resource sharing models, environments, and components across workspaces and regions. The promotion mechanism |
| Compute instance | A single-user managed dev VM. Billed per hour while running. Set idle shutdown |
Compute cluster / AmlCompute |
An autoscaling job pool. Set min_instances = 0 |
| Serverless compute | Nodes Azure ML manages; you specify size and count on the job |
| Kubernetes compute | Your AKS or Arc cluster with the Azure ML extension, attached to the workspace |
| Spot / low-priority | Cheap, evictable nodes. Separate quota pool. Right for sweeps, wrong for one long run |
| Online endpoint | A stable HTTPS address with an auth mode. Managed or Kubernetes |
| Deployment | Model + environment + scoring script + instance type + count, behind an endpoint |
| Traffic split | Percentages across an endpoint's deployments. Your canary and your rollback |
| Batch endpoint | Submit a job over a dataset; runs on a cluster, writes outputs. Pays only while running |
| Scoring script | init() once per instance (load the model here), run() per request |
init() / run() |
Loading the model in run() is the classic latency bug |
| Managed VNet | Azure-run network isolation for compute. Disabled / AllowInternetOutbound / AllowOnlyApprovedOutbound |
AllowOnlyApprovedOutbound |
Egress only to declared FQDNs and private endpoints. Provisions a billed managed firewall |
| Model data collection | A per-deployment switch writing request/response payloads to storage, for drift analysis |
| Data drift | Production input distribution has moved away from the training baseline. The failure infra telemetry won't show you |
AzureML Data Scientist |
Data-plane role: run jobs, manage assets. Cannot create compute |
AzureML Compute Operator |
Control-plane role: start/stop/manage compute without full Contributor |
| Soft delete | Workspaces (and Key Vaults) go to a recycle bin; the name stays reserved |
| Purge protection | Key Vault: a one-way door. Once on, a deleted vault cannot be purged early |
azapi |
The Terraform provider that talks raw ARM, for resource types azurerm hasn't modelled — here, online deployments and registries |
Commands you will actually type
Setup
az extension add -n ml # or: az extension update -n ml
az configure --defaults group=<rg> workspace=<ws>
Quota — check before anything else
az ml compute list-usage --location eastus -o table
Workspace
az ml workspace create -n <ws> -g <rg> -l <loc>
az ml workspace show -n <ws> -g <rg>
az ml workspace list-deleted -o table
az ml workspace purge -n <ws> -g <rg> -l <loc> # frees a soft-deleted name
Compute
az ml compute create -n cpu-cluster --type AmlCompute \
--size Standard_DS3_v2 --min-instances 0 --max-instances 4 \
--idle-time-before-scale-down 300
az ml compute list -o table
az ml compute update -n cpu-cluster --max-instances 8
az ml compute stop -n <instance-name> # compute INSTANCES only
az ml compute start -n <instance-name>
az ml compute delete -n cpu-cluster --yes
Jobs
az ml job create -f job.yml --web
az ml job create -f job.yml --set inputs.n_estimators=500 # override without editing
az ml job list -o table
az ml job stream -n <job-name>
az ml job cancel -n <job-name>
az ml job download -n <job-name> --output-name model --download-path ./out
Assets
az ml data create -f data.yml
az ml environment create -f environment.yml
az ml model create -n iris-rf --version 1 --type mlflow_model \
--path azureml://jobs/<job>/outputs/artifacts/model
az ml model list -o table
az ml model archive -n iris-rf --version 1 # soft-hide, not delete
Registries — promotion
az ml model create --registry-name reg-mlops -f model.yml
az ml model share -n fraud-rf --version 12 \
--registry-name reg-mlops --share-with-name fraud-rf --share-with-version 12
⚠️ Registry command surface has changed across releases — verify against az ml model --help.
Endpoints and deployments — the blue/green loop
az ml online-endpoint create -n <ep> --auth-mode AADToken
az ml online-deployment create -f deployment-green.yml # created at 0% traffic
az ml online-endpoint invoke -n <ep> --deployment-name green --request-file sample.json
az ml online-endpoint update -n <ep> --traffic "blue=90 green=10"
az ml online-endpoint show -n <ep> --query traffic
# ROLLBACK
az ml online-endpoint update -n <ep> --traffic "blue=100 green=0"
az ml online-deployment get-logs --endpoint-name <ep> --name green --lines 200
az ml online-deployment delete --endpoint-name <ep> --name green --yes
az ml online-endpoint delete -n <ep> --yes
Batch
az ml batch-endpoint create -n <bep>
az ml batch-deployment create -f batch-deployment.yml --set-default
az ml batch-endpoint invoke -n <bep> --input azureml:my-data:3
Teardown
az group delete -n <rg> --yes --no-wait
az ml workspace list-deleted -o table # confirm nothing lingers
Resource ID and URI shapes
# Workspace
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.MachineLearningServices/workspaces/{ws}
# Compute
.../workspaces/{ws}/computes/{name}
# Online endpoint and deployment
.../workspaces/{ws}/onlineEndpoints/{ep}
.../workspaces/{ws}/onlineEndpoints/{ep}/deployments/{name}
# Registry (a separate top-level resource, not under a workspace)
/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.MachineLearningServices/registries/{reg}
Asset references inside YAML and the SDK use the azureml: scheme:
azureml:my-model:7 # workspace asset, pinned version
azureml:my-model@latest # workspace asset, latest — never in prod
azureml://registries/{reg}/models/{name}/versions/{n}
azureml://registries/azureml/environments/sklearn-1.5/labels/latest # curated
azureml://jobs/{job}/outputs/artifacts/model
azureml://datastores/{ds}/paths/{path}
Endpoints:
Workspace data plane : https://{region}.api.azureml.ms
Scoring : https://{endpoint}.{region}.inference.ml.azure.com/score
Studio : https://ml.azure.com
MLflow in three lines
import mlflow
mlflow.set_tracking_uri(ml_client.workspaces.get(ws).mlflow_tracking_uri)
mlflow.sklearn.autolog()
Inside a job submitted to Azure ML, the tracking URI is already set — mlflow.log_metric(...) just
works with no Azure imports.
Limits worth knowing — with their scope
A number without a scope is useless in Azure. All of these vary by subscription type and region; read the live values rather than trusting any table, including this one.
| Limit | Counted per | How to check |
|---|---|---|
| Dedicated vCPU, per VM family | subscription × region × family | az ml compute list-usage, portal Usage + quotas |
| Low-priority (Spot) vCPU | subscription × region (separate pool) | same |
| Managed online endpoint quota | subscription × region (separate pool again) | portal Usage + quotas |
| Endpoints per workspace | workspace | Azure docs / portal |
| Deployments per endpoint | endpoint | Azure docs |
| Nodes per compute cluster | cluster (and bounded by family quota) | cluster config |
| Workspaces per resource group | resource group | Azure docs |
| Workspace soft-delete retention | workspace | az ml workspace list-deleted |
| Key Vault soft-delete retention | vault | vault properties |
⚠️ Every figure above is a shape, not a value. Verify against current Azure docs and your own subscription before designing to any of them.
Decision cheatsheet
| Question | Answer |
|---|---|
| Training my own model, or calling a foundation model? | Own → Azure ML. Calling → Foundry |
| Authoring or running? | Authoring → compute instance (with idle shutdown). Running → cluster or serverless |
Cluster min_instances? |
0. If you're arguing otherwise, measure first |
| Spot or dedicated? | Sweeps and checkpointed work → Spot. One long run your release depends on → dedicated |
| Real-time or bulk? | Sub-second per request → managed online endpoint. Large batches, latency-tolerant → batch endpoint (much cheaper) |
| Spiky traffic, cost-sensitive? | Not a managed online endpoint — there's no scale-to-zero. Batch endpoint, or a Container App |
| Key auth or Entra ID on the endpoint? | Entra ID (AADToken). Key auth is for the first hour |
| One deployment or two? | Two. blue and green. The second one is your rollback |
| How do I roll back? | az ml online-endpoint update --traffic "blue=100 green=0" |
| Promoting a model between environments? | A registry. Not a file copy |
@latest in a spec? |
Fine in dev, never in prod |
Terraform or az ml? |
ARM resources → Terraform. Assets, models, deployments, traffic → az ml |
| Where's my money going? | A running compute instance, a cluster floor, or an idle online deployment. In that order |
Next: back to the Azure Machine Learning overview, or on to the next topic in the article.
← Back to the Azure Machine Learning overview · ← Previous: Interview Questions