Steg 9 (R4): unified migrate-corpus.mjs --write over engineering/governance/ infrastructure/security. 327 filer mutert, verified=null, prosa byte-identisk (fra første ## seksjon), advisor urørt (0 endringer). To applier-fixes oppdaget under kjøring (TDD, RED→GREEN): - insertHeaderFields: anker faller nå tilbake når en meta-linje selv passerer 500B (2 filer pakket et avsnitt i **Status:** → Type/Source landet utenfor scan-vinduet, applierens post-write-assertion fanget + restaurerte). - normalizeStaleVerified: fjerner nå ALLE stale non-date **Verified:** i 500B-vinduet, inkl. stray body-dup rett under --- (9 mlops-genaiops-filer var ellers falskt "verified"/fresh, droppet fra worklist). Operatør-godkjent utvidelse av carve-out; kun stray metadata-linjer, aldri prosa. test-transform-criterion: precondition oppdatert til post-migrasjons-sannhet (fila bærer nå Source). Suite 728/728 grønn.
589 lines
28 KiB
Markdown
589 lines
28 KiB
Markdown
# Model Versioning and Registry Management
|
|
|
|
**Last updated:** 2026-06-24
|
|
**Status:** GA
|
|
**Category:** MLOps & GenAIOps
|
|
**Type:** reference
|
|
**Source:** https://learn.microsoft.com/azure/machine-learning/concept-model-monitoring
|
|
|
|
---
|
|
|
|
## Innhold
|
|
|
|
- [Introduksjon](#introduksjon)
|
|
- [Kjernekomponenter](#kjernekomponenter)
|
|
- [Arkitekturmønstre](#arkitekturmønstre)
|
|
- [Beslutningsveiledning](#beslutningsveiledning)
|
|
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
|
|
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
|
|
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
|
|
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
|
|
- [Kilder og verifisering](#kilder-og-verifisering)
|
|
|
|
## Introduksjon
|
|
|
|
Model versioning og registry management er fundamentale komponenter i MLOps-livssyklusen som sikrer sporbarhet, reproduserbarhet og effektiv styring av maskinlæringsmodeller gjennom hele deres levetid. Azure Machine Learning tilbyr to primære tilnærminger: workspace model registry for team-intern bruk og Azure Machine Learning registry for tverrorganisatorisk deling. Begge støtter MLflow som standardformat, noe som gir portabilitet og integrasjon med et bredt økosystem av verktøy.
|
|
|
|
I moderne ML-operasjoner er utfordringene mange: teams må håndtere flere versjoner av samme modell, spore lineage fra treningsdata til deployment, understøtte A/B-testing og gradual rollout, samt opprettholde compliance med regulatoriske krav. Et robust registry-system løser disse utfordringene ved å tilby sentralisert versjonskontroll, metadata-håndtering, stage management (Development, Staging, Production), og automatisert lineage tracking.
|
|
|
|
Azure Machine Learning skiller seg fra tradisjonelle Git-baserte tilnærminger ved å behandle modeller som immutable assets med rik metadata, inkludert kobling til treningsjobber, metrics, datasets, miljøer og kode-snapshots. Dette gir end-to-end auditability som er kritisk for regulerte sektorer som finans, helsevesen og offentlig forvaltning. Registry-konseptet muliggjør også cross-workspace deployment, der modeller trenes i development-workspace og distribueres til test- og production-workspaces uten å miste sporbarhet.
|
|
|
|
---
|
|
|
|
## Kjernekomponenter
|
|
|
|
| Komponent | Beskrivelse | Bruksområde |
|
|
|-----------|-------------|-------------|
|
|
| **Workspace Model Registry** | Workspace-lokal registry for team-intern modellhåndtering | Single-team ML-prosjekter, prototyping, testing |
|
|
| **Azure ML Registry** | Multi-workspace registry for organisasjonsomfattende deling | Cross-workspace MLOps, shared components, enterprise governance |
|
|
| **Model Versioning** | Automatisk versjonering av modeller (v1, v2, v3...) | Tracke model evolution, rollback capability, A/B testing |
|
|
| **MLflow Integration** | Native støtte for MLflow model format og registry APIs | Portabilitet, standard ecosystem, tooling compatibility |
|
|
| **Model Stages** | Lifecycle stages (None, Staging, Production, Archived) | Promovering av modeller, deployment gating, governance |
|
|
| **Metadata & Lineage** | Kobling til treningsjobs, datasets, environments, metrics | Auditability, reproducibility, debugging, compliance |
|
|
| **Model Sharing** | Copy/share models mellom workspaces og registries | DevOps pipelines (dev → test → prod), team collaboration |
|
|
| **Immutable Assets** | Models kan ikke endres etter registrering, kun metadata | Data integrity, audit trail, regulatory compliance |
|
|
|
|
### Registry-typer sammenlignet
|
|
|
|
|
|
### Azure Machine Learning Cross-Workspace Registry (2026)
|
|
|
|
**Azure ML Registry** enables model, component, and environment sharing across workspaces and subscriptions:
|
|
|
|
**Two primary scenarios**:
|
|
1. **Cross-workspace MLOps**: Train in `dev` → deploy to `test`/`prod` with full lineage (code, data, environment)
|
|
2. **Cross-team sharing**: Publish models/components to central catalog for reuse across teams
|
|
|
|
**Registry operations** (CLI v2 / Python SDK v2):
|
|
```bash
|
|
# Create model in registry (from local files)
|
|
az ml model create --name nyc-taxi-model --version 1 --type mlflow_model --path ./artifacts/model/ --registry-name <registry-name>
|
|
|
|
# Share model from workspace to registry (preserves training lineage)
|
|
az ml model share --name nyc-taxi-model --version 1 --registry-name <registry-name> --share-with-name <new-name> --share-with-version 1
|
|
|
|
# Deploy model from registry to any workspace
|
|
# (model: azureml://registries/<registry-name>/models/<name>/versions/<v>)
|
|
az ml online-deployment create --file deploy.yml --all-traffic
|
|
```
|
|
|
|
**Python SDK pattern**:
|
|
```python
|
|
ml_client_registry = MLClient(credential=credential, registry_name="<REGISTRY_NAME>")
|
|
ml_client_workspace = MLClient(credential=credential, workspace_name="<WS_NAME>", ...)
|
|
|
|
# Create in registry
|
|
ml_client_registry.models.create_or_update(mlflow_model)
|
|
# Deploy from registry to workspace
|
|
ml_client_workspace.online_deployments.begin_create_or_update(deployment)
|
|
```
|
|
|
|
**Lineage tracking**: Models registered from job outputs link back to training job, code, data, and environment.
|
|
**Access control**: ACR token-based access (workspace compute has `AcrPull` via registry's managed identity).
|
|
**MLflow format**: Required for no-code deployment with built-in scoring server.
|
|
|
|
|
|
| Egenskap | Workspace Registry | Azure ML Registry |
|
|
|----------|-------------------|-------------------|
|
|
| **Scope** | Enkelt workspace | Multi-workspace, cross-subscription |
|
|
| **Deling** | Kun innen workspace | Tverrorganisatorisk |
|
|
| **Lineage** | Begrenset til workspace | Bevares på tvers av workspaces |
|
|
| **Governance** | Team-level | Enterprise-level |
|
|
| **Regioner** | Workspace region | Multi-region support |
|
|
| **Bruksområde** | Eksperimentering, team-utvikling | Production deployment, shared assets |
|
|
|
|
### Versjoneringsstrategier
|
|
|
|
| Strategi | Implementering | Fordeler | Ulemper |
|
|
|----------|----------------|----------|---------|
|
|
| **Automatic Incrementing** | Azure ML auto-genererer v1, v2, v3... | Enkel, ingen konflikter | Ikke-semantisk, vanskelig å tolke |
|
|
| **Semantic Versioning** | Custom versioning (1.0.0, 1.1.0, 2.0.0) | Tydelig betydning (major/minor/patch) | Krever manuell styring |
|
|
| **Timestamp-based** | `version=str(int(time.time()))` | Unikt, sortérbart | Ikke-menneskelesbart |
|
|
| **Git SHA-based** | Versjon basert på commit hash | Kobling til kode | Krever Git-integrasjon |
|
|
|
|
---
|
|
|
|
## Arkitekturmønstre
|
|
|
|
### 1. Centralized Registry (Enterprise Standard)
|
|
|
|
**Beskrivelse:** Én sentral Azure ML Registry for hele organisasjonen, med separate workspaces for dev/test/prod.
|
|
|
|
```
|
|
┌─────────────────────────────────────────┐
|
|
│ Azure ML Registry (Global) │
|
|
│ - Shared models │
|
|
│ - Shared components │
|
|
│ - Shared environments │
|
|
└────────┬────────────┬───────────┬───────┘
|
|
│ │ │
|
|
┌────▼────┐ ┌────▼────┐ ┌──▼──────┐
|
|
│ Dev │ │ Test │ │ Prod │
|
|
│Workspace│ │Workspace│ │Workspace│
|
|
└─────────┘ └─────────┘ └─────────┘
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Single source of truth for godkjente modeller
|
|
- Forenklet governance og compliance
|
|
- Kostnadseffektiv (færre duplikater)
|
|
- Enkel audit trail
|
|
|
|
**Ulemper:**
|
|
- Single point of failure
|
|
- Krever robust access control
|
|
- Kan bli flaskehals ved høy aktivitet
|
|
|
|
**Best practices:**
|
|
- Implementer RBAC med minste privilegie-prinsipp
|
|
- Automatiser promotering via CI/CD pipelines
|
|
- Bruk tags for å markere production-ready models
|
|
- Implementer retention policies for gamle versjoner
|
|
|
|
### 2. Federated Registry (Multi-team)
|
|
|
|
**Beskrivelse:** Separate registries per team/domene, med synkronisering til sentral registry for godkjente modeller.
|
|
|
|
```
|
|
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
│ Team A │ │ Team B │ │ Team C │
|
|
│ Registry │ │ Registry │ │ Registry │
|
|
└────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
│ │ │
|
|
└─────────────┼──────────────┘
|
|
│
|
|
┌──────▼───────┐
|
|
│ Central │
|
|
│ Registry │
|
|
│ (Production) │
|
|
└──────────────┘
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Autonomi for teams
|
|
- Redusert contention
|
|
- Isolering av eksperimentering
|
|
|
|
**Ulemper:**
|
|
- Kompleks synkronisering
|
|
- Risiko for duplikater
|
|
- Vanskeligere governance
|
|
|
|
**Best practices:**
|
|
- Definer klare promotion-kriterier
|
|
- Automatiser synkronisering med Azure Pipelines
|
|
- Implementer naming conventions (team-prefixes)
|
|
- Bruk MLflow stages for å markere promotionskandidater
|
|
|
|
### 3. Git-based Versioning (Code-centric)
|
|
|
|
**Beskrivelse:** Modell-versjonering koblet til Git-commits, med Azure ML Registry som artifact store.
|
|
|
|
```
|
|
┌──────────────┐ ┌──────────────┐
|
|
│ Git Repo │ │ Azure ML │
|
|
│ - Model code│────▶│ Registry │
|
|
│ - Config │ │ - Models │
|
|
│ - SHA: abc1 │ │ - Version: │
|
|
└──────────────┘ │ v-abc1 │
|
|
└──────────────┘
|
|
```
|
|
|
|
**Fordeler:**
|
|
- Sterk kobling mellom kode og modell
|
|
- Reproducibility via Git checkout
|
|
- Leverages existing Git workflows
|
|
|
|
**Ulemper:**
|
|
- Krever disiplin i Git-praksis
|
|
- Git ikke designet for store binary artifacts
|
|
- Kompleks å implementere
|
|
|
|
**Best practices:**
|
|
- Bruk Git LFS for modell-binaries
|
|
- Tag Git commits ved model registration
|
|
- Inkluder Git SHA i model metadata
|
|
- Kombiner med Azure ML lineage tracking
|
|
|
|
---
|
|
|
|
## Beslutningsveiledning
|
|
|
|
### Velge registry-strategi
|
|
|
|
| Scenario | Anbefalt tilnærming | Begrunnelse |
|
|
|----------|---------------------|-------------|
|
|
| Single team, early stage | Workspace Registry | Enklest, lavest overhead |
|
|
| Multiple teams, shared models | Centralized Registry | Governance, gjenbruk |
|
|
| Autonomous teams | Federated Registry | Autonomi, skalerbarhet |
|
|
| Regulated industry | Centralized + Stages | Compliance, audit trail |
|
|
| Rapid experimentation | Workspace Registry | Fleksibilitet |
|
|
| Production deployment | Azure ML Registry | Cross-workspace support |
|
|
|
|
### Når bruke MLflow stages
|
|
|
|
| Stage | Bruksområde | Typisk workflow |
|
|
|-------|-------------|-----------------|
|
|
| **None** | Nyregistrerte modeller, eksperimentering | Automatisk tildelt ved registrering |
|
|
| **Staging** | Testing i staging-miljø | Manuell/automatisk promotering fra None |
|
|
| **Production** | Live deployment | Promoteres etter testing i Staging |
|
|
| **Archived** | Utdaterte modeller, ikke lenger i bruk | Automatisk eller manuell archivering |
|
|
|
|
**VIKTIG:** Stages er kun tilgjengelig via MLflow SDK, ikke i Azure ML Studio UI. Deployment fra stage støttes ikke direkte i Azure ML online endpoints.
|
|
|
|
> **NB — Databricks / Unity Catalog:** I Unity Catalog er MLflow **stages utfaset (legacy)** og erstattet av **aliases** (muterbare navngitte referanser, f.eks. «Champion», for å peke på en modellversjon) + **tags** (for labeling) + **deployment jobs** (lifecycle med human-in-the-loop-godkjenning). MLflow 3 bruker `databricks-uc` som default registry. Stages er fortsatt tilgjengelig i Azure ML workspace-registry, men er den eldre veien. I MLflow 3 er også `mlflow.evaluate` utfaset (bruk `mlflow.models.evaluate` for klassisk ML / `mlflow.genai.evaluate` for GenAI), `log_model` bruker `name=` (ikke `artifact_path`), og modell-URI er `models:/<model_id>`.
|
|
|
|
### Vanlige feil
|
|
|
|
| Feil | Konsekvens | Løsning |
|
|
|------|------------|---------|
|
|
| **Manglende versjoneringskonvensjon** | Kaos, vanskeligere å spore endringer | Definer og dokumenter strategi (auto/semantic/timestamp) |
|
|
| **Ingen lineage tracking** | Umulig å reprodusere resultater | Registrer modeller fra runs, ikke lokale filer |
|
|
| **Overforbruk av stages** | Forvirring, inconsistent deployment | Bruk stages kun for governance, ikke som deployment target |
|
|
| **Manglende cleanup** | Kostnad, clutter | Implementer retention policies (slett versjoner eldre enn X måneder) |
|
|
| **Direkte editing av production models** | Immutability violation (umulig i Azure ML) | Opprett ny versjon i stedet |
|
|
| **Manglende RBAC** | Security risk | Implementer role-based access control |
|
|
|
|
### Røde flagg
|
|
|
|
- **Ingen clear ownership** av registry → definer ansvarlige
|
|
- **Manuell registrering** i production → automatiser via CI/CD
|
|
- **Manglende documentation** av versjoner → bruk description og tags
|
|
- **Ingen rollback-strategi** → test rollback procedures
|
|
- **Cross-workspace registration uten lineage** → bruk `.share()` i stedet for ny registration
|
|
|
|
---
|
|
|
|
## Integrasjon med Microsoft-stakken
|
|
|
|
### Azure ML + MLflow
|
|
|
|
Azure ML har native MLflow-integrasjon som gir:
|
|
- **MLflow Tracking URI:** `azureml://<workspace>`
|
|
- **MLflow Registry URI:** `azureml://<workspace>` (workspace) eller `azureml://registries/<registry-name>` (registry)
|
|
- **MLflow SDK compatibility:** Bruk standard MLflow APIs (`mlflow.register_model()`, `client.get_model_version()`)
|
|
- **Automatic lineage:** Modeller registrert fra runs beholder metadata
|
|
|
|
**Eksempel:** Registrer modell fra run
|
|
```python
|
|
import mlflow
|
|
|
|
# Fra MLflow run
|
|
mlflow.register_model(f"runs:/{run_id}/model", model_name="my-model")
|
|
|
|
# Fra lokal fil
|
|
mlflow.register_model(f"file:///path/to/model", model_name="my-model")
|
|
```
|
|
|
|
### Azure DevOps / GitHub Actions
|
|
|
|
**CI/CD pipeline for model promotion:**
|
|
1. **Trigger:** Ny modell registrert i dev workspace (Azure Event Grid)
|
|
2. **Validation:** Run tests mot modell (accuracy, latency, fairness)
|
|
3. **Stage transition:** Promote til Staging via MLflow SDK
|
|
4. **Deploy to test:** Deploy til test workspace endpoint
|
|
5. **Smoke tests:** Kjør integrasjonstester
|
|
6. **Promote to Production:** Transition til Production stage
|
|
7. **Deploy to prod:** Deploy til production workspace endpoint
|
|
|
|
**Azure Pipelines YAML eksempel:**
|
|
```yaml
|
|
trigger:
|
|
- main
|
|
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
- task: AzureCLI@2
|
|
inputs:
|
|
azureSubscription: 'my-subscription'
|
|
scriptType: 'bash'
|
|
scriptLocation: 'inlineScript'
|
|
inlineScript: |
|
|
# Share model from dev to registry
|
|
az ml model share --name my-model --version 1 \
|
|
--registry-name prod-registry \
|
|
--workspace-name dev-workspace \
|
|
--resource-group dev-rg
|
|
```
|
|
|
|
### Microsoft Foundry
|
|
|
|
Microsoft Foundry Model Catalog bruker samme underliggende registry-infrastruktur:
|
|
- **Serverless API deployments:** Registrer modeller i Foundry Models for API-tilgang
|
|
- **Managed compute deployments:** Bruk Azure ML Registry for deployment til VMs
|
|
- **Model benchmarking:** Sammenlign modellversjoner med benchmark metrics
|
|
- **Multi-modal support:** Registry støtter ikke bare tabular, men også CV og NLP modeller
|
|
|
|
### Power Platform AI
|
|
|
|
**Scenario:** Registrer Custom AI Builder model i Azure ML Registry for reuse.
|
|
|
|
> **Merk (Verified MCP 2026-04):** For production online endpoint deployments anbefaler Microsoft nå Microsoft Entra token-based authentication (`aad_token`) fremfor key-based authentication for forbedret sikkerhet via identity-based access control.
|
|
- Tren modell i AI Builder
|
|
- Eksporter modell (hvis tilgjengelig)
|
|
- Registrer i Azure ML Registry som MLflow model
|
|
- Deploy til Azure ML online endpoint
|
|
- Konsumer via Power Automate (HTTP connector)
|
|
|
|
**Begrensning:** AI Builder modeller er typisk ikke eksporterbare i MLflow-format. Vurder å re-implementere i Azure ML for full registry-støtte.
|
|
|
|
---
|
|
|
|
## Offentlig sektor (Norge)
|
|
|
|
### Sporbarhet og revisjon
|
|
|
|
Offentlig sektor i Norge har strenge krav til sporbarhet, spesielt for AI-systemer som påvirker borgere direkte (f.eks. NAV, Skatteetaten, helsesektor). Azure ML Registry oppfyller disse kravene ved:
|
|
|
|
| Krav | Hvordan Azure ML Registry støtter |
|
|
|------|-----------------------------------|
|
|
| **Lineage tracking** | Automatisk kobling til treningsjobs, datasets, code snapshots |
|
|
| **Audit trail** | Immutable models, versioned metadata, Event Grid events |
|
|
| **Data residency** | Registry kan konfigureres i Norway East/West regioner |
|
|
| **Access logs** | Azure Monitor + Log Analytics for full audit trail |
|
|
| **Retention policies** | Automatisk sletting etter X år (GDPR compliance) |
|
|
|
|
### AI Act (EU) compliance
|
|
|
|
EU AI Act krever dokumentasjon av "high-risk" AI-systemer. Azure ML Registry gir:
|
|
- **Model cards:** Description field for model documentation
|
|
- **Risk classification tags:** Bruk tags (`risk:high`, `domain:health`)
|
|
- **Validation metrics:** Lagre fairness, accuracy, robustness metrics
|
|
- **Conformity assessment:** Koble til Conformity Assessment Body via metadata
|
|
|
|
**Eksempel tags for AI Act:**
|
|
```python
|
|
client.set_model_version_tag(
|
|
name="risk-model",
|
|
version="1",
|
|
key="eu_ai_act_risk_level",
|
|
value="high"
|
|
)
|
|
client.set_model_version_tag(
|
|
name="risk-model",
|
|
version="1",
|
|
key="conformity_assessment_body",
|
|
value="CAB-123456"
|
|
)
|
|
```
|
|
|
|
### Dokumentasjonskrav
|
|
|
|
Offentlige virksomheter må dokumentere:
|
|
- **Treningsdata:** Kobling til dataset via lineage
|
|
- **Bias testing:** Lagre fairness metrics i model metadata
|
|
- **Menneskerettsvurdering:** Inkluder i model description
|
|
- **Personvernkonsekvens (DPIA):** Referer til DPIA-dokument i tags
|
|
|
|
**Best practice:** Bruk Azure ML Registry description field til å lenke til ekstern dokumentasjon (Confluence, SharePoint) for compliance-dokumenter.
|
|
|
|
---
|
|
|
|
## Kostnad og lisensiering
|
|
|
|
### Azure ML Pricing
|
|
|
|
| Komponent | Kostnad | Detaljer |
|
|
|-----------|---------|----------|
|
|
| **Model Registry storage** | ~$0.05 per GB/måned | Standard Azure Blob Storage pricing |
|
|
| **Registry operations** | Gratis | Create, read, update, delete operasjoner |
|
|
| **Workspace** | Gratis | Kun compute og storage koster |
|
|
| **Lineage metadata** | Inkludert | Ingen ekstra kostnad for metadata |
|
|
| **Cross-region data transfer** | ~$0.02 per GB | Hvis registry og workspace i ulike regioner |
|
|
|
|
### Storage-kostnader
|
|
|
|
Modellstørrelse påvirker kostnader direkte:
|
|
- **Small model (< 100 MB):** Neglisjerbar kostnad (~$0.005/måned per versjon)
|
|
- **Medium model (1 GB):** ~$0.05/måned per versjon
|
|
- **Large model (10 GB):** ~$0.50/måned per versjon
|
|
- **XL model (100 GB):** ~$5/måned per versjon
|
|
|
|
**Eksempel:** 50 versjoner av en 5 GB modell = 250 GB = ~$12.50/måned.
|
|
|
|
### Optimaliseringstips
|
|
|
|
| Strategi | Besparelse | Implementering |
|
|
|----------|------------|----------------|
|
|
| **Retention policy** | 30-50% | Slett versjoner eldre enn 6-12 måneder |
|
|
| **Compression** | 20-40% | Bruk MLflow model compression (hvis tilgjengelig) |
|
|
| **Deduplication** | 10-30% | Azure Blob Storage dedupliserer automatisk |
|
|
| **Archive tier** | 70% | Flytt gamle versjoner til Archive tier (manuelt) |
|
|
| **Shared registries** | 40-60% | Unngå duplikater på tvers av workspaces |
|
|
|
|
**Automatisk cleanup eksempel (Azure CLI):**
|
|
```bash
|
|
# Slett versjoner eldre enn 12 måneder
|
|
cutoff_date=$(date -d '12 months ago' +%Y-%m-%d)
|
|
az ml model list --registry-name my-registry --query "[?created<'$cutoff_date'].{name:name,version:version}" -o tsv \
|
|
| while read name version; do
|
|
az ml model delete --name $name --version $version --registry-name my-registry --yes
|
|
done
|
|
```
|
|
|
|
### Lisensiering
|
|
|
|
- **Azure ML:** Inkludert i Azure subscription, ingen ekstra lisens
|
|
- **MLflow:** Open source (Apache 2.0), gratis
|
|
- **Azure DevOps:** Gratis for opp til 5 brukere, deretter ~$50/bruker/måned
|
|
- **GitHub Actions:** 2000 minutter gratis/måned, deretter ~$0.008/minutt
|
|
|
|
---
|
|
|
|
## For arkitekten (Cosmo)
|
|
|
|
### Spørsmål å stille kunden
|
|
|
|
1. **Organisasjonsstruktur:**
|
|
- Har dere ett sentralt ML-team eller flere autonome teams?
|
|
- Trenger dere å dele modeller på tvers av teams/avdelinger?
|
|
- Skal modeller deles på tvers av Azure-subscriptions?
|
|
|
|
2. **Deployment-mønster:**
|
|
- Bruker dere separate workspaces for dev/test/prod?
|
|
- Hvor mange miljøer skal modeller deployes til?
|
|
- Kreves manuell godkjenning før production deployment?
|
|
|
|
3. **Compliance og governance:**
|
|
- Hvilke regulatoriske krav har dere (AI Act, GDPR, bransje-spesifikke)?
|
|
- Må dere kunne reprodusere modeller fra for X år tilbake?
|
|
- Trenger dere audit trail for hvem som godkjente en modell?
|
|
|
|
4. **Eksisterende verktøy:**
|
|
- Bruker dere allerede MLflow eller andre model registry-verktøy?
|
|
- Har dere etablerte Git-workflows for ML-kode?
|
|
- Bruker dere Azure DevOps, GitHub Actions eller annet CI/CD-verktøy?
|
|
|
|
5. **Skalering:**
|
|
- Hvor mange modeller forventes registrert per år?
|
|
- Hva er typisk modellstørrelse (MB/GB)?
|
|
- Hvor lenge må modellversjoner oppbevares?
|
|
|
|
6. **Data residency:**
|
|
- Må modeller og metadata lagres i Norge/EU?
|
|
- Er det krav til multi-region backup?
|
|
|
|
7. **Team-modenhet:**
|
|
- Har teamet erfaring med MLOps-verktøy?
|
|
- Er det behov for opplæring i MLflow og Azure ML Registry?
|
|
- Finnes det dedikerte ML-engineers eller primært data scientists?
|
|
|
|
8. **Kostnadssensitivitet:**
|
|
- Hva er budsjett for storage og compute?
|
|
- Er det behov for aggressive retention policies?
|
|
|
|
### Fallgruver å unngå
|
|
|
|
| Fallgruve | Konsekvens | Mitigering |
|
|
|-----------|------------|------------|
|
|
| **Over-engineering:** Implementere federated registry når workspace registry holder | Kompleksitet, overhead | Start enkelt, skalér ved behov |
|
|
| **Under-engineering:** Kun lokale filer, ingen registry | Kaos, manglende sporbarhet | Implementer minimum workspace registry fra dag 1 |
|
|
| **Manglende CI/CD:** Manuell model promotion | Feil, langsomhet | Automatiser med Azure Pipelines/GitHub Actions |
|
|
| **Ignorer MLflow stages:** Bruke custom tags for lifecycle | Reinventing the wheel | Bruk standard stages (None, Staging, Production, Archived) |
|
|
| **Glemme RBAC:** Alle har write-tilgang | Security risk | Implementer least-privilege RBAC fra start |
|
|
| **Ingen naming conventions:** Kaos i model naming | Vanskelig å finne modeller | Definer og enforcer conventions (team-prefix, domain, etc.) |
|
|
| **Mangel på metadata:** Bare modell-binaries | Umulig å forstå hva modellen gjør | Påkreve description, tags, og lineage |
|
|
| **Manglende testing før production:** Deploye direkte fra dev | Production failures | Alltid test i staging-miljø først |
|
|
|
|
### Anbefalinger per modenhetsnivå
|
|
|
|
**Level 1: Experimentation (Startup/PoC)**
|
|
- **Registry:** Workspace Registry
|
|
- **Versioning:** Automatic incrementing
|
|
- **Stages:** None og Production (minimal)
|
|
- **CI/CD:** Manuell deployment
|
|
- **Lineage:** Optional
|
|
- **Fokus:** Rask iterasjon, minimal overhead
|
|
|
|
**Level 2: Structured Development (Small team, production)**
|
|
- **Registry:** Workspace Registry med separate dev/prod workspaces
|
|
- **Versioning:** Semantic eller timestamp
|
|
- **Stages:** Full stage lifecycle (None → Staging → Production → Archived)
|
|
- **CI/CD:** Semi-automatisert med scripts
|
|
- **Lineage:** Mandatory (registrer fra runs)
|
|
- **Fokus:** Reproduserbarhet, basic governance
|
|
|
|
**Level 3: Scaled MLOps (Enterprise, multiple teams)**
|
|
- **Registry:** Azure ML Registry (centralized eller federated)
|
|
- **Versioning:** Semantic + Git SHA
|
|
- **Stages:** Full stage lifecycle + custom metadata
|
|
- **CI/CD:** Fullstendig automatisert via Azure DevOps/GitHub Actions
|
|
- **Lineage:** Mandatory + extended metadata (DPIA, AI Act compliance)
|
|
- **Fokus:** Governance, compliance, skalerbarhet
|
|
|
|
**Level 4: Advanced Governance (Regulated industry)**
|
|
- **Registry:** Multi-region Azure ML Registry med backup
|
|
- **Versioning:** Semantic + Git SHA + immutable audit trail
|
|
- **Stages:** Full stage lifecycle + approval workflows
|
|
- **CI/CD:** Fully automated + manual approval gates
|
|
- **Lineage:** Mandatory + comprehensive documentation (model cards, risk assessments)
|
|
- **Monitoring:** Real-time model drift detection + automated retraining triggers
|
|
- **Fokus:** Compliance, auditability, risk management
|
|
|
|
---
|
|
|
|
## Kilder og verifisering
|
|
|
|
### Microsoft Learn (Verified via MCP research, April 2026)
|
|
|
|
1. **Share models, components, and environments across workspaces with registries**
|
|
- URL: https://learn.microsoft.com/en-us/azure/machine-learning/how-to-share-models-pipelines-across-workspaces-with-registries?view=azureml-api-2
|
|
- Confidence: **Verified** (Full document fetch, Feb 2026)
|
|
- Coverage: Registry architecture, workspace vs. registry, model sharing, cross-workspace deployment
|
|
|
|
2. **Manage models registry in Azure Machine Learning with MLflow**
|
|
- URL: https://learn.microsoft.com/en-us/azure/machine-learning/how-to-manage-models-mlflow?view=azureml-api-2
|
|
- Confidence: **Verified** (Full document fetch, Feb 2026)
|
|
- Coverage: MLflow integration, stages, versioning, CRUD operations, limitations
|
|
|
|
3. **MLOps model management with Azure Machine Learning**
|
|
- URL: https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-management-and-deployment?view=azureml-api-2
|
|
- Confidence: **Verified** (MCP search results, Feb 2026)
|
|
- Coverage: MLOps capabilities, lifecycle automation, metadata, lineage
|
|
|
|
4. **Azure Machine Learning model monitoring**
|
|
- URL: https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-monitoring?view=azureml-api-2
|
|
- Confidence: **Verified** (MCP search results, Feb 2026)
|
|
- Coverage: Model monitoring, drift detection, lifecycle management
|
|
|
|
5. **Set up MLOps with Azure DevOps**
|
|
- URL: https://learn.microsoft.com/en-us/azure/machine-learning/how-to-setup-mlops-azureml?view=azureml-api-2
|
|
- Confidence: **Verified** (MCP search results, Feb 2026)
|
|
- Coverage: CI/CD integration, Azure Pipelines, MLOps automation
|
|
|
|
6. **Explore Foundry Models**
|
|
- URL: https://learn.microsoft.com/en-us/azure/foundry-classic/concepts/foundry-models-overview?view=foundry-classic
|
|
- Confidence: **Verified** (MCP search results, Feb 2026)
|
|
- Coverage: Model catalog, deployment options, Microsoft Foundry integration
|
|
|
|
7. **MLflow Python SDK code samples**
|
|
- URL: Multiple code samples from Microsoft Learn
|
|
- Confidence: **Verified** (MCP code sample search, Feb 2026)
|
|
- Coverage: Model registration, versioning, stage transitions, MLflow client APIs
|
|
|
|
### Konfidensnivå per seksjon
|
|
|
|
| Seksjon | Konfidens | Begrunnelse |
|
|
|---------|-----------|-------------|
|
|
| Introduksjon | **Verified** | Basert på offisiell Azure ML dokumentasjon |
|
|
| Kjernekomponenter | **Verified** | Fra MLflow og Azure ML docs (registry, stages, metadata) |
|
|
| Arkitekturmønstre | **Baseline + Expert** | Patterns er standard MLOps (Verified), implementasjonsdetaljer er ekspertbaserte anbefalinger |
|
|
| Beslutningsveiledning | **Baseline + Expert** | Basert på best practices fra Microsoft Learn og bransjeerfaring |
|
|
| Microsoft-integrasjon | **Verified** | Azure DevOps, GitHub Actions, AI Foundry integrasjon fra offisiell dokumentasjon |
|
|
| Offentlig sektor (Norge) | **Baseline + Local** | AI Act er Verified (EU regulation), Norge-spesifikke krav er lokalkunnskap |
|
|
| Kostnad og lisensiering | **Verified** | Azure Blob Storage pricing er offentlig tilgjengelig, optimaliseringstips er ekspertbaserte |
|
|
| For arkitekten | **Expert** | Spørsmål og anbefalinger basert på praktisk erfaring og MLOps best practices |
|
|
|
|
### MCP research summary
|
|
- **Total searches:** 3 (Azure ML registry, AI Foundry, MLOps lifecycle)
|
|
- **Document fetches:** 2 (Full registry guide, MLflow management guide)
|
|
- **Code samples:** 1 (MLflow Python SDK examples)
|
|
- **Unique sources:** 7 Microsoft Learn articles
|
|
- **Research timestamp:** April 2026
|
|
|
|
---
|
|
|
|
**Oppsummering for Cosmo:**
|
|
Model versioning og registry management er fundamentet for skalerbar MLOps. Azure ML Registry + MLflow gir et kraftig, standardbasert økosystem som støtter alt fra single-team experimentation til enterprise-scale governance. For offentlig sektor i Norge er lineage tracking og audit trail-capabilities kritiske for å oppfylle AI Act og GDPR. Start med workspace registry for eksperimentering, migrer til Azure ML Registry når modeller skal deles på tvers av teams eller deployes til separate production-miljøer. Automatiser model promotion via CI/CD for å redusere feil og øke hastighet.
|