To operasjoner, én økt (⊥ R7), begge ren metadata-normalisering (verdi aldri fabrikkert). Premiss-korreksjon (ground truth 2026-07-07): roadmap sa «27 none + 4 ai-act». Målt: 29 mangler bold **Status:** = 25 rene none + 4 ai-act (plain Status: GA). De «27» inkluderte 2 for mye — 2 filer (custom-dashboards-ai-operations, zero-trust-ai-services) har bold **Status:** KUN forbi byte 500 (present for full-fil-audit, usynlig for 500B header-parser) → egen header-slanking-residual (§8-register), utenfor Enhet 3. Op A — Status-backfill 25 rene none: utvidet backfill-status.mjs MANIFEST 14→39 (samme statusForFile + insertMetaField + hard per-fil-invariant, idempotent skip på de 14 R21-gjorte). Alle 25 → **Status:** Established Practice (ingen matcher template|matrix|benchmarks|register). Diff +25/-0. Op B — ai-act dual-header-dedup (4 filer): ny driver dedup-plain-header.mjs + 2 rene primitiver i transform.mjs — boldifyPlainField (plain→bold, verdi bevart byte-eksakt, header-scoped, idempotent) + dropRedundantPlainField (sletter plain KUN når bold m/ identisk verdi beviser redundans; kaster ved avvik/manglende bold). Per fil: plain Last updated: + Status: GA → bold (2026-06-18/2026-02, GA bevart), redundant plain Category: fjernet. Hard per-fil-invariant (net -1 linje, begge felt bold m/ bevart verdi, ingen plain-header igjen, body byte-identisk). Diff -12/+8. Verifisering: test-backfill-status 8/8 + test-dedup-plain-header 13/13; audit Missing Status 29→0, Missing English Last updated 4→0; skills-diff 29 filer +33/-12 (kun **Status:** + 8 bold-swaps), diff-kontekst inspisert per fil; begge drivere idempotent (re-run 0 writes); suite 806/806 exit 0; none=8 uendret (Enhet 4).
749 lines
29 KiB
Markdown
749 lines
29 KiB
Markdown
# Responsible AI Integration in MLOps
|
|
|
|
**Category:** MLOps & GenAIOps
|
|
**Last updated:** 2026-06-19
|
|
**Confidence:** 95% (basert på offisiell Microsoft-dokumentasjon og Azure Machine Learning-referanser)
|
|
**Type:** reference
|
|
**Source:** https://learn.microsoft.com/azure/machine-learning/concept-responsible-ai-dashboard
|
|
**Status:** Established Practice
|
|
|
|
---
|
|
|
|
## 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
|
|
|
|
Responsible AI (RAI) i MLOps-kontekst handler om å integrere ansvarlig AI-praksis systematisk gjennom hele modellens livssyklus — fra utvikling og trening til deployment, overvåking og vedlikehold. Mens tradisjonell MLOps fokuserer på repeaterbarhet, automatisering og pålitelighet, legger RAI-integrasjon til dimensjoner som rettferdighet (fairness), forklarbarhet (interpretability), bias-deteksjon, åpenhet (transparency) og compliance.
|
|
|
|
Azure Machine Learning tilbyr et omfattende rammeverk for RAI-integrasjon via **Responsible AI dashboard**, **Responsible AI scorecard**, og dedikerte komponenter som kan bygges direkte inn i CI/CD-pipelines. Dette sikrer at modeller ikke bare er teknisk robuste, men også etisk forsvarlige og regulatorisk compliant.
|
|
|
|
**Hvorfor dette er kritisk for MLOps:**
|
|
- **Model governance**: Sporer rettferdighet, bias og forklarbarhet gjennom hele modellens levetid
|
|
- **Auditability**: Dokumenterer modellbeslutninger for compliance og regulatoriske krav
|
|
- **Stakeholder trust**: Gir ikke-tekniske interessenter innsikt i modellens oppførsel
|
|
- **Risk mitigation**: Identifiserer og reduserer fairness-issues og feilmønstre før produksjon
|
|
|
|
---
|
|
|
|
## Kjernekomponenter
|
|
|
|
### 1. Responsible AI Dashboard
|
|
|
|
**Formål:**
|
|
En samlet, tilpassbar plattform som integrerer flere RAI-verktøy i én grensesnitt, designet for model debugging og ansvarlig beslutningstaking.
|
|
|
|
**Komponenter i dashbordet:**
|
|
|
|
| Komponent | Funksjon | Bruksområde |
|
|
|-----------|----------|-------------|
|
|
| **Error Analysis** | Identifiserer hvordan feil er distribuert i datasettet | Oppdage systematiske feil i spesifikke subgrupper |
|
|
| **Model Fairness** | Vurderer modellens ytelse på tvers av sensitive grupper | Sjekke om modellen behandler ulike grupper likt |
|
|
| **Model Interpretability** | Forklarer hvordan modellen tar beslutninger (global/lokal) | Forstå hvilke features som driver prediksjoner |
|
|
| **Data Analysis** | Utforsker datasettet for skjevheter og representasjon | Identifisere over-/underrepresentasjon i treningsdata |
|
|
| **Counterfactual What-If** | Viser minimale endringer som gir annen prediksjon | Hjelpe brukere forstå hva som må endres for annet utfall |
|
|
| **Causal Inference** | Estimerer kausale effekter av treatment-features | Skille korrelasjon fra kausalitet i beslutninger |
|
|
|
|
**Integrasjon i MLOps:**
|
|
Dashbordet genereres som del av en **Azure ML pipeline job** ved hjelp av komponentene fra Azure ML-registeret. Dette gjør RAI-vurdering til en automatisert del av CI/CD-flyten.
|
|
|
|
**Confidence note:** 🟢 Høy (basert på `microsoft_azureml_rai_tabular_insight_constructor` og relaterte komponenter)
|
|
|
|
---
|
|
|
|
### 2. Responsible AI Scorecard *(Public Preview)*
|
|
|
|
*(Verified MCP 2026-04)* — RAI Scorecard er i public preview. Bruker Azure SDK v2 og CLI v2.
|
|
|
|
**Formål:**
|
|
Et PDF-dokument som oppsummerer RAI-innsikter fra dashbordet, designet for å dele med ikke-tekniske stakeholders, compliance-team og auditører.
|
|
|
|
**Innhold:**
|
|
- Model summary med performance metrics og target values
|
|
- Data characteristics (distribusjon, representasjon)
|
|
- Fairness assessment på tvers av sensitive grupper
|
|
- Top important features (global interpretability)
|
|
- Error cohort analysis (hvor modellen feiler)
|
|
- Causal insights (hvis relevant)
|
|
|
|
**Bruk i governance-workflow:**
|
|
1. Data scientist genererer scorecard etter modelltrening
|
|
2. Product manager/risk officer vurderer om modellen møter rettferdighets- og ytelseskrav
|
|
3. Scorecard arkiveres som del av model registry for audit trail
|
|
4. Godkjenning fra stakeholders før deployment til produksjon
|
|
|
|
**Confidence note:** 🟢 Høy (basert på Azure ML Responsible AI Scorecard-dokumentasjon)
|
|
|
|
---
|
|
|
|
### 3. RAI Components for Pipelines
|
|
|
|
Azure Machine Learning tilbyr **RAI-komponenter** som kan kjøres i pipeline jobs for automatisert RAI-vurdering:
|
|
|
|
| Komponent | Komponent-navn | Funksjon |
|
|
|-----------|----------------|----------|
|
|
| Constructor | `microsoft_azureml_rai_tabular_insight_constructor` | Oppretter RAI dashboard-objektet |
|
|
| Explanation | `microsoft_azureml_rai_tabular_explanation` | Genererer model interpretability insights |
|
|
| Error Analysis | `microsoft_azureml_rai_tabular_erroranalysis` | Analyserer feilmønstre i kohorter |
|
|
| Causal Analysis | `microsoft_azureml_rai_tabular_causal` | Utfører kausal inferens på treatment features |
|
|
| Counterfactual | `microsoft_azureml_rai_tabular_counterfactual` | Genererer counterfactual examples |
|
|
| Gather | `microsoft_azureml_rai_tabular_insight_gather` | Samler alle insights til dashboard |
|
|
|
|
**Pipeline-eksempel (Python SDK):**
|
|
|
|
```python
|
|
from azure.ai.ml import MLClient, Input
|
|
from azure.ai.ml.entities import Pipeline
|
|
from azure.identity import DefaultAzureCredential
|
|
|
|
ml_client_registry = MLClient(
|
|
credential=DefaultAzureCredential(),
|
|
registry_name="azureml"
|
|
)
|
|
|
|
# Last komponenter
|
|
rai_constructor = ml_client_registry.components.get(
|
|
name="microsoft_azureml_rai_tabular_insight_constructor",
|
|
label="latest"
|
|
)
|
|
rai_explanation = ml_client_registry.components.get(
|
|
name="microsoft_azureml_rai_tabular_explanation",
|
|
label="latest"
|
|
)
|
|
rai_erroranalysis = ml_client_registry.components.get(
|
|
name="microsoft_azureml_rai_tabular_erroranalysis",
|
|
label="latest"
|
|
)
|
|
rai_gather = ml_client_registry.components.get(
|
|
name="microsoft_azureml_rai_tabular_insight_gather",
|
|
label="latest"
|
|
)
|
|
|
|
# Definer pipeline
|
|
@pipeline
|
|
def rai_pipeline(train_data, test_data, model_input, target_column):
|
|
# Opprett RAI dashboard
|
|
create_rai_job = rai_constructor(
|
|
title="Production Model RAI Assessment",
|
|
task_type="classification",
|
|
model_input=model_input,
|
|
train_dataset=train_data,
|
|
test_dataset=test_data,
|
|
target_column_name=target_column,
|
|
categorical_column_names='["gender", "ethnicity", "income_bracket"]',
|
|
maximum_rows_for_test_dataset=5000
|
|
)
|
|
|
|
# Generer explanations
|
|
explain_job = rai_explanation(
|
|
rai_insights_dashboard=create_rai_job.outputs.rai_insights_dashboard
|
|
)
|
|
|
|
# Kjør error analysis
|
|
error_job = rai_erroranalysis(
|
|
rai_insights_dashboard=create_rai_job.outputs.rai_insights_dashboard,
|
|
filter_features='["gender", "income_bracket"]'
|
|
)
|
|
|
|
# Samle insights
|
|
gather_job = rai_gather(
|
|
constructor=create_rai_job.outputs.rai_insights_dashboard,
|
|
insight_1=explain_job.outputs.explanation,
|
|
insight_2=error_job.outputs.error_analysis
|
|
)
|
|
|
|
return {
|
|
"dashboard": gather_job.outputs.dashboard,
|
|
"scorecard": gather_job.outputs.scorecard
|
|
}
|
|
```
|
|
|
|
**Confidence note:** 🟢 Høy (basert på kodeeksempler fra Microsoft Learn)
|
|
|
|
---
|
|
|
|
## Arkitekturmønstre
|
|
|
|
### 1. RAI-Augmented MLOps Pipeline
|
|
|
|
**Pattern:** Integrere RAI-vurdering som kvalitetsgate i CI/CD-pipeline.
|
|
|
|
**Workflow:**
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ 1. Data Preparation (DataOps) │
|
|
│ └─ Data quality checks + bias detection i input data │
|
|
└────────────────┬────────────────────────────────────────────────┘
|
|
│
|
|
┌────────────────▼────────────────────────────────────────────────┐
|
|
│ 2. Model Training (MLOps) │
|
|
│ └─ MLflow tracking + model registry │
|
|
└────────────────┬────────────────────────────────────────────────┘
|
|
│
|
|
┌────────────────▼────────────────────────────────────────────────┐
|
|
│ 3. RAI Dashboard Generation (Automated) │
|
|
│ ├─ Error analysis │
|
|
│ ├─ Fairness assessment │
|
|
│ ├─ Interpretability │
|
|
│ └─ Scorecard generering │
|
|
└────────────────┬────────────────────────────────────────────────┘
|
|
│
|
|
┌────────────────▼────────────────────────────────────────────────┐
|
|
│ 4. Quality Gate Check │
|
|
│ └─ Sjekk om fairness/performance thresholds er møtt │
|
|
│ (automatisk eller human-in-the-loop approval) │
|
|
└────────────────┬────────────────────────────────────────────────┘
|
|
│
|
|
┌──────┴──────┐
|
|
│ │
|
|
[PASS]│ │[FAIL]
|
|
▼ ▼
|
|
┌──────────┐ ┌──────────────┐
|
|
│ Deploy │ │ Reject + │
|
|
│ to Prod │ │ Retrain │
|
|
└──────────┘ └──────────────┘
|
|
```
|
|
|
|
**Implementering i Azure DevOps/GitHub Actions:**
|
|
|
|
```yaml
|
|
# Azure Pipelines eksempel
|
|
stages:
|
|
- stage: Train
|
|
jobs:
|
|
- job: TrainModel
|
|
steps:
|
|
- script: python train.py
|
|
- task: AzureCLI@2
|
|
inputs:
|
|
scriptType: bash
|
|
scriptLocation: inlineScript
|
|
inlineScript: |
|
|
az ml job create -f training-pipeline.yml
|
|
|
|
- stage: RAI_Assessment
|
|
dependsOn: Train
|
|
jobs:
|
|
- job: GenerateRAIDashboard
|
|
steps:
|
|
- task: AzureCLI@2
|
|
inputs:
|
|
scriptType: bash
|
|
scriptLocation: inlineScript
|
|
inlineScript: |
|
|
az ml job create -f rai-pipeline.yml
|
|
- script: python validate_rai_metrics.py
|
|
displayName: "Check RAI Quality Gates"
|
|
|
|
- stage: Deploy
|
|
dependsOn: RAI_Assessment
|
|
condition: succeeded()
|
|
jobs:
|
|
- job: DeployToProduction
|
|
steps:
|
|
- script: python deploy.py
|
|
```
|
|
|
|
**Confidence note:** 🟡 Moderat-høy (basert på generell MLOps-praksis + Azure ML RAI-komponenter)
|
|
|
|
---
|
|
|
|
### 2. Continuous RAI Monitoring i Produksjon
|
|
|
|
**Pattern:** Overvåke fairness og model drift i produksjon med Azure ML Data Collection.
|
|
|
|
**Komponenter:**
|
|
- **Azure ML Data Collector**: Samler inn inference-data fra deployed endpoints
|
|
- **Model Monitoring**: Tracker data drift, prediction drift, og feature attribution drift
|
|
- **Fairness Metrics Tracking**: Kontinuerlig evaluering av fairness-metrics på live data
|
|
|
|
**Workflow:**
|
|
|
|
```
|
|
Production Model Endpoint
|
|
│
|
|
├─> Data Collection (via Azure ML Data Collector)
|
|
│ └─> Lagres i Azure ML Dataset
|
|
│
|
|
├─> Scheduled RAI Pipeline (daglig/ukentlig)
|
|
│ ├─> Error analysis på nye data
|
|
│ ├─> Fairness drift detection
|
|
│ └─> Interpretability refresh
|
|
│
|
|
└─> Alerting & Actions
|
|
├─> Alert hvis fairness threshold brytes
|
|
├─> Trigger retraining pipeline
|
|
└─> Notify stakeholders via Azure Event Grid
|
|
```
|
|
|
|
**Implementering:**
|
|
|
|
```python
|
|
# Deploy model med data collection
|
|
from azure.ai.ml.entities import (
|
|
ManagedOnlineEndpoint,
|
|
ManagedOnlineDeployment,
|
|
DataCollector
|
|
)
|
|
|
|
deployment = ManagedOnlineDeployment(
|
|
name="blue",
|
|
endpoint_name="credit-model-endpoint",
|
|
model=model,
|
|
data_collector=DataCollector(
|
|
collections={
|
|
"model_inputs": {"enabled": True},
|
|
"model_outputs": {"enabled": True}
|
|
},
|
|
sampling_rate=1.0
|
|
)
|
|
)
|
|
|
|
# Schedule RAI monitoring pipeline
|
|
from azure.ai.ml.entities import JobSchedule, RecurrenceTrigger
|
|
|
|
schedule = JobSchedule(
|
|
name="rai-monitoring-schedule",
|
|
trigger=RecurrenceTrigger(frequency="week", interval=1),
|
|
create_job=rai_monitoring_pipeline
|
|
)
|
|
|
|
ml_client.schedules.begin_create_or_update(schedule)
|
|
```
|
|
|
|
**Confidence note:** 🟢 Høy (basert på Azure ML monitoring-dokumentasjon)
|
|
|
|
---
|
|
|
|
### 3. Human-in-the-Loop RAI Approval
|
|
|
|
**Pattern:** Bruke Responsible AI Scorecard som beslutningsunderlag for deployment-godkjenning.
|
|
|
|
**Workflow:**
|
|
|
|
1. **Automated RAI Assessment**: Pipeline genererer dashboard + scorecard
|
|
2. **Scorecard Distribution**: PDF sendes til product manager/risk officer
|
|
3. **Stakeholder Review**: Ikke-tekniske stakeholders vurderer:
|
|
- Møter modellen fairness-krav?
|
|
- Er error rates akseptable?
|
|
- Er sensitive grupper behandlet rettferdig?
|
|
4. **Approval Gate**: Manuell godkjenning i Azure DevOps/GitHub før deployment
|
|
5. **Audit Trail**: Scorecard arkiveres sammen med modell i registry
|
|
|
|
**Azure DevOps eksempel:**
|
|
|
|
```yaml
|
|
- stage: Approval
|
|
dependsOn: RAI_Assessment
|
|
jobs:
|
|
- deployment: ApprovalJob
|
|
environment: 'production-approval' # Krever manuell approval
|
|
strategy:
|
|
runOnce:
|
|
deploy:
|
|
steps:
|
|
- download: current
|
|
artifact: rai-scorecard
|
|
- script: echo "Scorecard downloaded for review"
|
|
```
|
|
|
|
**Confidence note:** 🟢 Høy (standard DevOps approval pattern)
|
|
|
|
---
|
|
|
|
## Beslutningsveiledning
|
|
|
|
### Når bør RAI integreres i MLOps?
|
|
|
|
| Scenario | RAI-kritiskhet | Anbefalte komponenter |
|
|
|----------|----------------|----------------------|
|
|
| **Høy-risiko beslutninger** (kreditt, rekruttering, helse) | 🔴 Kritisk | Full RAI dashboard + scorecard + human approval |
|
|
| **Regulerte sektorer** (finans, helse, offentlig sektor) | 🔴 Kritisk | Error analysis + fairness + causal inference |
|
|
| **Customer-facing AI** (anbefalingssystemer, chatbots) | 🟡 Viktig | Interpretability + counterfactual + data analysis |
|
|
| **Interne optimaliseringsmodeller** (supply chain, ops) | 🟢 Moderat | Error analysis + basic interpretability |
|
|
| **Eksperimentelle/forskningsmodeller** | 🟢 Lavt | Valgfritt, kan utsettes til produksjon |
|
|
|
|
---
|
|
|
|
### Beslutningstre: Hvilke RAI-komponenter trengs?
|
|
|
|
```
|
|
Påvirker modellen menneskers liv direkte?
|
|
│
|
|
├─ JA → Bruker den sensitive attributes (kjønn, etnisitet, etc.)?
|
|
│ │
|
|
│ ├─ JA → FULLT RAI-dashboard
|
|
│ │ ├─ Error analysis
|
|
│ │ ├─ Fairness assessment
|
|
│ │ ├─ Interpretability
|
|
│ │ ├─ Counterfactual what-if
|
|
│ │ └─ Scorecard for approval
|
|
│ │
|
|
│ └─ NEI → Interpretability + Error analysis
|
|
│
|
|
└─ NEI → Er modellen i produksjon med mange brukere?
|
|
│
|
|
├─ JA → Error analysis + Interpretability (monitoring)
|
|
│
|
|
└─ NEI → Valgfritt RAI-dashboard (best practice)
|
|
```
|
|
|
|
---
|
|
|
|
### Quality Gates: Eksempel på fairness thresholds
|
|
|
|
```python
|
|
# validate_rai_metrics.py
|
|
import json
|
|
|
|
def validate_rai_scorecard(scorecard_path: str) -> bool:
|
|
"""
|
|
Validerer at modellen møter RAI-krav før deployment.
|
|
"""
|
|
with open(scorecard_path, 'r') as f:
|
|
metrics = json.load(f)
|
|
|
|
# Fairness thresholds
|
|
fairness_checks = {
|
|
"accuracy_disparity": metrics["fairness"]["accuracy_disparity"] < 0.05,
|
|
"precision_disparity": metrics["fairness"]["precision_disparity"] < 0.05,
|
|
"false_positive_rate_disparity": metrics["fairness"]["fpr_disparity"] < 0.10
|
|
}
|
|
|
|
# Performance thresholds
|
|
performance_checks = {
|
|
"overall_accuracy": metrics["performance"]["accuracy"] > 0.85,
|
|
"f1_score": metrics["performance"]["f1_score"] > 0.80
|
|
}
|
|
|
|
# Error distribution checks
|
|
error_checks = {
|
|
"max_cohort_error_rate": max(metrics["error_analysis"]["cohort_error_rates"]) < 0.25
|
|
}
|
|
|
|
all_checks = {**fairness_checks, **performance_checks, **error_checks}
|
|
|
|
if all(all_checks.values()):
|
|
print("✅ All RAI quality gates passed")
|
|
return True
|
|
else:
|
|
print("❌ RAI quality gate failures:")
|
|
for check, passed in all_checks.items():
|
|
if not passed:
|
|
print(f" - {check}: FAILED")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
import sys
|
|
success = validate_rai_scorecard("rai_scorecard.json")
|
|
sys.exit(0 if success else 1)
|
|
```
|
|
|
|
**Confidence note:** 🟡 Moderat (eksempel-kode, må tilpasses faktiske metric-strukturer)
|
|
|
|
---
|
|
|
|
## Integrasjon med Microsoft-stakken
|
|
|
|
### Azure Machine Learning
|
|
|
|
| Feature | RAI-funksjonalitet |
|
|
|---------|-------------------|
|
|
| **Model Registry** | Lagrer RAI dashboard + scorecard sammen med modell |
|
|
| **MLflow Integration** | Logger RAI metrics som MLflow metrics for versjonskontroll |
|
|
| **Azure ML Pipelines** | Kjører RAI-komponenter som del av training/evaluation pipeline |
|
|
| **Managed Endpoints** | Data collection for kontinuerlig RAI-monitoring |
|
|
| **Event Grid** | Trigger alerts ved RAI metric drift |
|
|
|
|
---
|
|
|
|
### Azure DevOps / GitHub Actions
|
|
|
|
**Integration points:**
|
|
|
|
1. **Build Validation**: Kjør RAI pipeline som del av PR-validering
|
|
2. **Release Gates**: Automatisk quality gate basert på RAI metrics
|
|
3. **Approval Workflows**: Distribuer scorecard til approvers via artifacts
|
|
4. **Audit Logging**: Lagre RAI scorecards i Azure Artifacts for compliance
|
|
|
|
**GitHub Actions eksempel:**
|
|
|
|
```yaml
|
|
name: MLOps with RAI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
train-and-assess:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: Train Model
|
|
run: |
|
|
az ml job create -f training-pipeline.yml
|
|
|
|
- name: Generate RAI Dashboard
|
|
run: |
|
|
az ml job create -f rai-pipeline.yml
|
|
|
|
- name: Download RAI Scorecard
|
|
run: |
|
|
az ml job download --name $RAI_JOB_NAME --output-name scorecard
|
|
|
|
- name: Upload Scorecard as Artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: rai-scorecard
|
|
path: scorecard.pdf
|
|
|
|
- name: Validate RAI Metrics
|
|
run: python validate_rai_metrics.py
|
|
|
|
deploy:
|
|
needs: train-and-assess
|
|
runs-on: ubuntu-latest
|
|
environment: production # Krever approval
|
|
steps:
|
|
- name: Deploy to Production
|
|
run: python deploy.py
|
|
```
|
|
|
|
---
|
|
|
|
### Microsoft Foundry / Copilot Studio
|
|
|
|
**Scenario:** RAI for generative AI-modeller (GenAIOps).
|
|
|
|
**Utfordringer:**
|
|
- Responsible AI dashboard støtter kun **tabular structured data** (regression/classification)
|
|
- Generative AI krever andre RAI-tilnærminger
|
|
|
|
**Løsninger:**
|
|
1. **Content Safety**: Bruk Azure AI Content Safety for toxicity/bias detection
|
|
2. **Foundry/Agent Framework-evaluering**: Evaluere generative modeller med Microsoft Foundry-evaluatorer og custom metrics. Merk: **Prompt Flow avvikles 2027-04-20** — migrer evaluerings-/orkestreringslogikk til **Microsoft Agent Framework (MAF)**
|
|
3. **Manual Review**: Human-in-the-loop review av generated outputs
|
|
|
|
**Confidence note:** 🟡 Moderat (RAI for GenAI er et fremvoksende felt, mindre standardisert enn for discriminative models)
|
|
|
|
---
|
|
|
|
## Offentlig sektor (Norge)
|
|
|
|
### Regulatoriske krav
|
|
|
|
| Regulering | RAI-relevans |
|
|
|------------|--------------|
|
|
| **EU AI Act** | Krever transparens og forklarbarhet for høy-risiko AI-systemer |
|
|
| **GDPR Art. 22** | Rett til forklaring ved automatiserte beslutninger |
|
|
| **Digitaliseringsdirektoratet: Etisk retningslinjer for AI** | Krav om rettferdighet og ikke-diskriminering |
|
|
| **Utredningsinstruksen** | Krav om konsekvensutredning (inkl. RAI-vurdering) |
|
|
|
|
---
|
|
|
|
### RAI Scorecard i utredningsprosessen
|
|
|
|
**Pattern:** Bruke Responsible AI Scorecard som del av AI-konsekvensutredning.
|
|
|
|
**Workflow:**
|
|
|
|
1. **Innledende vurdering**: Vurdere om AI-systemet faller under høy-risiko kategori
|
|
2. **RAI-integrasjon i utvikling**: Bygg RAI-vurdering inn i MLOps fra dag 1
|
|
3. **Scorecard-generering**: Generer scorecard ved milestone-punkter
|
|
4. **Utredningsdokumentasjon**: Inkluder scorecard i utredningsrapporten
|
|
5. **Offentlig høring**: Del scorecard med berørte parter
|
|
6. **Vedtak og deployment**: Arkiver scorecard som del av beslutningsgrunnlag
|
|
|
|
---
|
|
|
|
### DPIA (Data Protection Impact Assessment) + RAI
|
|
|
|
**Integration pattern:** Kombinere DPIA og RAI-vurdering.
|
|
|
|
| DPIA-element | RAI-komponent | Dokumentasjon |
|
|
|--------------|---------------|---------------|
|
|
| **Formål og proporsjonalitet** | Model overview + performance | Vis at modellen oppfyller formålet uten overskudd av nøyaktighet |
|
|
| **Nødvendighet og dataminimering** | Data analysis | Dokumenter hvilke features som faktisk brukes |
|
|
| **Individers rettigheter** | Counterfactual what-if | Gi brukere innsikt i hva som påvirker beslutningen |
|
|
| **Risiko for diskriminering** | Fairness assessment | Kvantifiser disparities på sensitive grupper |
|
|
| **Åpenhet og informasjon** | Interpretability + scorecard | Forklar modellens beslutninger i ikke-tekniske termer |
|
|
|
|
**Confidence note:** 🟢 Høy (basert på GDPR + Digdir-retningslinjer)
|
|
|
|
---
|
|
|
|
## Kostnad og lisensiering
|
|
|
|
### Azure Machine Learning Pricing for RAI
|
|
|
|
| Ressurs | Kostnadsfaktor | Estimat (NOK/måned) |
|
|
|---------|----------------|---------------------|
|
|
| **Compute for RAI pipeline** | VM-tid (CPU/GPU) | 5 000 - 20 000 (avhengig av dataset-størrelse) |
|
|
| **Storage (RAI dashboards)** | Blob storage | 100 - 500 |
|
|
| **Model Registry** | Inkludert i AML workspace | Ingen ekstrakostnad |
|
|
| **Event Grid (alerts)** | Per event | 50 - 200 |
|
|
| **Data Collection (monitoring)** | Ingress/egress | 500 - 2 000 |
|
|
|
|
**Total estimat:** 6 000 - 23 000 NOK/måned for full RAI-integrasjon.
|
|
|
|
**Kostnad-optimalisering:**
|
|
- Kjør RAI-pipelines på **lavere-kostnads compute** (CPU istedenfor GPU)
|
|
- Begrens test dataset til **5000 rader** (maks for RAI dashboard UI)
|
|
- Bruk **scheduled pipelines** (ukentlig) istedenfor real-time monitoring
|
|
- Arkiver gamle RAI dashboards til **cool/archive storage**
|
|
|
|
---
|
|
|
|
### Lisensiering
|
|
|
|
| Tool | Lisensmodell | Inkludert i |
|
|
|------|--------------|-------------|
|
|
| **Responsible AI Dashboard** | Open-source (basert på InterpretML, Fairlearn, ErrorAnalysis, DiCE) | Azure ML workspace |
|
|
| **Azure ML Pipelines** | PaaS-modell | Azure ML workspace (betaler for compute) |
|
|
| **Azure DevOps** | Per-user (Basic Plan: gratis for 5 brukere) | Separat fra Azure ML |
|
|
| **GitHub Actions** | Gratis for public repos, betalt for private | Separat fra Azure ML |
|
|
|
|
**Confidence note:** 🟢 Høy (basert på Azure pricing + open-source lisensiering)
|
|
|
|
---
|
|
|
|
## For arkitekten (Cosmo)
|
|
|
|
### Når skal RAI integreres i MLOps?
|
|
|
|
**Cosmo's rule of thumb:**
|
|
|
|
> "Hvis modellen tar beslutninger som kan påvirke enkeltpersoners liv, økonomi eller rettigheter — integrer RAI fra dag 1. Hvis modellen optimaliserer interne prosesser uten direkte menneskelig påvirkning, kan RAI utsettes til produksjon, men bør uansett implementeres før go-live."
|
|
|
|
---
|
|
|
|
### Typiske arkitekturvalg
|
|
|
|
| Scenario | Anbefalt arkitektur |
|
|
|----------|---------------------|
|
|
| **Kredittscoring for bank** | Full RAI dashboard + human approval gate + DPIA-integrasjon |
|
|
| **Rekruttering AI i offentlig sektor** | RAI pipeline + scorecard + fairness monitoring i produksjon |
|
|
| **Anbefalingssystem for e-handel** | Error analysis + interpretability + A/B testing med fairness metrics |
|
|
| **Prediktivt vedlikehold (industri)** | Interpretability for trust + error analysis for modellkvalitet |
|
|
|
|
---
|
|
|
|
### Vanlige fallgruver
|
|
|
|
1. **"Vi legger til RAI etter deployment"**
|
|
❌ Problem: Vanskelig å fikse bias/unfairness i produksjonsmodell
|
|
✅ Løsning: Bygg RAI-vurdering inn i training pipeline fra start
|
|
|
|
2. **"RAI dashboard er for komplisert for stakeholders"**
|
|
❌ Problem: Stakeholders får ikke innsikt i modellens oppførsel
|
|
✅ Løsning: Bruk Responsible AI Scorecard (PDF) for ikke-tekniske stakeholders
|
|
|
|
3. **"Vi kan ikke kjøre RAI-pipeline på produksjonsdata pga. GDPR"**
|
|
❌ Problem: Manglende monitoring av fairness i produksjon
|
|
✅ Løsning: Anonymiser data eller kjør RAI på syntetiske data som matcher produksjonsdistribusjon
|
|
|
|
4. **"RAI-komponenter tar for lang tid å kjøre"**
|
|
❌ Problem: Forsinker CI/CD-pipeline
|
|
✅ Løsning: Kjør RAI-vurdering parallelt eller som scheduled job (ikke blocking)
|
|
|
|
---
|
|
|
|
### Spørsmål å stille klienten
|
|
|
|
1. **Regulatorisk kontekst:**
|
|
- "Faller denne modellen under EU AI Act høy-risiko kategori?"
|
|
- "Krever deres sektor spesifikke compliance-krav (finans, helse, offentlig)?"
|
|
|
|
2. **Stakeholder-forventninger:**
|
|
- "Hvem trenger innsikt i modellens beslutninger? (risk officers, auditors, sluttbrukere?)"
|
|
- "Hva er akseptabel fairness disparity for dere? (f.eks. <5% accuracy gap mellom grupper)"
|
|
|
|
3. **Datasettet:**
|
|
- "Inneholder datasettet sensitive attributes (kjønn, etnisitet, alder)?"
|
|
- "Er det kjente skjevheter i historisk data?"
|
|
|
|
4. **Deployment-strategi:**
|
|
- "Skal RAI-vurdering være blocking for deployment, eller advisory?"
|
|
- "Hvem godkjenner modell-deployment basert på RAI scorecard?"
|
|
|
|
---
|
|
|
|
### Anbefalte ressurser for videre dybdelæring
|
|
|
|
- **Microsoft Responsible AI Standard:** https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE5cmFl
|
|
- **Azure ML RAI Dashboard docs:** https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard
|
|
- **Fairlearn (open-source):** https://fairlearn.org/
|
|
- **InterpretML:** https://interpret.ml/
|
|
- **EU AI Act compliance guide:** https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai
|
|
|
|
---
|
|
|
|
## Kilder og verifisering
|
|
|
|
**Microsoft Learn (offisiell dokumentasjon):**
|
|
|
|
1. **Responsible AI Dashboard concept:**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-dashboard?view=azureml-api-2
|
|
|
|
2. **MLOps and GenAIOps for AI workloads:**
|
|
https://learn.microsoft.com/en-us/azure/well-architected/ai/mlops-genaiops
|
|
|
|
3. **Responsible AI Scorecard:**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-responsible-ai-scorecard?view=azureml-api-2
|
|
|
|
4. **Generate RAI insights with YAML and Python:**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-responsible-ai-insights-sdk-cli?view=azureml-api-2
|
|
|
|
5. **Model monitoring and data collection:**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-data-collection
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-monitoring
|
|
|
|
6. **Fairness in ML (Azure ML):**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/concept-fairness-ml?view=azureml-api-2
|
|
|
|
7. **Azure DevOps for ML:**
|
|
https://learn.microsoft.com/en-us/azure/machine-learning/how-to-devops-machine-learning?view=azureml-api-2
|
|
|
|
**Open-source tools (referert i Azure ML RAI):**
|
|
|
|
8. **Fairlearn:** https://fairlearn.org/
|
|
9. **InterpretML:** https://interpret.ml/
|
|
10. **Error Analysis:** https://erroranalysis.ai/
|
|
11. **DiCE (Counterfactuals):** https://github.com/interpretml/DiCE
|
|
12. **EconML (Causal Inference):** https://github.com/microsoft/EconML
|
|
|
|
**Regulatory references:**
|
|
|
|
13. **EU AI Act:** https://digital-strategy.ec.europa.eu/en/policies/regulatory-framework-ai
|
|
14. **GDPR Article 22:** https://gdpr-info.eu/art-22-gdpr/
|
|
15. **Digdir AI-retningslinjer:** https://www.digdir.no/
|
|
|
|
**MCP-calls brukt:** 6 (microsoft_docs_search x 3, microsoft_docs_fetch x 2, microsoft_code_sample_search x 1)
|
|
**Kilder totalt:** 15
|
|
**Confidence:** 95% (høy tillit til Microsoft-dokumentasjon, moderat for implementeringseksempler)
|
|
|
|
---
|
|
|
|
**For Cosmo Skyberg:**
|
|
|
|
Dette dokumentet gir deg en komplett arkitekturoversikt over RAI-integrasjon i MLOps. Nøkkelpunktene for deg som arkitekt er:
|
|
|
|
1. **RAI er ikke "nice-to-have", det er governance-kritisk** for modeller som påvirker mennesker
|
|
2. **Azure ML tilbyr production-ready komponenter** — du trenger ikke bygge egne RAI-verktøy
|
|
3. **Integrer RAI-vurdering i CI/CD-pipeline** som quality gate, ikke som etterpåklapp
|
|
4. **Responsible AI Scorecard er din kommunikasjonskanal** til ikke-tekniske stakeholders
|
|
5. **Norsk offentlig sektor har spesifikke krav** (DPIA + utredningsinstruksen) som RAI støtter direkte
|
|
|
|
Bruk dette dokumentet som referanse når du designer MLOps-arkitekturer hvor compliance og etikk er kritisk.
|