ms-ai-architect/skills/ms-ai-governance/references/monitoring-observability/cost-monitoring-cost-attribution.md
Kjell Tore Guttormsen 3a73eeafdc refactor(ms-ai-architect): R13 del 1 — nøytraliser Cosmo-personaen i ref-korpusets headinger, etter å ha rettet en gate som var målt usann to ganger
Ordre 20260912T193441Z-7358817909. Steg 1 var ikke transformen, men å rette
roadmapens R13-gate og få den ratifisert. Gaten `grep -rl "Cosmo"
skills/*/references -> 0` var usann på to uavhengige måter:

1. Ordren fanget den første: 451 av forekomstene er Azure Cosmos DB, ekte
   produktinnhold. Diskriminatoren er ikke bokstaven «s» — `Cosmos <norsk
   substantiv>` er genitiv av personaen (`### Cosmos tonalitet`), mens
   `Cosmos DB`/`CosmosClient`/`cosmos_ru` er produkt.
2. Denne økten fant den andre: 132 persona-forekomster ligger i prosa,
   tabeller, dialog-replikker og proveniens-linjer. Heading-nøytralisering
   kan ikke nå dem, så «0 persona» er uoppnåelig også under den ratifiserte
   formen. Operatøren ratifiserte alternativ A: gaten speiler formen, og de
   132 bokføres til R13b/R14.

Tre korreksjoner av premisser som sto i ordren og STATE:
  «ca 320 produkt»   -> 451 (case-sensitivt nett manglet 327 lowercase
                        TOC-ankre + 99 identifikatorer; sann nevner 1 638)
  «169 headinger»    -> 401. 169 var `^## For Cosmo`-prefikset (168) og var
                        internt inkonsistent med sin egen topp-variant (204)
  «417 matcher ingen
   populasjon»       -> 417 er cosmo-headinger utenfor kodefences; briefens
                        nevner var reell hele tiden

Fence-bevissthet er målt skadelig, ikke nødvendig: begge toggle-regler er
gale på dette korpuset (naiv toggle skjuler en ekte heading i
chain-of-thought-prompting.md, CommonMark-regelen ubalanserer
service-level-documentation-dr.md). Fence-agnostisk deteksjon finner 401
heading-linjer i nøyaktig de samme 40 variantene som fence-bevisst finner
400 i — ingen kodeblokk-linje er byte-identisk til en persona-heading. Derfor
nøkles transformen på 40 enumererte heading-tekster og ignorerer fences. En
ukjent variant kaster; en slug-kollisjon kaster. Ingenting auto-fikses.

TOC-en regenereres ikke, den rettes kirurgisk: alle 327 persona-lenker hadde
lenketekst lik én av de 40 heading-tekstene og anker lik slugify av den
(327/327, 0 avvik), så heading og TOC-entry skrives i samme operasjon og
ingen mellomtilstand etterlater en død lenke.

Ratifisert målform: `For Cosmo`, `For Cosmo Skyberg` og `For arkitekten
(Cosmo)` konvergerer på `For arkitekten`. To filer kolliderte og er adjudisert
ved å lese dem, ikke ved regel.

Verifisering (alle 7 kriterier fra ordren):
  G1 persona på heading-linjer   401 -> 0
  G2 døde fragmentlenker         1 -> 1 (pre-eksisterende, unntatt)
  G3 produkt-forekomster         451 -> 451; `Cosmos DB|Azure Cosmos` 308 = 308
  de 3 kun-produkt-filene        byte-identiske
  nettet validert begge veier    injisert persona feller G1; genitiv feller G1;
                                 produkt-heading og de 3 filene passerer
  hele diffen                    802 heading-linjer + 654 TOC-linjer, ANNET = 0
  linjeantall                    728 lagt til = 728 slettet
  suite                          1120/1120 (1097 + 23 nye)
  validate-plugin                250 PASS / 0 FAIL
  stikkprøve                     10 filer, alle 5 skills, inkl. de 3 mest
                                 produkt-tunge (26/20/19) — kun heading+TOC

Utenfor scope, urørt: de 4 SKILL.md, de 23 commands, CLAUDE.md, README.md,
NOTICE.md, docs/ (alt R14).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 22:12:28 +02:00

528 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cost Monitoring and Expense Reporting for AI Deployments
**Last updated:** 2026-06
**Status:** GA
**Category:** Monitoring & Observability
**Type:** reference
**Source:** https://learn.microsoft.com/azure/foundry/concepts/manage-costs
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter](#kjernekomponenter)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Foundry-portal-native kostnadssporing](#foundry-portal-native-kostnadssporing)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten](#for-arkitekten)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Kostnadskontroll er kritisk for AI-prosjekter der utgifter kan eskalere raskt gjennom tokenforbruk, modelldrifting og compute-ressurser. Effektiv kostnadsmonitorering kombinerer sanntidssporing av forbruk, granulær kostnadsfordeling per forretningsenhet eller applikasjon, og automatiserte varsler som forebygger budsjettoverskridelser før de påvirker prosjektøkonomien.
Azure Cost Management gir innebygd synlighet på abonnements- og ressursgruppe-nivå, men AI-arbeidslaster krever ofte mer sofistikerte løsninger — spesielt for chargeback-modeller, multi-tenant-scenarier eller når man trenger å korrelere kostnader med ytelsesmetrikker. Gateway-basert overvåking (f.eks. via Azure API Management) kan fange opp detaljert bruksdata per klient-IP, modell og token-type, noe som åpner for presise kostnadsallokeringer og prediktiv budsjettering.
Denne guiden dekker både native Azure-verktøy og arkitekturmønstre for avansert kostnadssporing, med fokus på Azure OpenAI, Microsoft Foundry og andre AI-tjenester.
---
## Kjernekomponenter
| Komponent | Formål | Granularitet |
|-----------|--------|--------------|
| **Azure Cost Management** | Sentral kostnadssporing for alle Azure-ressurser | Abonnement, ressursgruppe, ressurs |
| **Cost Analysis** | Visualisering av kostnader over tid med filters og gruppering | Dag, måned, år; gruppering per meter/tag/SKU |
| **Budgets & Alerts** | Automatiserte varsler ved budsjettgrenser | Budsjettgrense (50%, 80%, 100%) med e-postvarsler |
| **Tags & Tag Inheritance** | Kostnadsfordeling per prosjekt/team/miljø | Resource-level tags propagert til forbruksposter |
| **Diagnostic Settings** | Eksport av loggdata til Azure Monitor Logs | Per ressurs (genererer ekstra kostnader) |
| **Gateway Logging** (APIM) | Detaljert tracking av token-forbruk per klient | IP-adresse, modell, prompt/completion tokens, timestamp |
| **Azure Marketplace Meters** | Separat fakturering for 3rd-party modeller (Cohere, Meta) | SaaS-meter per modell-tilbud (input/output tokens) |
### Azure OpenAI-spesifikke meters
| Meter Type | Beskrivelse | Faktureringsmodell |
|------------|-------------|-------------------|
| **Tokens (input/output)** | Per 1000 tokens for chat/completion | Pay-as-you-go eller PTU |
| **Fine-tuning training** | Per token i treningsfilen | Engangsbelastning |
| **Fine-tuning hosting** | Per time per distribuert modell | Kontinuerlig (selv når inaktiv) |
| **Fine-tuning inference** | Per 1000 tokens ved kall til modell | Pay-as-you-go |
| **Image generation** | Fast pris per bilde (f.eks. DALL-E) | Per request |
**Viktig:** Fine-tuned modeller genererer timekostnader selv når de ikke er i bruk. Deployments som er inaktive i 15 dager slettes automatisk (men underliggende modell bevares).
---
## Arkitekturmønstre
### 1. Native Cost Monitoring (Subscription/Resource Group Scope)
**Bruksområde:** Enkle scenarier med én applikasjon per Azure OpenAI-ressurs, eller når man kun trenger aggregert kostnadsoversikt.
**Implementering:**
1. Naviger til Azure Portal → Cost Management + Billing → Cost Analysis
2. Scope til Resource Group eller Subscription
3. Filter på Service Tier: "Azure OpenAI" (OpenAI vises under Cognitive Services)
4. Gruppér på Meter for å se tokenforbruk per modell-serie
**Fordeler:**
- Ingen ekstra infrastruktur kreves
- Innebygd i Azure-portalen
- Fungerer "out of the box" for alle ressurser
**Ulemper:**
- Mangler client-granularitet (IP-adresse maskert til /24)
- Vanskelig å implementere chargeback per team/applikasjon
- Aggregert over alle Azure OpenAI-instanser per region
**Kostnadsindikatorer:**
- Gratis (inkludert i Azure-abonnement)
- Konfidensgrad: **Verified** (Microsoft Learn)
---
### 2. Tag-Based Cost Allocation
**Bruksområde:** Kostnadsfordeling per prosjekt, kostsenter, miljø (dev/prod) eller eier.
**Implementering:**
```bash
# Tagg Azure OpenAI-ressurs
az resource tag --tags Environment=Production Project=ChatbotAI CostCenter=IT-001 \
--ids /subscriptions/{sub-id}/resourceGroups/{rg}/providers/Microsoft.CognitiveServices/accounts/{openai-name}
# Aktiver tag-inheritance i Cost Management
az feature register --namespace Microsoft.CostManagement --name EnableTagInheritance
```
**Best practices:**
| Tag Key | Formål | Eksempel |
|---------|--------|----------|
| `Project` | Prosjektnavn | `ChatbotAI`, `DocumentAnalysis` |
| `CostCenter` | Økonomisk ansvar | `IT-001`, `R&D-003` |
| `Environment` | Miljø | `Production`, `Development`, `Test` |
| `Owner` | Teknisk ansvarlig | `team-ai@example.com` |
**Fordeler:**
- Automatisk kostnadssplitt uten kodeendringer
- Tag inheritance propagerer tags til child-ressurser
- Integrert med Cost Analysis filters
**Ulemper:**
- Krever disiplinert tagging-strategi
- Tags må vedlikeholdes manuelt (eller via IaC)
- Ikke granulært nok for per-bruker chargeback
**Kostnadsindikatorer:**
- Gratis feature
- Konfidensgrad: **Verified** (Microsoft Learn)
---
### 3. Gateway-Based Cost Attribution (Azure API Management)
**Bruksområde:** Chargeback per applikasjon/team, detaljert token-tracking, korrelering av kostnad med ytelse.
**Arkitektur:**
```
Client A → APIM Gateway → Azure OpenAI (gpt-4o)
Client B ↗ → Azure OpenAI (gpt-4o-mini)
↓
Azure Monitor Logs
(IP, model, tokens, timestamp)
```
**Implementering (KQL-query for chargeback):**
```kusto
ApiManagementGatewayLogs
| where tolower(OperationId) in ('completions_create','chatcompletions_create')
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend completiontokens = parse_json(parse_json(BackendResponseBody)['usage'])['completion_tokens']
| extend totaltokens = parse_json(parse_json(BackendResponseBody)['usage'])['total_tokens']
| extend client_ip = CallerIpAddress
| summarize
TotalPromptTokens = sum(todecimal(prompttokens)),
TotalCompletionTokens = sum(todecimal(completiontokens)),
TotalCost = sum(todecimal(totaltokens)) * 0.00002 // Eksempel: $0.02 per 1k tokens
by client_ip, model
| order by TotalCost desc
```
**Fordeler:**
- Fanger full client IP-adresse (ikke maskert)
- Kan legge til custom identifiers (team ID, subscription key)
- Korrelerer tokens med spesifikk modell og timestamp
- Støtter custom dashboards i Azure Monitor Workbooks
**Ulemper:**
- Ekstra latency (typisk 10-50ms)
- APIM-kostnader (Basic tier: ~$140/måned, Standard: ~$700/måned)
- Ekstra kompleksitet i arkitekturen
- Azure Monitor Logs storage costs (ca. $2.50 per GB ingested)
**Kostnadsindikatorer:**
- APIM Basic: ~$140/mnd
- Azure Monitor Logs: ~$2.50/GB ingested + $0.12/GB retention (>31 days)
- Konfidensgrad: **Verified** (Microsoft Learn + Azure Architecture Center)
---
### 4. Multi-Model / Marketplace Cost Tracking
**Bruksområde:** Azure Foundry-prosjekter som bruker både Microsoft-modeller (OpenAI) og 3rd-party modeller (Cohere, Meta).
**Utfordringer:**
- Azure OpenAI- og Microsoft-modeller vises som meters under selve Foundry-ressursen
- Partner-/community-modeller (Marketplace) vises under **ressursgruppen** — ikke under Foundry-ressursen — når du grupperer på Meter på ressursgruppe-scope
- I **Cost by resource**-visningen vises enkelte leverandørers modeller under **Global resources**, med meternavn på formatet `model-name-GUID` (GUID = identifikator for den aktuelle Foundry-ressursen). «Global» viser her til plasseringen i kostnadstreet, ikke modellens SKU (f.eks. *Global standard*)
- Må scope Cost Analysis til Resource Group-nivå (eller subscription hvis ressursene er spredt over flere ressursgrupper) for å se alle kostnader
**Implementering:**
1. Naviger til Cost Analysis → Scope til Resource Group
2. Gruppér på **Meter** for å se kostnad per modell-serie
3. Expand meter details for å se input/output tokens per modell
4. For per-ressurs-fordeling: bytt til **Cost by resource**-visningen (Group by → Meter, linjediagram) — partner-modeller fremkommer under **Global resources** som `model-name-GUID`
**Marketplace-meters:**
| Meter Name | Beskrivelse |
|------------|-------------|
| `paygo-inference-input-tokens` | Input tokens (base model) |
| `paygo-inference-output-tokens` | Output tokens (base model) |
| `paygo-finetuned-model-inference-hosting` | Hosting cost per endpoint |
| `paygo-finetuned-model-inference-input-tokens` | Input tokens (fine-tuned) |
| `paygo-finetuned-model-inference-output-tokens` | Output tokens (fine-tuned) |
**Fordeler:**
- Fullstendig kostnadsoversikt på tvers av leverandører
- Separate meters per modell gjør det enkelt å identifisere kostnadsdriver
**Ulemper:**
- Må huske å scope til Resource Group (ikke Foundry-ressurs)
- 3rd-party modeller kan ikke betales med Azure Prepayment
- Forskjellige meters per leverandør (ingen standardisering)
**Kostnadsindikatorer:**
- Ingen ekstra kostnad (native Cost Analysis)
- Konfidensgrad: **Verified** (Microsoft Learn)
---
## Foundry-portal-native kostnadssporing
Microsoft Foundry-portalen (Foundry «new») gir innebygd, nær-sanntids kostnadssporing for agenter, modell-deployments og prosjekter — uten å gå via Azure Cost Management. Estimatene er ment for løpende oppfølging; bruk Azure Cost Management og fakturerte beløp til finansiell avstemming.
> **Viktig:** Foundry-portalens estimater reflekterer **ikke** rabatter eller avtalt prising, og dekker kun standard deployment-kostnader — ikke provisioned throughput (PTU).
### Agent-kostnader
- **Aggregert (alle agenter):** Operate → Overview → velg subscription, ett eller flere prosjekter og datointervall. **Estimated cost**-flisen viser estimat for alle agenter i valgt(e) prosjekt(er) for perioden. Estimatet inkluderer **ikke** prompt-agenter eller ikke-Foundry-agenter.
- **Per agent:** Assets → Agents-fanen → kolonnen **Estimated costs** viser månedsestimat per agent basert på konfigurasjon og bruksmønster.
- **Detaljert (token-kostnad per agent):** Build → Agents → velg agent → Monitor-fanen → sett datointervall → se token-kostnad og bruksmetrikker.
### Modell-deployment-kostnader
Build → Models → velg modell → Monitor-fanen → sett datointervall. Viser total kostnad og et estimert-kostnad-diagram for perioden. Token-/request-diagrammer kan midlertidig avvike fra **Estimated cost** pga. ingestion-timing — bruk Estimated cost for nær-sanntids oppfølging og Cost Management for avstemming.
### Prosjektnivå kostnadsfordeling (Preview)
Foundry støtter chargeback på **prosjektnivå**, slik at FinOps-team kan allokere delt Foundry-forbruk tilbake til riktig forretningsenhet/team/workload — nyttig når flere prosjekter deler samme Foundry-ressurs.
- Hvert Foundry-prosjekt tagges **automatisk** med en `project`-tag på underliggende forbruk. **Ingen manuell tagging** kreves.
- **Slik ser du det:** Åpne Foundry-ressursen i Azure-portalen → Cost analysis (under Resource Management) → Add filter → Tag → `project` → velg prosjekt(er).
- **Begrensning (Preview):** Støttes foreløpig kun for **Models sold by Azure** (Azure Direct, inkl. Azure OpenAI). **Ikke** ennå for modeller levert via Azure Marketplace.
**Konfidensgrad:** Verified (Microsoft Learn, manage-costs)
---
## Beslutningsveiledning
### Når bruke hvilken strategi?
| Scenario | Anbefalt Løsning | Kostnadsestimering (per mnd) |
|----------|------------------|----------------------------|
| Enkelt prosjekt, én applikasjon, aggregert kostnadsoversikt | Native Cost Analysis | Gratis |
| Flere prosjekter, behov for kostnadsfordeling per team | Tag-Based Allocation | Gratis |
| Multi-tenant SaaS, chargeback per kunde | Gateway (APIM) + Azure Monitor | $140-700 (APIM) + $50-200 (logs) |
| Azure Foundry med Microsoft + 3rd-party modeller | Resource Group Scope + Marketplace Filters | Gratis |
| Behov for real-time kostnadsvarsler (<1 time latency) | Gateway + Event Hub + Stream Analytics | $200-500 |
### Vanlige feil
| Feil | Konsekvens | Løsning |
|------|------------|---------|
| Scope Cost Analysis til Azure OpenAI-ressurs når man bruker Marketplace-modeller | Ser ikke 3rd-party kostnadene | Scope til Resource Group |
| Glemmer å slette inactive fine-tuned deployments | Kontinuerlige timekostnader selv uten bruk | Automatiser cleanup med Azure Automation |
| Bruker kun native logging for chargeback | IP-adresse maskert, mangler team-identifikator | Implementer gateway med custom headers |
| Ikke setter budsjett-alerts | Overskridelser oppdages for sent | Sett alerts ved 50%, 80%, 100% |
| Eksporterer alle logs til Azure Monitor | Høye storage-kostnader | Filtrer ut irrelevante loggkategorier |
### Røde flagg
- **Fine-tuned modeller med 0 requests siste 7 dager:** Vurdér å slette deployment (bevarer modellen)
- **Token-kostnad øker >50% uten tilsvarende økning i brukere:** Sjekk for ineffektive prompts eller loops
- **3rd-party modeller som ikke vises i Cost Analysis:** Kontrollér at Marketplace SaaS-filter er aktivert
- **Chargeback-rapporter som ikke summerer til total cost:** Sannsynligvis mangler 3rd-party eller metadata-kostnader
---
## Integrasjon med Microsoft-stakken
### Azure Monitor + Cost Management
**Native integrasjon:**
- Cost Analysis kan vises direkte i Azure Foundry-portalen (via "View More Details")
- Azure Monitor Workbooks kan kombinere cost data med telemetry (QPS, latency, errors)
**Custom dashboards:**
```kusto
// Korrelere kostnad med ytelse (gjennomsnitts-latency per modell)
let cost_data = ApiManagementGatewayLogs
| where tolower(OperationId) in ('completions_create','chatcompletions_create')
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend tokens = parse_json(parse_json(BackendResponseBody)['usage'])['total_tokens']
| summarize TotalTokens = sum(todecimal(tokens)) by model;
let perf_data = ApiManagementGatewayLogs
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| summarize AvgLatency = avg(DurationMs) by model;
cost_data
| join kind=inner perf_data on model
| project model, TotalTokens, AvgLatency, CostPerRequest = TotalTokens * 0.00002 / AvgLatency
```
### Power BI + Cost Data Export
**Implementering:**
1. Sett opp scheduled export i Cost Management (daglig/ukentlig til Storage Account)
2. Koble Power BI til Storage Account via Azure Blob Storage connector
3. Bygg dashboards for ledelse med trender, forecasts, kostnadsfordeling
**Best practice:** Bruk Power BI Premium for å aktivere automatic refresh og deling med stakeholders.
### Azure Automation for Cost Alerts
**Scenario:** Automatisk shutdown av under-utilized ressurser.
```powershell
# Azure Automation Runbook (trigges av Cost Management alert)
param(
[string]$ResourceGroupName,
[string]$DeploymentName
)
# Sjekk siste 7 dagers bruk
$metrics = Get-AzMetric -ResourceId "/subscriptions/.../deployments/$DeploymentName" `
-MetricName "TokensGenerated" -StartTime (Get-Date).AddDays(-7) -EndTime (Get-Date)
if ($metrics.Data.Total -eq 0) {
Write-Output "Deployment $DeploymentName har 0 requests siste 7 dager. Sletter..."
Remove-AzCognitiveServicesAccountDeployment -Name $DeploymentName -ResourceGroupName $ResourceGroupName
}
```
---
## Offentlig sektor (Norge)
### Datasuverenitet og kostnadsrapportering
**Krav:** Forvaltningsloven § 17 krever at offentlige virksomheter kan dokumentere kostnader for innsynsbegjæringer og tjenesteutvikling.
**Implementering:**
- Bruk tag `Project` til å skille mellom interne prosjekter og publikumsrettede tjenester
- Eksportér cost data til norsk lagringsområde (Norway East/West)
- Behold cost logs i minimum 5 år (Arkivlova)
### GDPR og kostnadssporing
**Utfordring:** Gateway-logging kan fange opp IP-adresser som er personopplysninger.
**Løsning:**
- Anonymiser IP-adresser i logs (fjern siste oktet eller bruk hashing)
- Lagre logs i Norge med pseudonymisering
- Implementér data retention policies (slett etter 90 dager hvis ikke nødvendig)
**Eksempel (APIM policy for IP-masking):**
```xml
<policies>
<inbound>
<set-variable name="client-ip" value="@{
var ip = context.Request.IpAddress;
return ip.Substring(0, ip.LastIndexOf('.')) + ".0";
}" />
</inbound>
</policies>
```
### Anskaffelser og kostnadsprediksjon
**Krav:** Offentlige anskaffelser krever estimat på totalkostnad (TCO) før valg av leverandør.
**Metode:**
1. Estimér månedlig token-forbruk basert på antall brukere og use case
2. Bruk Azure Pricing Calculator for Pay-as-you-go
3. Sammenlign med PTU (Provisioned Throughput Units) for stabile workloads
4. Inkludér gateway-kostnader (APIM) og storage (Azure Monitor) i TCO
**Eksempel-estimat:**
- 1 million requests/mnd × 1000 tokens/request × $0.02/1k tokens = $20,000/mnd
- APIM Standard tier: $700/mnd
- Azure Monitor Logs (100 GB/mnd): $250/mnd
- **Total TCO:** ~$21,000/mnd
---
## Kostnad og lisensiering
### Prismodell-oversikt (Azure OpenAI)
| Modell-serie | Input (per 1k tokens) | Output (per 1k tokens) | PTU (per 100 units/time) |
|--------------|----------------------|----------------------|------------------------|
| GPT-4o | $0.005 | $0.015 | $36/time |
| GPT-4 Turbo | $0.01 | $0.03 | $72/time |
| GPT-3.5 Turbo | $0.0005 | $0.0015 | $4/time |
| Embedding (ada-002) | $0.0001 | N/A | $1/time |
**PTU vs Pay-as-you-go:**
- **PTU:** Fast månedlig kostnad, garantert throughput (TPM/RPM), egnet for stabile workloads
- **Pay-as-you-go:** Betaler kun for faktisk forbruk, elastisk, egnet for sporadisk bruk
**Break-even point:** PTU blir billigere hvis du konsekvent bruker >80% av reservert kapasitet.
### Optimaliseringstips
| Teknikk | Besparelse | Implementering |
|---------|-----------|----------------|
| **Prompt caching** | 50-90% på repeterte prompts | Bruk Azure OpenAI prompt caching |
| **Token-optimalisering** | 20-40% | Fjern unødvendig whitespace, bruk kortere system messages |
| **Model selection** | 50-70% | Bruk en mindre/billigere modell (f.eks. gpt-4o-mini) for enkle oppgaver i stedet for en flaggskip-modell |
| **PTU for stable workloads** | 30-50% | Kjøp PTU hvis >80% utilization |
| **Fine-tuning cleanup** | 100% på inaktive | Automatisk sletting av deployments med 0 requests/7d |
| **Batch processing** | 20-30% | Gruppér requests for å redusere overhead |
### Gateway-kostnader (Azure API Management)
| Tier | Pris/mnd | Max throughput | Bruksområde |
|------|---------|----------------|-------------|
| **Consumption** | $0.035/10k calls + $3.5/GB | 1000 req/sec | Lavt volum, sporadisk bruk |
| **Basic** | $140 | 1000 req/sec | Dev/test, interne apps |
| **Standard** | $700 | 2500 req/sec | Produksjon, multi-tenant |
| **Premium** | $2800 | 4000 req/sec | Enterprise, global distribution |
**Optimaliseringstips:**
- Start med Consumption tier for POC/pilot
- Oppgradér til Standard når throughput >100 req/sec
- Bruk Premium kun hvis multi-region deployment er påkrevd
---
## For arkitekten
### Spørsmål å stille kunden
1. **Chargeback-behov:** Trenger vi å fordele kostnader per team, prosjekt eller kunde?
2. **Kostnadskontroll:** Hva er maksimal månedlig budsjett, og hva skjer hvis vi overskrider?
3. **Granularitet:** Trenger vi kostnad per bruker/API-nøkkel, eller holder det med ressursgruppe-nivå?
4. **Real-time alerts:** Hvor raskt må vi reagere på kostnadsøkninger? (24t, 1t, sanntid)
5. **3rd-party modeller:** Bruker vi Azure Marketplace-modeller (Cohere, Meta), eller kun Microsoft OpenAI?
6. **Retention:** Hvor lenge må vi lagre kostnadsdata for compliance/auditing? (90 dager, 1 år, 5 år)
7. **Export-behov:** Trenger finans-teamet data i Excel/Power BI, eller holder Azure-portalen?
8. **Gateway:** Har vi allerede Azure API Management, eller må det anskaffes?
### Fallgruver
| Fallgruve | Hvorfor det skjer | Konsekvens |
|-----------|------------------|------------|
| **Scope Cost Analysis til feil nivå** | Tror Azure OpenAI-ressurs viser alle kostnader | Mangler Marketplace-meters |
| **Glemmer fine-tuning hosting costs** | Fokuserer kun på inference-tokens | Kontinuerlige timekostnader selv uten bruk |
| **Ikke setter tag inheritance** | Manuell tagging per ressurs | Tags mangler på child-ressurser |
| **Over-logging til Azure Monitor** | Aktiverer alle diagnostic categories | Høye storage-kostnader ($100-500/mnd) |
| **Ikke sammenligner PTU vs PAYG** | Går for pay-as-you-go uten analyse | Betaler 2-3x mer for stabile workloads |
| **Mangler budsjett-alerts** | Tenker at de skal "holde øye med" kostnadene | Overskridelser oppdages for sent (neste måned) |
### Anbefalinger per modenhetsnivå
#### Modenhetsnivå 1: Proof of Concept / Pilot
- **Kostnadsstrategi:** Native Cost Analysis (gratis)
- **Budsjett:** Sett monthly budget ($500-2000) med 80% alert
- **Tagging:** Bruk minimum tags: `Environment=Dev`, `Project=POC`
- **Gateway:** Ikke nødvendig (kun 1-2 applikasjoner)
- **Review frequency:** Månedlig
#### Modenhetsnivå 2: Produksjon (Single-tenant)
- **Kostnadsstrategi:** Tag-based allocation + budsjett per prosjekt
- **Budsjett:** Separate budgets for Dev/Test/Prod environments
- **Tagging:** Fullt tagskjema (Project, CostCenter, Owner, Environment)
- **Gateway:** Vurdér APIM Consumption tier hvis >5 applikasjoner
- **Review frequency:** Ukentlig
#### Modenhetsnivå 3: Enterprise / Multi-tenant
- **Kostnadsstrategi:** Gateway (APIM Standard/Premium) + Azure Monitor
- **Budsjett:** Per-tenant budgets med automated alerts
- **Tagging:** Custom tags per kunde/abonnement
- **Gateway:** APIM Standard med KQL queries for chargeback
- **Export:** Scheduled export til Power BI for executive dashboards
- **Review frequency:** Daglig (automated dashboards)
#### Modenhetsnivå 4: Offentlig sektor (Norge)
- **Kostnadsstrategi:** Full enterprise stack + compliance-logging
- **GDPR:** IP-masking i gateway logs
- **Retention:** 5 år (Arkivlova)
- **Storage:** Norge East/West (datasuverenitet)
- **Auditing:** Export til revisjonssystem (KOSTRA-rapportering)
- **Review frequency:** Daglig + kvartalsvise audits
---
## Kilder og verifisering
### Kilder (Microsoft Learn)
1. **Plan and manage costs for Microsoft Foundry** *(Verified MCP 2026-06)*
https://learn.microsoft.com/en-us/azure/foundry/concepts/manage-costs
*Konfidensgrad: Verified* – Komplett guide for cost management (budgets, alerts, export, Foundry-portal-native agent-/modell-/prosjektsporing)
2. **Azure OpenAI in Foundry Models gateway monitoring** *(Verified MCP 2026-04)*
https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/azure-openai-gateway-monitoring
*Konfidensgrad: Verified* – Gateway-arkitektur for cost attribution og chargeback. Artikkel nå titulert "Implement advanced monitoring for Azure OpenAI in Foundry Models through a gateway".
3. **Governance for AI workloads (IaaS)**
https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/ai/infrastructure/governance#cost-management
*Konfidensgrad: Verified* – Tags, billing accounts, autoscaling for AI workloads
4. **Manage AI costs (Cloud Adoption Framework)**
https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/ai/manage#manage-ai-costs
*Konfidensgrad: Verified* – Best practices for TPM/RPM monitoring, commitment billing
5. **Plan and manage costs for Microsoft Foundry**
https://learn.microsoft.com/en-us/azure/foundry/concepts/manage-costs
*Konfidensgrad: Verified* – Marketplace models, fine-tuning costs, HTTP error billing
6. **Azure Cost Management API (Python SDK)**
https://learn.microsoft.com/en-us/python/api/overview/azure/mgmt-costmanagement-readme
*Konfidensgrad: Verified* – Programmatic access to cost data
### Konfidensgrad per seksjon
| Seksjon | Konfidensgrad | Kilde |
|---------|--------------|-------|
| Native Cost Monitoring | Verified | Microsoft Learn (manage-costs) |
| Tag-Based Allocation | Verified | Microsoft Learn (governance) |
| Gateway-Based Attribution | Verified | Azure Architecture Center |
| Multi-Model Tracking | Verified | Microsoft Learn (AI Foundry manage-costs) |
| Foundry-portal-native sporing (Agent/Modell/Prosjekt Preview) | Verified | Microsoft Learn (manage-costs) |
| Azure OpenAI meters | Verified | Microsoft Learn (pricing page) |
| APIM pricing | Verified | Azure Pricing Calculator |
| GDPR/IP-masking | Baseline | Generell GDPR-kunnskap + APIM policy best practices |
| Offentlig sektor retention | Baseline | Arkivlova (egen kunnskap) |
**Totalvurdering:** 90% Verified (MCP-research), 10% Baseline (domeneekspertise).
---
**For Cosmo:** Bruk denne guiden for å designe kostnadsstrategien basert på kundens modenhetsnivå. Start alltid med Native Cost Analysis + tags, og bygg ut mot gateway-løsning kun hvis chargeback eller detaljert tracking er nødvendig. Husk at fine-tuning hosting costs er en vanlig kostnadsfelle som må adresseres tidlig i prosjektet.