Add /ultraresearch-local for structured research combining local codebase analysis with external knowledge via parallel agent swarms. Produces research briefs with triangulation, confidence ratings, and source quality assessment. New command: /ultraresearch-local with modes --quick, --local, --external, --fg. New agents: research-orchestrator (opus), docs-researcher, community-researcher, security-researcher, contrarian-researcher, gemini-bridge (all sonnet). New template: research-brief-template.md. Integration: --research flag in /ultraplan-local accepts pre-built research briefs (up to 3), enriches the interview and exploration phases. Planning orchestrator cross-references brief findings during synthesis. Design principle: Context Engineering — right information to right agent at right time. Research briefs are structured artifacts in the pipeline: ultraresearch → brief → ultraplan --research → plan → ultraexecute. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
399 lines
14 KiB
Markdown
399 lines
14 KiB
Markdown
# 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.
|