docs(architect): weekly KB update — 52 files refreshed (2026-04)

Key content changes:
- MLOps: MLflow 3 scorers expanded (RetrievalRelevance, Fluency, multi-turn judges)
- MLflow 3 A/B eval: mirror_traffic GA confirmed, new scorer catalog
- CI/CD: OIDC auth replaces deprecated --sdk-auth (Azure ML GitHub Actions)
- Agent framework A2A: updated SDK patterns (A2ACardResolver, BearerAuth)
- AG-UI backend tool rendering: accurate TOOL_CALL_* event shapes
- Computer Use agents: US region requirement, credentials patterns
- Purview governance: bulk term edit, expire/delete workflows
- CAF AI Secure: 3-phase structure confirmed current
- Copilot Studio: Claude Sonnet 4.5/4.6 GA, new orchestration controls
- M365 manifest: v1.26 GA (April 2026), copilotAgents node
- Power Platform: agent flow capacity enforcement corrected
- Azure Monitor: Simple Log Alerts GA, AMBA for policy-based alerting
- Security Copilot: SCU capacity model (400 SCU/1000 users)
- EU Data Boundary: all EU + EFTA countries confirmed
- gateway-multi-backend: added 4th topology, subscription-level quota note

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-04-10 11:31:11 +02:00
commit be4925a8ff
40 changed files with 398 additions and 239 deletions

View file

@ -1,6 +1,6 @@
# Azure ML Pipelines - Orchestration and Automation
**Last updated:** 2026-02
**Last updated:** 2026-04
**Verified:** MCP 2026-04
**Status:** GA
**Category:** MLOps & GenAIOps
@ -22,59 +22,81 @@ Fra et kostnads- og effektivitetsperspektiv gir pipelines betydelige fordeler: d
### Pipeline Components (v2)
### Azure ML Pipelines — Python SDK v2 (Tutorial 2026)
### Azure ML Pipelines — Python SDK v2 (Tutorial, Verified MCP 2026-04)
**Key benefits**: Standardized MLOps, scalable team collaboration, training efficiency, cost reduction.
**Key benefits**: Standardized MLOps practice, scalable team collaboration, training efficiency, cost reduction.
**Pipeline creation pattern** (SDK v2):
**Pipeline creation pattern** (SDK v2 — from official tutorial):
```python
from azure.ai.ml import MLClient, dsl, Input, Output, command
from azure.identity import DefaultAzureCredential
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace)
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception:
credential = InteractiveBrowserCredential()
# 1. Create reusable components
ml_client = MLClient(credential, subscription_id, resource_group, workspace)
# Note: MLClient initialization is lazy — no connection until first call
# 1. Create reusable components (programmatic definition)
data_prep_component = command(
name="data_prep",
name="data_prep_credit_defaults",
inputs={"data": Input(type="uri_folder"), "test_train_ratio": Input(type="number")},
outputs={"train_data": Output(type="uri_folder"), "test_data": Output(type="uri_folder")},
outputs={"train_data": Output(type="uri_folder", mode="rw_mount"),
"test_data": Output(type="uri_folder", mode="rw_mount")},
code="./components/data_prep",
command="python data_prep.py --data ${{inputs.data}} ...",
environment=f"{env.name}:{env.version}",
command="python data_prep.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} ...",
environment=f"{pipeline_job_env.name}:{pipeline_job_env.version}",
)
# Register for reuse
ml_client.create_or_update(data_prep_component.component)
data_prep_component = ml_client.create_or_update(data_prep_component.component)
# 2. Define pipeline with @dsl.pipeline decorator
@dsl.pipeline(compute="serverless", description="E2E training pipeline")
def training_pipeline(data_input, test_train_ratio, learning_rate, model_name):
@dsl.pipeline(
compute="serverless", # "serverless" runs on serverless compute
description="E2E data_prep-train pipeline",
)
def credit_defaults_pipeline(data_input, test_train_ratio, learning_rate, registered_model_name):
prep_job = data_prep_component(data=data_input, test_train_ratio=test_train_ratio)
train_job = train_component(
train_data=prep_job.outputs.train_data,
test_data=prep_job.outputs.test_data,
learning_rate=learning_rate,
registered_model_name=model_name,
registered_model_name=registered_model_name,
)
return {
"pipeline_job_train_data": prep_job.outputs.train_data,
"pipeline_job_test_data": prep_job.outputs.test_data,
}
# 3. Submit pipeline
pipeline_job = ml_client.jobs.create_or_update(
training_pipeline(data_input=..., ...),
experiment_name="e2e_pipeline"
credit_defaults_pipeline(
data_input=Input(type="uri_file", path=credit_data.path),
test_train_ratio=0.25,
learning_rate=0.05,
registered_model_name="credit_defaults_model",
),
experiment_name="e2e_registered_components"
)
ml_client.jobs.stream(pipeline_job.name)
```
**Component lifecycle**:
1. Write YAML spec or create programmatically (`CommandComponent`)
2. Register with name+version in workspace or registry
3. Load and compose into pipeline
4. Submit via `ml_client.jobs.create_or_update()`
1. Write YAML spec (`train.yml`) or create programmatically (`CommandComponent` / `command()`)
2. Register with name+version: `ml_client.create_or_update(component)`
3. Load and compose into pipeline using `@dsl.pipeline` decorator
4. Submit via `ml_client.jobs.create_or_update()` with experiment name
**Compute options**: `serverless` (recommended), named compute cluster, or per-step compute override.
**Environment**: Curated environments (`azureml://registries/azureml/environments/sklearn-1.5/labels/latest`) or custom conda/Docker.
**Compute options**: `serverless` (recommended — zero config), named compute cluster, or per-step compute override (e.g., `train_step.compute = "cpu-cluster"`).
**Environment**: Curated environments (`azureml://registries/azureml/environments/sklearn-1.0/labels/latest`) or custom conda/Docker (base image: `mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest`).
**Output types**: `uri_folder` (data), `mlflow_model` (model), `uri_file` (file).
**MLflow integration**: Use `mlflow.start_run()` in scripts for automatic experiment tracking (metrics, parameters, models).
**MLflow integration**: Use `mlflow.start_run()` + `mlflow.sklearn.autolog()` in training scripts for automatic experiment tracking. Models registered via `mlflow.sklearn.log_model()` with `registered_model_name`.
**VNet note**: If workspace uses a managed virtual network, add outbound rules to allow access to public Python package repositories.
| Komponent-type | Beskrivelse | Bruksområde |
|----------------|-------------|-------------|
@ -564,41 +586,41 @@ Er det >3 steg i workflow?
1. **What are Azure Machine Learning pipelines?**
https://learn.microsoft.com/en-us/azure/machine-learning/concept-ml-pipelines?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
2. **Schedule machine learning pipeline jobs**
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-schedule-pipeline-job?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
3. **Create and run machine learning pipelines using components with the Azure Machine Learning SDK v2**
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-create-component-pipeline-python?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
4. **Tutorial: Create production machine learning pipelines**
https://learn.microsoft.com/en-us/azure/machine-learning/tutorial-pipeline-python-sdk?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
5. **Use parallel jobs in pipelines**
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-use-parallel-job-in-pipeline?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
6. **Manage inputs and outputs for components and pipelines**
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-inputs-outputs-pipeline?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
7. **Create jobs and input data for batch endpoints**
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-access-data-batch-endpoints-jobs?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
8. **Upgrade pipeline endpoints to SDK v2**
https://learn.microsoft.com/en-us/azure/machine-learning/migrate-to-v2-deploy-pipelines?view=azureml-api-2
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
### Code Samples (Verified)
- **Azure ML Examples Repository (azureml-examples/sdk/python/schedules):**
https://github.com/Azure/azureml-examples
*Confidence: Verified (Feb 2026)*
*Confidence: Verified (April 2026)*
### Konfidensgradering per seksjon
@ -613,5 +635,5 @@ Er det >3 steg i workflow?
| Kostnad og lisensiering | Verified + Baseline | MS Learn: cost considerations + Azure pricing |
| For arkitekten | Baseline | Arkitekturkonsulent-erfaring |
**Verified:** Informasjon hentet direkte fra Microsoft Learn MCP-dokumentasjon (februar 2026).
**Verified:** Informasjon hentet direkte fra Microsoft Learn MCP-dokumentasjon (april 2026).
**Baseline:** Informasjon basert på modellkunnskap og arkitekturerfaring, konsistent med Azure ML prinsipper.