ms-ai-architect/skills/ms-ai-security/references/cost-optimization/batch-processing-cost-reduction.md
Kjell Tore Guttormsen ddce43d8b2 feat(ms-ai-architect): Spor 1 — Port-1-substrat migrert på 4 ikke-advisor-skills (243 Source + 327 Type + 325 TOC + stale-verified poison fjernet) [skip-docs]
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.
2026-07-04 10:19:11 +02:00

380 lines
19 KiB
Markdown

# Batch Processing APIs for Non-Latency-Critical Workloads
**Last updated:** 2026-06
**Status:** GA
**Category:** Cost Optimization & FinOps for AI
**Source:** https://learn.microsoft.com/azure/foundry/openai/how-to/batch
**Type:** reference
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter / Nøkkelegenskaper](#kjernekomponenter--nøkkelegenskaper)
- [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
Azure OpenAI Batch API er designet for å håndtere storskala- og høyvolumsbehandling av AI-oppgaver effektivt. Ved å prosessere asynkrone grupper av requests i batch-format, fremfor én og én request, oppnår organisasjoner **50% kostnadsreduksjon** sammenlignet med standard global deployment. Batch API benytter separat enqueued token-kvote, som sikrer at batch-jobber ikke forstyrrer sanntidsapplikasjoner.
Batch-prosessering egner seg for workloads hvor latency ikke er kritisk: dokumentgenerering, dataanalyse, oversettelser, sentiment analysis, og innholdsoppretting. Med 24-timers target turnaround og mulighet for eksponensiell backoff ved store jobber, gir batch API en svært kostnadseffektiv løsning for planlagte AI-operasjoner.
Microsoft tilbyr to deployment-typer for batch: **Global-Batch** (globalt distribuert kapasitet) og **Data Zone Batch** (regionsbasert). **Dynamic quota** anbefales sterkt for å utnytte overskuddskapasitet når tilgjengelig, og unngå jobbfeil grunnet kvotebegrensninger.
## Kjernekomponenter / Nøkkelegenskaper
| Komponent | Beskrivelse |
|-----------|-------------|
| **Global-Batch deployment** | Globalt distribuert batch-kapasitet med separat enqueued token quota. Tilbyr 50% prisreduksjon mot global standard deployment. |
| **Data Zone Batch** | Regionsbasert batch-deployment for compliance-scenarier. Data prosesseres innenfor Azure geography (data at rest), men inferencing kan skje i andre Azure OpenAI-regioner. |
| **Dynamic quota** | Automatisk skalering av enqueued token quota når ekstra kapasitet er tilgjengelig. Reduserer risiko for jobbfeil. **Anbefales aktivert** på alle batch deployments. |
| **Exponential backoff** | Ny funksjonalitet for automatisk retry av store batch-jobber når quota blir tilgjengelig. Støttes i utvalgte regioner. |
| **24-timers completion window** | Batch-jobber målsettes å fullføres innen 24 timer, men jobber som tar lengre tid expires ikke. Kunden kan kansellere når som helst og betaler kun for fullført arbeid. |
| **Separate quota pool** | Batch har egen enqueued token quota, isolert fra sanntids-workloads. Ingen disrupsjon av online applikasjoner. |
### Støttede modeller (juni 2026)
Gjeldende batch-støttede modellsett (Global-Batch og Data Zone Batch). Kilde: [Getting started with Azure OpenAI batch deployments](https://learn.microsoft.com/azure/foundry/openai/how-to/batch).
| Modell | Versjon |
|--------|---------|
| `gpt-5.1` | 2025-11-13 |
| `gpt-5` | 2025-08-07 |
| `o3` | 2025-04-16 |
| `o4-mini` | 2025-04-16 |
| `gpt-4.1` | 2025-04-14 |
| `gpt-4.1-mini` | 2025-04-14 |
| `gpt-4.1-nano` | 2025-04-14 |
| `o3-mini` | 2025-01-31 |
| `gpt-4o` | 2024-05-13, 2024-08-06, 2024-11-20 |
| `gpt-4o-mini` | 2024-07-18 |
For tilgang til `gpt-5` og `o3` kreves registrering (se Microsofts reasoning-modellguide). Data Zone Batch dekker samme modellsett, men `gpt-5.1`, `gpt-5` og `o3-mini` er ikke tilgjengelige i alle Data Zone-regioner — sjekk regionstabellen i kilden.
**API-versjon:** Global-Batch støtter eldre API-versjoner, men nyere modeller krever nyere versjoner. F.eks. er `o3-mini` ikke støttet med `2024-10-21`, siden modellen ble utgitt etter den datoen. Kildens veiledning: "To access newer models with Global Batch, use the v1 API."
**Ikke støttet:**
- Assistants API (ingen integrasjon)
- Azure OpenAI On Your Data (ikke støttet med batch)
### Filformat og workflow
1. **Upload batch input file** (JSONL-format, purpose: "batch")
- Kan settes expiration: 14-30 dager fra upload
2. **Create batch job** (spesifiser input_file_id, endpoint, completion_window)
3. **Monitor batch status** (polling via API eller event-driven via Azure Storage)
4. **Retrieve output** (output file i JSONL-format, kan eksporteres til Azure Blob Storage)
## Arkitekturmønstre
### 1. Pure Batch Processing
**Beskrivelse:** Alle AI-operasjoner kjøres som batch-jobber. Egnet for periodiske rapporter, dataanalyse, og planlagte workloads.
```
User submits request → Job queued → Batch API processes (24h) → Results delivered
```
**Brukstilfeller:**
- Nattlige dokumentoppsummeringer for intern rapportering
- Ukentlig sentiment analysis av kundefeedback
- Månedlig oversettelse av produktkataloger
**Fordeler:**
- Lavest mulig kostnad (50% reduksjon)
- Ingen real-time infrastruktur nødvendig
- Enkel integrasjon med schedulers (Azure Data Factory, Logic Apps)
**Ulemper:**
- Ingen sanntids-respons
- Latency på opptil 24 timer
### 2. Hybrid: Real-Time + Batch
**Beskrivelse:** Sanntids-deployment for kritiske operasjoner, batch for analytiske og repeterende oppgaver.
```
┌─────────────────────────┐
│ Real-Time Deployment │ ← Chatbot, user-facing APIs
└─────────────────────────┘
+
┌─────────────────────────┐
│ Batch Deployment │ ← Data enrichment, reporting
└─────────────────────────┘
```
**Brukstilfeller:**
- Chatbot for sanntid, batch for treningsdata-generering
- Real-time oversettelse for brukere, batch for dokumentarkiv
- Live support automation, batch for historisk analyse
**Fordeler:**
- Optimal kostnadsstyring (betaler sanntidspris kun for kritiske tjenester)
- Skalerbar arkitektur
- Separate quota pools (ingen quota-konflikter)
**Ulemper:**
- Kompleksitet i deployment og orchestration
- Krever routing-logikk for å bestemme real-time vs batch
### 3. Scheduled Batch Pipelines
**Beskrivelse:** Batch-jobber trigges av schedule eller event (f.eks. ny data i Data Lake). Fullt automatisert pipeline.
```
Azure Data Factory → Trigger batch job → Monitor status → Export results → Downstream processing
```
**Brukstilfeller:**
- Daglig oppsummering av loggdata
- Event-drevet: ny PDF → batch-ekstraksjon → metadata til database
- Scheduled: hver søndag → oversett nye artikler → publiser
**Fordeler:**
- Hands-off automation
- Integrasjon med Azure ecosystem (ADF, Logic Apps, Function Apps, Event Grid)
- Kostnadseffektivt for repeterende workloads
**Ulemper:**
- Krever pipeline-utvikling og feilhåndtering
- Avhengig av Azure orchestration-tjenester
## Beslutningsveiledning
### Når brukes Batch API?
| Kriterium | Real-Time Deployment | Batch Deployment |
|-----------|---------------------|------------------|
| **Latency-krav** | < 5 sekunder | 1-24 timer OK |
| **Volum** | Varierende, on-demand | Store, forutsigbare batch-volumer |
| **Kostnadsbudsjett** | Standard pricing | 50% reduksjon |
| **Brukstilfelle** | Chatbots, user-facing APIs | Rapporter, dataanalyse, planlagte oppgaver |
| **Quota isolation** | Delt med batch (hvis ikke separat) | Separat enqueued token quota |
### Beslutningstabell: Velge deployment-type
| Scenario | Anbefaling |
|----------|-----------|
| **Nattlig rapport-generering** | Global-Batch (50% lavere kostnad) |
| **Sanntids chatbot** | Real-Time (Standard eller Provisioned) |
| **GDPR/Schrems II-krav (Norge)** | Data Zone Batch (regional processing) |
| **Ukentlig dataanalyse (store volumer)** | Global-Batch + Dynamic quota |
| **Hybrid: både sanntid og batch** | To separate deployments (1x Real-Time, 1x Batch) |
### Vanlige feil
| Feil | Årsak | Løsning |
|------|-------|---------|
| **Batch job fails: insufficient quota** | Enqueued token quota for lav | Aktiver dynamic quota, eller øk deployment quota |
| **Job takes > 24h** | Stor jobb, høy belastning | Bruk exponential backoff (støttes i utvalgte regioner) |
| **Cost overrun** | Bruker real-time for batch-workloads | Migrer ikke-latency-kritiske workloads til batch |
| **Data residency concern** | Global-Batch prosesserer globalt | Bruk Data Zone Batch for regional compliance |
### Røde flagg
- **Bruker real-time deployment for rapportering og dataanalyse** → Migrer til batch (50% kostnadskutt)
- **Batch-jobber feiler pga. quota** → Aktiver dynamic quota
- **Ingen monitoring av batch job status** → Implementer polling eller event-driven notifications
- **Hardkodet 24h timeout** → Batch-jobber expires ikke, vurder lengre tidsvindu for svært store jobber
## Integrasjon med Microsoft-stakken
| Tjeneste | Integrasjonspunkt | Brukstilfelle |
|----------|-------------------|---------------|
| **Azure Data Factory** | Pipeline activity for batch job creation + monitoring | Scheduled batch workflows, data transformations |
| **Logic Apps** | HTTP actions for batch API + polling for status | Event-driven batch triggers (nye filer → batch-prosessering) |
| **Power Automate** | Custom connectors for Azure OpenAI Batch API | Low-code automation for planlagte AI-oppgaver |
| **Azure Functions** | Python/C# SDK for batch job orchestration | Custom orchestration, retry logic, feilhåndtering |
| **Azure Blob Storage** | Input/output storage for batch files | Store JSONL input, retrieve output results |
| **Azure Event Grid** | Event-driven triggers for batch completion | Notify downstream systems when batch job completes |
| **Azure Monitor** | Metrics og logging for batch job performance | Overvåk enqueued token usage, job success rate, latency |
### Eksempel: Azure Data Factory pipeline
```
1. ADF Trigger (schedule: daily 02:00)
2. Copy activity: Data Lake → Blob Storage (JSONL format)
3. Azure Function: Upload file + create batch job
4. Until loop: Poll batch status (every 5 min)
5. Copy activity: Download output → Data Lake
6. Downstream processing (e.g., Synapse Analytics)
```
## Offentlig sektor (Norge)
### GDPR og datasuverenitet
| Krav | Global-Batch | Data Zone Batch |
|------|--------------|-----------------|
| **Data at rest** | Azure geography (Norge) | Azure geography (Norge) |
| **Inferencing location** | Kan prosesseres i andre Azure OpenAI-regioner | Regional processing (avhengig av konfigurasjon) |
| **Schrems II compliance** | Vurder Data Zone Batch for strengeste krav | Anbefales for offentlig sektor |
| **Data Processing Agreement (DPA)** | Standard Microsoft DPA | Standard Microsoft DPA |
**Anbefaling for offentlig sektor:** Bruk **Data Zone Batch** hvis datasuverenitet er kritisk (f.eks. sensitiv helseinformasjon, personopplysninger). For mindre sensitive workloads (offentlige dokumenter, åpne data), kan Global-Batch benyttes.
### EU AI Act compliance
Batch API påvirker ikke direkte AI Act-klassifisering (modell-nivå), men deployment-valg kan påvirke **transparency og accountability**:
- Logg batch job IDs og input/output for audit trail
- Implementer monitoring for bias detection (output review)
- Dokumenter beslutninger om batch vs. real-time for høyrisiko-applikasjoner
### Budsjettprosesser
Batch API gir **forutsigbar kostnad** for planlagte AI-operasjoner:
- **50% reduksjon** gjør det lettere å budsjettere store volumer
- Månedlige batch-workloads kan estimeres basert på historisk token-bruk
- Kombiner med **Azure Cost Management** for detaljert cost tracking per deployment
**Eksempel:** En kommune med månedlig rapport-generering (1M tokens/mnd):
- Real-time: ~$20 (estimat)
- Batch: ~$10 (50% reduksjon)
- **Årlig besparelse:** $120
## Kostnad og lisensiering
### Prismodell
| Deployment type | Kostnad vs. Global Standard |
|-----------------|----------------------------|
| **Global Standard** | 100% (baseline) |
| **Global-Batch** | **50%** (halv pris) |
| **Data Zone Batch** | 50% (samme som Global-Batch, men regional) |
**Verifisert:** [Azure OpenAI Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/)
### Kostnadsdrivere
1. **Token-bruk** (input + output tokens)
2. **Modellvalg** (o3-mini < gpt-4o-mini < gpt-4o)
3. **Deployment-type** (batch vs. real-time)
4. **Quota allocation** (dynamic quota reduserer overhead ved retry)
### Optimaliseringstips
| Optimering | Effekt |
|------------|--------|
| **Migrer ikke-latency-kritiske workloads til batch** | 50% kostnadskutt |
| **Bruk gpt-4o-mini for enkle oppgaver** | Lavere token-pris enn gpt-4o |
| **Aktiver dynamic quota** | Reduserer jobbfeil, minimerer retry-overhead |
| **Batch flere requests i én job** | Reduserer API overhead, bedre throughput |
| **Scheduled batch (natt/helg)** | Utnytter lavere belastning, raskere processing |
| **Monitor output quality** | Sikrer at billigere modeller (gpt-4o-mini) oppfyller kvalitetskrav |
### TCO-sammenligning (Total Cost of Ownership)
**Scenario:** 10M tokens/måned (mixed input/output)
| Deployment | Token cost/måned | Infrastruktur | Total/måned | Total/år |
|------------|------------------|---------------|-------------|----------|
| Real-Time Standard | $200 | $0 (serverless) | $200 | $2400 |
| Global-Batch | $100 | $0 (serverless) | $100 | $1200 |
| **Besparelse** | **$100/mnd** | — | **$100/mnd** | **$1200/år** |
**Note:** Estimater basert på illustrative priser. Faktiske kostnader avhenger av modell, region, og token-distribusjon.
## For arkitekten (Cosmo)
### Spørsmål å stille kunden
1. **Hva er akseptabel latency for denne workloaden?** (Hvis > 1 time → batch er et alternativ)
2. **Hva er volumet og frekvensen?** (Daglig 100K tokens → batch, ad-hoc 1K tokens → real-time)
3. **Finnes det compliance-krav (GDPR, Schrems II, AI Act)?** (Ja → vurder Data Zone Batch)
4. **Hvor kritisk er kostnadskontroll?** (Høy prioritet → batch for alt som ikke er sanntid)
5. **Er workloaden forutsigbar (scheduled)?** (Ja → batch + ADF/Logic Apps, nei → real-time)
6. **Hva skjer hvis batch-jobb feiler?** (Retry-strategi, exponential backoff, alert-system)
7. **Er det behov for both real-time og batch?** (Hybrid deployment med separate quota pools)
8. **Hvordan monitores batch-jobber?** (Polling, event-driven, dashboard i Azure Monitor)
### Fallgruver å unngå
| Fallgruve | Konsekvens | Mitigering |
|-----------|------------|------------|
| **Bruker real-time for alt** | Dobbel kostnad for batch-egnede workloads | Analyser workloads, splitt i real-time vs. batch |
| **Dynamic quota disabled** | Batch-jobber feiler pga. quota, manuell retry | **Alltid aktiver dynamic quota** |
| **Ingen monitoring** | Batch-jobber feiler stille, ingen alerting | Implementer polling + Azure Monitor alerts |
| **Manglende retry-logikk** | Transiente feil → tapt data | Bruk exponential backoff, persistent queue |
| **Hardkodet 24h timeout** | Store jobber feiler unødvendig | Batch-jobber expires ikke, ikke hardkod timeout |
| **Ikke vurdert Data Zone Batch** | Compliance-brudd (Schrems II) | Alltid vurder Data Zone for offentlig sektor |
| **Overprovisjonering av quota** | Betaler for ubrukt kapasitet | Start lavt, bruk dynamic quota, skaler ved behov |
### Anbefalinger per modenhetsnivå
| Nivå | Beskrivelse | Anbefalinger |
|------|-------------|--------------|
| **Nivå 1: Pilot** | Første batch-deployment, testing | Start med Global-Batch, dynamic quota, enkel scheduler (Logic Apps). Test output quality før scale. |
| **Nivå 2: Produksjon** | Stabile batch-workloads, noe kompleksitet | Azure Data Factory for orchestration, monitoring med Azure Monitor, retry-logikk. Vurder hybrid (real-time + batch). |
| **Nivå 3: Skalert** | Flere batch-workloads, compliance-krav | Data Zone Batch for compliance, event-driven architecture (Event Grid), advanced monitoring (cost per job), FinOps-rapportering. |
### Arkitekturvalg: Decision tree
```
Kreves respons < 5 sekunder?
├─ Ja → Real-Time deployment
└─ Nei → Batch deployment
├─ Compliance-krav (Schrems II)?
│ ├─ Ja → Data Zone Batch
│ └─ Nei → Global-Batch
└─ Volum > 1M tokens/dag?
├─ Ja → Dynamic quota ON, exponential backoff
└─ Nei → Standard batch, dynamic quota ON (anbefales alltid)
```
## Kilder og verifisering
### Microsoft Learn (Verified via MCP)
1. **Getting started with Azure OpenAI batch deployments**
- URL: https://learn.microsoft.com/azure/foundry/openai/how-to/batch
- Konfidens: **Verified** (fetched 2026-06)
- Innhold: Deployment types, pricing (50% reduction), dynamic quota, exponential backoff, supported models (gpt-5.1/gpt-5/o3/o4-mini/gpt-4.1-familien/o3-mini/gpt-4o/gpt-4o-mini), API versions (v1 API for nyere modeller)
2. **Azure OpenAI Batch API pricing**
- URL: https://azure.microsoft.com/pricing/details/cognitive-services/openai-service/
- Konfidens: **Verified** (referenced in Microsoft Learn)
- Innhold: 50% cost reduction for batch vs. global standard
3. **What's new in Azure OpenAI (August 2024)**
- URL: https://learn.microsoft.com/en-us/azure/foundry-classic/openai/whats-new#august-2024
- Konfidens: **Verified**
- Innhold: Batch API announcement, key use cases, GA status
4. **Azure OpenAI deployment types**
- URL: https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/deployment-types
- Konfidens: **Verified**
- Innhold: Global-Batch vs. Data Zone Batch, dynamic quota
### Code samples (Verified via MCP)
5. **Python: Create batch job with DefaultAzureCredential**
- URL: https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/batch?pivots=programming-language-python
- Konfidens: **Verified**
- Innhold: OpenAI Python SDK examples for batch job creation
6. **Python: Upload batch file with expiration**
- URL: https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/batch?pivots=programming-language-python#upload-batch-file
- Konfidens: **Verified**
- Innhold: File upload with 14-30 day expiration
### Konfidensnivå per seksjon
| Seksjon | Konfidens | Kilde |
|---------|-----------|-------|
| Introduksjon | **Verified** | Microsoft Learn (batch how-to) |
| Kjernekomponenter | **Verified** | Microsoft Learn (deployment types, models, API support) |
| Arkitekturmønstre | **Baseline** | Utledet fra best practices + Microsoft guidance |
| Beslutningsveiledning | **Baseline** | Cosmo-syntese av verified sources |
| Integrasjon med Microsoft-stakken | **Baseline** | Azure dokumentasjon (ADF, Logic Apps, Function Apps) |
| Offentlig sektor | **Baseline** | GDPR/Schrems II standarder + Azure compliance |
| Kostnad og lisensiering | **Verified** | Azure pricing (50% reduction), Microsoft Learn |
| For arkitekten | **Baseline** | Cosmo-anbefaling basert på verified data |
**Samlet konfidens:** Høy (kjernedata verified, anbefalinger baseline)