# Azure Local for Edge AI Workloads **Last updated:** 2026-02 **Status:** GA **Category:** Hybrid Cloud & Edge AI --- ## Introduksjon Azure Local (tidligere Azure Stack HCI) er Microsofts hyperkonvergerte infrastrukturlosning for a kjore Azure-tjenester lokalt. For AI-arbeidsbelastninger tilbyr Azure Local GPU-akselerasjon, Kubernetes-stotte via AKS enabled by Arc, og lokal tilgang til Azure-tjenester — alt administrert fra Azure Portal. For norsk offentlig sektor representerer Azure Local en unik mulighet: organisasjoner kan plassere AI-infrastruktur i egne datarom eller hos godkjente driftspartnere, samtidig som de far tilgang til Azures ML-plattform, overvaking og governance-verktoy. Dette gir data residency i Norge uten a ga pa kompromiss med moderne AI-kapabiliteter. Azure Local stotter et bredt utvalg av NVIDIA GPU-er for AI-inferens og trening, inkludert T4, A2, A16, L4, L40 og L40S. Sammen med AKS enabled by Arc og KAITO (Kubernetes AI Toolchain Operator) kan organisasjoner kjore open-source LLM-er som Phi-4, Mistral og Llama direkte pa egen infrastruktur. --- ## Arkitekturoversikt ``` ┌───────────────────────────────────────────────┐ │ Azure Control Plane │ │ Azure Portal │ ML Workspace │ Azure Monitor │ └───────────────────────┬───────────────────────┘ │ Azure Arc │ ┌───────────────────────▼───────────────────────┐ │ Azure Local Cluster │ │ ┌─────────────────────────────────────────┐ │ │ │ AKS enabled by Arc │ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ │ │ CPU Node │ │ GPU Node │ │ │ │ │ │ Pool │ │ Pool │ │ │ │ │ │ │ │ NVIDIA │ │ │ │ │ │ Services │ │ T4/A2/L4 │ │ │ │ │ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────┘ │ │ ┌───────────────┐ ┌─────────────────────┐ │ │ │ Azure Arc VMs │ │ Storage Spaces │ │ │ │ (DDA/GPU-P) │ │ Direct (S2D) │ │ │ └───────────────┘ └─────────────────────┘ │ └───────────────────────────────────────────────┘ ``` --- ## GPU-stotte i Azure Local ### GPU-tilordningsmetoder Azure Local stotter to metoder for GPU-bruk: | Egenskap | Discrete Device Assignment (DDA) | GPU Partitioning (GPU-P) | |----------|----------------------------------|--------------------------| | Ressursmodell | Hel GPU til en VM | Delt GPU mellom flere VM-er | | VM-tetthet | Lav (1 GPU = 1 VM) | Hoy (1 GPU = mange VM-er) | | Appkompatibilitet | Full (DX12, OpenGL, CUDA) | Full (DX12, OpenGL, CUDA) | | VRAM | Opp til full GPU VRAM | Per partisjon | | Driver i gjest | Leverandor-driver (NVIDIA) | Leverandor-driver (NVIDIA) | | AKS-stotte | Ja | Nei (kun VM-er) | | Best for | AI-trening, stor inferens | Lettere inferens, delt bruk | ### Stottede NVIDIA GPU-er | GPU-modell | DDA (Arc VMs) | DDA (AKS) | GPU-P (VMs) | Typisk bruk | |------------|---------------|-----------|-------------|-------------| | NVIDIA T4 | Ja | Ja | Nei | Inferens, lette modeller | | NVIDIA A2 | Ja | Ja | Ja | Inferens, mellomstore modeller | | NVIDIA A10 | Ja (unmanaged) | Nei | Ja | Trening og inferens | | NVIDIA A16 | Ja | Ja | Ja | Multi-bruker inferens | | NVIDIA A40 | Ja (unmanaged) | Nei | Ja | Tung trening | | NVIDIA L4 | Ja | Ja | Ja | Moderne inferens | | NVIDIA L40 | Ja | Ja | Ja | Stor modell-inferens | | NVIDIA L40S | Ja | Ja | Ja | High-end AI workloads | ### GPU-klargjoring ```powershell # Sjekk GPU-status pa Azure Local-noder Get-PnpDevice | Select-Object Status, Class, FriendlyName, InstanceId | Where-Object { $_.FriendlyName -match "Nvidia" } # Installer mitigation driver for DDA # (Kreves for Azure Local 23H2+) pnputil /add-driver oem_mitigation.inf /install # Verifiser GPU er dismounted og klar for DDA Get-VMHostAssignableDevice ``` --- ## Cluster-felles ML Stack ### AKS enabled by Azure Arc pa Azure Local AKS pa Azure Local gir en fullt administrert Kubernetes-opplevelse med GPU-stotte: **Oppretting av klynge med GPU:** ```bash # Opprett AKS-klynge pa Azure Local az aksarc create \ --resource-group ai-edge-rg \ --name ai-edge-cluster \ --custom-location my-custom-location \ --vnet-ids /subscriptions/.../virtualNetworks/ai-vnet # Legg til GPU node pool az aksarc nodepool add \ --cluster-name ai-edge-cluster \ --name gpu-pool \ --resource-group ai-edge-rg \ --node-count 2 \ --node-vm-size Standard_NC4_A2 \ --os-type Linux ``` **GPU VM SKU-er tilgjengelige:** | VM SKU | GPU | vCPU | Minne (GB) | GPU-minne | |--------|-----|------|------------|-----------| | Standard_NK6 | T4 (1x) | 6 | 56 | 16 GB | | Standard_NC4 | A2 (1x) | 4 | 28 | 16 GB | | Standard_NC8 | A2 (1x) | 8 | 56 | 16 GB | | Standard_NC16 | A16 (1x) | 16 | 112 | 16 GB | | Standard_NC32 | A16 (2x) | 32 | 224 | 32 GB | ### KAITO pa Azure Local Kubernetes AI Toolchain Operator (KAITO) kjorer som en cluster extension: ```bash # Opprett klynge med KAITO aktivert az aksarc create \ --resource-group ai-edge-rg \ --name ai-kaito-cluster \ --custom-location my-custom-location \ --vnet-ids /subscriptions/.../virtualNetworks/ai-vnet \ --enable-ai-toolchain-operator # Aktiver KAITO pa eksisterende klynge az aksarc update \ --resource-group ai-edge-rg \ --name ai-edge-cluster \ --enable-ai-toolchain-operator ``` **Deploy LLM med KAITO:** ```yaml # workspace-phi4-mini.yaml apiVersion: kaito.sh/v1alpha1 kind: Workspace metadata: name: workspace-phi-4-mini spec: resource: instanceType: Standard_NC8 labelSelector: matchLabels: apps: llm-inference inference: preset: name: phi-4-mini-instruct ``` ```bash # Deploy modellen kubectl apply -f workspace-phi4-mini.yaml # Sjekk status kubectl get workspace -w # Test inferens export SERVICE_IP=$(kubectl get svc workspace-phi-4-mini \ -o jsonpath='{.spec.clusterIP}') kubectl run -it --rm curl --image=curlimages/curl -- \ curl -X POST http://$SERVICE_IP/v1/completions \ -H "Content-Type: application/json" \ -d '{ "model": "phi-4-mini-instruct", "prompt": "Forklar fordelene med edge AI for offentlig sektor", "max_tokens": 200 }' ``` --- ## Local Azure Services ### Azure-tjenester som kjorer lokalt Azure Local gir tilgang til et voksende utvalg Azure-tjenester direkte pa lokale servere: | Tjeneste | Tilgjengelighet | AI-relevans | |----------|-----------------|-------------| | AKS (Arc) | GA | Container-basert ML og inferens | | Azure Arc VMs | GA | GPU-akselererte VM-er for AI | | Azure Monitor | GA | Overvaking av AI-arbeidsbelastninger | | Azure Policy | GA | Governance for AI-deployments | | Azure Key Vault | GA | Hemmelighetshaandtering for modeller | | Azure Container Registry | Preview | Lokal container-lagring (disconnected) | | Azure Arc Data Services | GA | SQL og PostgreSQL for AI-data | ### Lokal Container Registry for disconnected drift ```bash # Opprett lokal ACR for disconnected miljoer # (Azure Local med autonome operasjoner) az acr create \ --name myedgeregistry \ --resource-group ai-edge-rg \ --location autonomous \ --sku Standard ``` --- ## Storage-optimalisert inferens ### Storage Spaces Direct (S2D) Azure Local bruker S2D for distribuert lagring med hoy ytelse: | Lagringstype | Best for | Ytelse | |-------------|----------|--------| | NVMe + SSD tiered | Modell-lasting | <100ms load for 7B modell | | All-flash NVMe | Real-time inferens | Sub-ms I/O | | SSD + HDD tiered | Modell-arkiv, batch | Kostnadsoptimalt | ### Persistent Volume for ML-modeller ```yaml # persistent-volume-claim.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ai-model-storage namespace: ai-workloads spec: accessModes: - ReadWriteMany storageClassName: azure-local-ssd resources: requests: storage: 100Gi --- # Pod med modell-lagring apiVersion: v1 kind: Pod metadata: name: model-server namespace: ai-workloads spec: containers: - name: inference image: myregistry/model-server:v1 volumeMounts: - name: model-data mountPath: /models resources: limits: nvidia.com/gpu: 1 volumes: - name: model-data persistentVolumeClaim: claimName: ai-model-storage ``` ### Caching-strategier for modeller | Strategi | Beskrivelse | Fordel | |----------|-------------|--------| | Pre-load til NVMe | Last modeller ved oppstart | Raskest cold start | | Shared PVC | ReadWriteMany for flere pods | Effektiv lagring | | InitContainer | Last modell for main container starter | Paalitelig sekvensering | | Model sidecar | Egen container for modell-lasting | Separasjon av ansvar | --- ## Hybrid Resilience Patterns ### High Availability for AI pa Azure Local ``` ┌─────────────────────────────────────────┐ │ Azure Local HA Cluster │ │ │ │ Node 1 ────────── Node 2 │ │ GPU: L4 GPU: L4 │ │ AI Workload AI Workload │ │ (Active) (Standby) │ │ │ │ │ │ └──── S2D ───────┘ │ │ Replicated Storage │ └─────────────────────────────────────────┘ ``` | Resilience-moenster | Beskrivelse | RTO | |---------------------|-------------|-----| | Active-Passive GPU | Standby node med GPU ready | 2-5 min | | Active-Active load balanced | Inferens fordelt pa noder | 0 (graceful) | | N+1 redundancy | Ekstra node for failover | 1-3 min | | Stretched cluster | Klynge over to lokasjoner | Automatisk | ### Failover-konfigurasjon ```powershell # Konfigurer VM failover med GPU re-assignment # Krever at GPU-er er tilgjengelige pa failover-noden # Sett foretrukket eier for AI VM Set-ClusterGroup -Name "AI-Inference-VM" ` -PreferredOwner "Node1", "Node2" # Aktiver automatisk failback (Get-ClusterGroup "AI-Inference-VM").AutoFailbackType = 1 ``` ### Cloud-fallback for Azure Local Nar lokal kapasitet er utilstrekkelig: ```yaml # Hybrid inference med sky-fallback apiVersion: v1 kind: ConfigMap metadata: name: inference-config data: routing: | primary: endpoint: http://local-model-svc:8080/v1/completions timeout: 5s fallback: endpoint: https://my-foundry.openai.azure.com/v1/completions condition: local_gpu_util > 95% OR local_unavailable ``` --- ## Nettverksarkitektur ### Anbefalte nettverkstopologier | Topologi | Bruk | Krav | |----------|------|------| | Converged | Enkle deployments | Min 10 Gbps | | Hyper-converged | Standard AI-klynge | 25 Gbps + RDMA | | Switched | Stor skala, mange noder | 25-100 Gbps fabric | ### Minimum nettverkskrav for AI | Trafikk | Minimum | Anbefalt | |---------|---------|----------| | Management (Arc) | 1 Gbps + internett | 10 Gbps | | Storage (S2D) | 10 Gbps RDMA | 25 Gbps RDMA | | Compute (GPU) | 10 Gbps | 25 Gbps | | Client (inferens) | 1 Gbps | 10 Gbps | --- ## Sizing-guide for AI-arbeidsbelastninger ### Anbefalte konfigurasjoner | Arbeidsbelastning | Noder | GPU per node | Minne per node | Lagring | |-------------------|-------|-------------|----------------|---------| | Liten inferens (Phi-3) | 2 | 1x A2 | 64 GB | 1 TB NVMe | | Medium inferens (Phi-4, Mistral-7B) | 3 | 1x A16 | 128 GB | 2 TB NVMe | | Stor inferens (Llama-70B) | 4 | 2x L40S | 256 GB | 4 TB NVMe | | Trening + inferens | 4+ | 2x A40/L40S | 512 GB | 8 TB NVMe | ### Kostnadsestimat (Azure Local) | Komponent | Estimert kost (NOK) | |-----------|---------------------| | 3-node Azure Local cluster | 300,000 - 600,000 | | NVIDIA A2 GPU (per stk) | 15,000 - 25,000 | | NVIDIA L4 GPU (per stk) | 25,000 - 40,000 | | NVIDIA L40S GPU (per stk) | 80,000 - 120,000 | | Azure Local lisens | Inkludert i Azure-abonnement | | Azure Arc management | Inkludert (basis) | | Azure ML extension | Inkludert | **Merk:** Priser er estimater og varierer med leverandor og konfigurasjon. --- ## For Cosmo - **Azure Local er den primaere plattformen for on-premises AI i Microsoft-okosystemet** — fullt integrert med Azure Arc for sentralisert styring, men med all databehandling pa egen infrastruktur. - **GPU-stotten er bred med NVIDIA T4/A2/A16/L4/L40/L40S** — bade DDA (hel GPU) og GPU-P (delt GPU) er tilgjengelig, noe som gir fleksibilitet fra lette inferensoppgaver til tung trening. - **KAITO pa AKS Arc forenkler LLM-deployment drastisk** — fra GPU-klargjoring til modell-serving med OpenAI-kompatibelt API pa noen fa kubectl-kommandoer. - **For norsk offentlig sektor gir Azure Local data residency i Norge** med full Azure-administrasjon fra Norway East-regionen — data forlater aldri lokale servere. - **Hybrid resilience med sky-fallback** sikrer at AI-tjenester forblir tilgjengelige selv ved lokal kapasitetsmangel, med automatisk routing til Azure-endepunkter.