# Batch Processing APIs for Non-Latency-Critical Workloads **Last updated:** 2026-02 **Status:** GA **Category:** Cost Optimization & FinOps for AI --- ## 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 (februar 2026) | Modell | Versjon | Input format | API support | |--------|---------|--------------|-------------| | `o3-mini` | 2025-01-31 | text | `2025-04-01-preview` (kreves for o3-mini) | | `gpt-4o` | 2024-08-06 | text + image | `2024-10-21` (GA), `2025-04-01-preview` | | `gpt-4o-mini` | 2024-07-18 | text + image | `2024-10-21` (GA), `2025-04-01-preview` | | `gpt-4o` | 2024-05-13 | text + image | `2024-10-21` (GA), `2025-04-01-preview` | **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/en-us/azure/ai-foundry/openai/how-to/batch - Konfidens: **Verified** (fetched 2026-02) - Innhold: Deployment types, pricing (50% reduction), dynamic quota, exponential backoff, supported models, API versions 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/ai-foundry/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/ai-foundry/openai/how-to/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/ai-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/ai-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)