Optimizacija troškova GPU-a za AI/ML radna opterećenja: AWS, Azure i GCP (2026.)

Praktičan vodič za smanjenje GPU troškova za AI/ML: usporedba H100/H200/B200 cijena na AWS, Azure i GCP, Spot strategije, Trainium2 i SageMaker Savings Plans.

GPU Troškovi AI/ML: AWS, Azure, GCP (2026.)

Ažurirano: 10. srpnja 2026.

Optimizacija troškova GPU-a za AI/ML radna opterećenja u 2026. znači kombiniranje četiri poluge: izbor prave obitelji ubrzivača (H100, H200, B200, Trainium2, TPU v5p), Spot kapaciteta za trening (60–90% jeftinije od on-demand), obvezujućih popusta tipa SageMaker Savings Plans ili Azure ML Reserved Capacity za produkcijski inference, i MIG particioniranja plus batch inferencea za punjenje neiskorištenog VRAM-a. U tekstu ispod dajem konkretne SKU-ove, cijene i skripte koje trenutno koristim sa svojim klijentima.

  • H100 SXM5 on-demand u us-east-1 košta ~$3.9–$4.2/h po GPU-u (p5.48xlarge, 8× GPU), dok Azure Standard_ND96isr_H100_v5 stoji ~$4.05/h; GCP a3-highgpu-8g ~$4.05/h. Razlike su unutar 5%.
  • Spot cijene istih H100 SKU-ova padaju na $1.10–$1.80/h, što je ušteda od 55–75%. Kombinacija sa checkpointanjem svakih 10–15 minuta čini trening ekonomično otpornim na prekide.
  • AWS Trainium2 (trn2.48xlarge) daje 30–40% bolji cijena/performans u odnosu na H100 za FP16 trening LLM-ova < 70B parametara i pokreće se preko istog PyTorch/NeuronX SDK.
  • EC2 Capacity Blocks for ML rezerviraju H100/H200 klastere na 1–182 dana s cijenom fiksiranom unaprijed. Idealni su za kampanje treninga bez rizika Spot prekida.
  • Za produkcijski inference, kombinacija SageMaker Savings Plans (1yr, no upfront, ~28% popusta) i MIG particioniranja na ml.g5.12xlarge tipično prepolovi trošak po tisuću zahtjeva.
  • AWS Compute Optimizer u 2026. konačno pokriva SageMaker endpointe i EKS GPU čvorove, pa ga pokrenite prije bilo koje ozbiljne SP kupovine.

Zašto GPU troškovi eksplodiraju u 2026.

Iskreno, prošli sam kvartal proveo pomažući trima klijentima da posjeku SageMaker račune iznad $200k mjesečno. U sva tri slučaja GPU compute je bio 78–91% ukupnog cloud troška. Nakon Hopper (H100/H200) na Blackwell (B100/B200) tranzicije koja je počela u Q1 2026., AWS P6 obitelj s B200 GPU-ovima dala je 2.2× throughput za FP8 trening, ali on-demand cijena je porasla na ~$7.2/h po GPU-u. Rezultat? Budžeti koji su bili planirani prije godinu dana danas jednostavno ne prolaze reviziju.

Drugi problem je fragmentacija SKU-ova. AWS ima P4d (A100), P4de, P5 (H100), P5e (H200), P5en, P6 (B200), plus G5/G6 (L4, A10G), plus Inf1/Inf2, plus Trn1/Trn2. Azure paralelno nudi NDv4 (A100), NDv5 (H100), ND-H200 v5, ND-MI300X v5 (AMD) i nove NDGB200 SKU-ove. Bez preciznog mapiranja SKU-a na radno opterećenje, gubitak je 30–50% samo na krivom izboru instance. Naš vodič za right-sizing cloud instanci pokriva metodologiju, a u ovom tekstu je primjenjujem specifično na GPU.

Treći faktor je nedostatak kapaciteta. H100/H200 klasteri u us-east-1 i us-west-2 imaju čekanja od tjedan dana za on-demand alokaciju > 8 GPU-ova. To gura timove prema panik-kupnjama Reserved Instancea bez usage analize, a to je klasična zamka za koju se izlaz plaća godinama.

Usporedba GPU cijena: AWS, Azure, GCP (H100, H200, B200)

Ovo su on-demand cijene po GPU-satu u us-east-1/eastus/us-central1 regijama, stanje 5. srpnja 2026. Cijene su po jednom GPU-u da bi bile usporedive; svi navedeni SKU-ovi dolaze u 8×GPU konfiguraciji, pa množite s 8 za punu instancu.

GPU / SKUAWSAzureGCPSpot popust
NVIDIA H100 SXM5 (80 GB)$3.98/h (p5.48xlarge)$4.05/h (ND96isr H100 v5)$4.05/h (a3-highgpu-8g)55–75%
NVIDIA H200 (141 GB)$5.20/h (p5en.48xlarge)$5.30/h (ND-H200 v5)$5.15/h (a3-ultragpu-8g)45–60%
NVIDIA B200 (192 GB, FP8)$7.20/h (p6.48xlarge)$7.35/h (NDGB200 v6)PreviewN/A (preview)
NVIDIA A100 (40/80 GB)$2.05/h (p4d/p4de)$2.20/h (ND96amsr A100 v4)$2.15/h (a2-ultragpu-8g)60–80%
NVIDIA L4/L40S (inference)$0.75/h (g6e.xlarge)$0.85/h (NCadsA10 v4)$0.68/h (g2-standard-4)50–70%
AWS Trainium2$2.10/h (trn2.48xlarge)N/AN/A~40%
GCP TPU v5pN/AN/A$3.20/h (v5p-8)~40%

Nekoliko stvari na koje uvijek upozoravam klijente. Prvo, Azure cijene ne uključuju InfiniBand upcharge u nekim SKU-ovima za multi-node trening. Drugo, GCP a3-highgpu-8g koristi 3.2 Tbps GPUDirect RDMA što ga čini povoljnim za multi-node, ali NVLink domain je manji nego na AWS-ovim UltraClusterima. Treće, B200 je u 2026. i dalje capacity-constrained, pa realna dostupnost varira od tjedna do tjedna.

Za detaljnu usporedbu obvezujućih popusta koji tope ove cijene za 20–70%, pogledajte vodič za Reserved Instances i Savings Plans.

Koji je najjeftiniji GPU za treniranje modela?

Kratki odgovor: za modele < 13B parametara, Spot A100 na p4de.24xlarge je i dalje pareto-optimalan (~$0.45/GPU-h). Za 13–70B parametara, Trainium2 (trn2.48xlarge) daje najbolji cijena/performans ako model pristaje na NeuronX (Llama, Mistral, Qwen, PyTorch native, sve podržano). Za > 70B ili modele koji zahtijevaju H100-specifične kernele (npr. FlashAttention-3 sa FP8), Spot H100 na p5.48xlarge pri ~$1.20/GPU-h ostaje jedini realan izbor.

Ovako izgleda tipična kalkulacija koju radim za Llama-3 8B pretraining na 500B tokena:

# Trošak treninga Llama-3 8B na 500B tokena (procjena, srpanj 2026.)
# Pretpostavka: ~1.2e21 FLOPs, MFU ~50%

# Opcija 1: 32× H100 SXM5 (p5.48xlarge × 4), Spot
gpu_hours_h100    = 1.2e21 / (0.50 * 989e12 * 3600) / 32  # ≈ 21 h per node
nodes             = 4
spot_price        = 1.20   # USD po GPU-satu
h100_cost         = gpu_hours_h100 * nodes * 8 * spot_price
# ≈ $8 100 (ako nema Spot preemptiona)

# Opcija 2: 32× Trainium2 (trn2.48xlarge × 2), Reserved 1yr
gpu_hours_trn2    = 1.2e21 / (0.55 * 1300e12 * 3600) / 32
reserved_price    = 1.35   # USD po Neuron-core-satu, ~35% RI popusta
trn2_cost         = gpu_hours_trn2 * 2 * 16 * reserved_price
# ≈ $5 100

# Opcija 3: 16× TPU v5p (v5p-16), Spot
tpu_hours         = 1.2e21 / (0.50 * 459e12 * 3600) / 16
spot_price_tpu    = 1.90
tpu_cost          = tpu_hours * 16 * spot_price_tpu
# ≈ $9 800

Ovaj primjer je usporediv sa službenim AWS Trainium benchmarcima. Trainium2 gotovo uvijek pobjeđuje na cijenu, ali samo ako se komad koda kompajlira čisto s neuronx-cc. Imate li custom CUDA kernele (Triton, CUTLASS)? H100 ostaje jedina praktična opcija.

AWS Trainium i Inferentia: alternativa NVIDIA GPU-ovima

Trainium2 (trening) i Inferentia2/3 (inference) su moja preporuka broj jedan kada klijent može investirati 2–5 dana u portiranje modela. Ušteda je konzistentno 30–45% u odnosu na ekvivalentne H100 workloadove, a za razliku od H100, kapacitet je široko dostupan bez čekanja.

Konkretan primjer. Klijent koji trenira retrieval-augmented Mistral-7B fine-tune svakih 8 sati prebacio se s p5.48xlarge (Spot, ~$18/h) na trn2.48xlarge (Reserved 1yr no-upfront, $16.8/h). Trening traje 22% dulje po epohi ali ukupno mjesečno pada s $12 400 na $7 850 jer nema Spot prekida i checkpoint overhead je eliminiran.

Kod za portiranje je uglavnom mehanički. Evo minimalnog primjera:

# Portiranje HuggingFace modela na Inferentia2 za inference
# pip install optimum-neuron transformers==4.44

from optimum.neuron import NeuronModelForCausalLM
from transformers import AutoTokenizer

# Jednokratno kompajliranje modela za Neuron core
compiler_args = {"num_cores": 24, "auto_cast_type": "bf16"}
input_shapes  = {"batch_size": 4, "sequence_length": 4096}

model = NeuronModelForCausalLM.from_pretrained(
    "mistralai/Mistral-7B-Instruct-v0.3",
    export=True,
    **compiler_args,
    **input_shapes,
)
model.save_pretrained("./mistral-7b-neuron")

# Serving na inf2.24xlarge (jedna instanca ~$5.5/h)
tokenizer = AutoTokenizer.from_pretrained("mistralai/Mistral-7B-Instruct-v0.3")
inputs    = tokenizer(["Sažmi ovaj tekst:"], return_tensors="pt", padding="max_length",
                       max_length=4096, truncation=True)
outputs   = model.generate(**inputs, max_new_tokens=256)
print(tokenizer.batch_decode(outputs))

Spot GPU instance i EC2 Capacity Blocks: kada koji

Spot GPU je najbrža poluga za rezanje troška treninga, ali ubija vas ako je krivo primijenjena. Osnovna heuristika: Spot za trening s checkpointanjem, on-demand ili Capacity Blocks za sve što je latency-sensitive ili što ne možete rekonstruirati iz checkpointa.

Kada Spot ima smisla

  • Pretraining i fine-tuning s save_steps ≤ 500 (za 8B modele to je ~10 minuta). Gubitak preemptiona je manji od 2× checkpoint interval.
  • Distributed HPO (Optuna, Ray Tune). Svaki trial je nezavisan, pa preemption gubi samo taj trial.
  • Batch inference jobovi koji ne traže 99.9% SLA, npr. embedding generation za RAG re-indeksiranje.

Kada Spot NIJE opcija

  • Multi-node trening > 32 nodova. Kod nas se sve češće viđaju “Spot storm” scenariji gdje preemption jednog čvora ruši cijeli job. Koristite Capacity Blocks for ML ili on-demand s capacity-reservation.
  • Real-time inference SLA. Bez pardona, Spot je out.

EC2 Capacity Blocks for ML, koje je AWS objavio krajem 2023. i značajno proširio 2026., omogućuju rezervaciju H100/H200 klastera u blokovima od 1 dana do 182 dana. Cijena je fiksna i rezervirana unaprijed. Skripta ispod pomaže mi da usporedim Spot očekivani trošak vs Capacity Block za kampanju od 14 dana:

#!/bin/bash
# Usporedba: 14-dnevni H100 klaster (64 GPU-a) — Spot vs Capacity Block
# Zahtijeva: AWS CLI v2.15+, jq

REGION="us-east-1"
INSTANCE="p5.48xlarge"
NODES=8

# 1. Trenutna Spot cijena (posljednjih 24 h, prosjek)
SPOT_AVG=$(aws ec2 describe-spot-price-history \
    --region "$REGION" \
    --instance-types "$INSTANCE" \
    --product-descriptions "Linux/UNIX" \
    --start-time "$(date -u -v-1d +%Y-%m-%dT%H:%M:%SZ)" \
    --query 'SpotPriceHistory[*].SpotPrice' --output text \
    | awk '{s+=$1; n++} END {printf "%.2f", s/n}')

# 2. Očekivani trošak (14 dana × 24 h × 8 nodova × spot cijena)
SPOT_TOTAL=$(echo "14 * 24 * $NODES * $SPOT_AVG" | bc)

# 3. Capacity Block cijena (dohvat live kroz Pricing API)
CB_HOURLY=$(aws pricing get-products \
    --service-code AmazonEC2 \
    --filters "Type=TERM_MATCH,Field=instanceType,Value=$INSTANCE" \
              "Type=TERM_MATCH,Field=capacitystatus,Value=CapacityBlock" \
    --region us-east-1 --max-results 1 \
    | jq -r '.PriceList[0]' | jq -r '.terms.OnDemand[].priceDimensions[].pricePerUnit.USD')

CB_TOTAL=$(echo "14 * 24 * $NODES * $CB_HOURLY" | bc)

printf "Spot (24h prosjek): \$%.2f/h/instance -> \$%s ukupno\n" "$SPOT_AVG" "$SPOT_TOTAL"
printf "Capacity Block:     \$%.2f/h/instance -> \$%s ukupno\n" "$CB_HOURLY" "$CB_TOTAL"

Kod klijenta na kojem sam ovo pokrenuo prošli tjedan, Spot je bio ~$1.35/GPU-h, Capacity Block $2.75/GPU-h. Spot pobjeđuje samo ako je stopa preemption < 15%. Prošlo ljeto je bila 8%, ovog ljeta 22% zbog inference boom-a, pa Capacity Block danas ima smisla za sve kritične kampanje. Ja praktički tjedno pratim Spot Instance Advisor.

Za dublji uvid u Spot mehaniku, pogledajte vodič za Spot Instance strategije na AWS, Azure i GCP.

SageMaker Savings Plans i Azure/GCP obvezujući popusti

Za produkcijski inference (24/7 endpointi) Spot nije opcija. Tu ulaze SageMaker Savings Plans i njihovi ekvivalenti. Ovo su brojke koje najviše koristim u kalkulatorima:

  • AWS SageMaker Savings Plans: 1yr no-upfront ~28% popusta, 1yr all-upfront ~35%, 3yr all-upfront do 64%. Pokriva SageMaker Training, Real-Time Inference, Serverless Inference i Batch Transform. Ne pokriva Ground Truth ili Data Wrangler.
  • AWS Compute Savings Plans (za EC2 GPU izvan SageMakera): 1yr no-upfront ~27%, primjenjuje se automatski na p5/p4d/g5/g6 workloadove.
  • Azure Reserved VM Instances za ND-serije: 1yr ~40%, 3yr ~62%. Azure Savings Plan for compute pokriva GPU VM-ove i daje ~28% 1yr.
  • GCP Committed Use Discounts (CUD): 1yr ~37%, 3yr ~55% za A3/A2 GPU-ove. Flexible CUDs (novo u 2026.) pokrivaju sve GPU obitelji ali s manjim popustom (~28% 1yr).

Prije bilo koje SP kupovine, obavezno pokrećem Compute Optimizer i Cost Explorer “Savings Plans Recommendations” report. Iako je u 2025. Cost Explorer često podcjenjivao SageMaker workloadove, u 2026. update-u AWS Cloud Financial Management bloga spomenut je novi ML-specific model preporuka koji vidno bolje pogađa.

Right-sizing GPU-a: MIG, batch inference i Compute Optimizer

Klasična greška. Klijent stavi Llama-3 8B fine-tune na cijeli H100 GPU (80 GB VRAM), koristi 18 GB, i plaća 100%. Rješenje su Multi-Instance GPU (MIG) particije: H100 se cijepa u do 7 nezavisnih GPU-ova s dediciranim VRAM-om i compute-om.

Ovako se konfiguriraju MIG particije na EKS čvoru:

# /etc/kubernetes/nvidia-mig-config.yaml (za EKS čvor s H100)
version: v1
mig-configs:
  all-1g.10gb:                       # 7× 10 GB particija, po jednoj H100
    - devices: all
      mig-enabled: true
      mig-devices:
        "1g.10gb": 7

  balanced:                           # mix: 4× mala + 1× srednja
    - devices: all
      mig-enabled: true
      mig-devices:
        "1g.10gb": 4
        "3g.40gb": 1

---
# Enable u nvidia-device-plugin DaemonSet-u:
# helm upgrade --install nvdp nvidia/nvidia-device-plugin \
#   --set migStrategy=mixed \
#   --set config.name=all-1g.10gb

Nakon toga u Kubernetes deploymentu tražite resource nvidia.com/mig-1g.10gb: 1 umjesto nvidia.com/gpu: 1. Jedna p5.48xlarge instanca sad host-a do 56 nezavisnih inference podova. Za Llama-3 8B batch inference to je realno 3–4× više throughputa po dolaru.

AWS Compute Optimizer u 2026. konačno prepoznaje SageMaker endpointe i EKS GPU čvorove. Pokreće se ovako:

# Uključivanje Compute Optimizera za SageMaker endpointe
aws compute-optimizer put-recommendation-preferences \
    --resource-type SageMakerEndpoint \
    --scope name=AccountId,value=$(aws sts get-caller-identity --query Account --output text) \
    --enhanced-infrastructure-metrics Active

# Dohvat preporuka nakon 14 dana observacije
aws compute-optimizer get-sagemaker-endpoint-recommendations \
    --query 'sagemakerEndpointRecommendations[?finding==`Overprovisioned`].[endpointArn, currentInstanceType, recommendedOptions[0].instanceType, savingsOpportunity.savingsOpportunityPercentage]' \
    --output table

Uz to, sve neiskorištene GPU čvorove treba automatski gasiti. Pogledajte vodič za automatsko čišćenje neiskorištenih cloud resursa za skripte koje pokrivaju i EBS volumene i Elastic IP-ove koji ostaju iza terminiranih p5 instanci.

Serverless GPU: kada Modal, Lambda GPU i Cloud Run imaju smisla

2026. je donijela pravu serverless GPU ponudu: AWS Lambda ima GPU snapshotove (preview), Azure Container Apps podržava L4 i A100 particije, GCP Cloud Run podržava L4 GPU u GA, plus 3rd-party (Modal, Runpod, Replicate) koji koriste hibridne cloudove.

Serverless GPU ima smisla u samo dva scenarija. Prvo, bursty inference < 500 zahtjeva/dan: cold start od 8–15 sekundi je prihvatljiv, plaćate samo per-request. Drugo, fine-tune-per-user workloadovi gdje svaki korisnik ima svoj adapter (LoRA) i model se učitava on-demand.

Za sve ostalo (> 30% utilizacija) SageMaker Serverless Inference ili tradicionalni endpoint s auto-scalingom je znatno jeftiniji. Skripta ispod pokazuje break-even izračun koji radim za svakog klijenta:

# break_even_serverless.py
# Kada Modal/Cloud Run GPU pobjeđuje SageMaker realtime endpoint?

SAGEMAKER_HOURLY = 0.75   # ml.g6e.xlarge, on-demand
SAGEMAKER_MONTHLY = SAGEMAKER_HOURLY * 24 * 30  # $540

# Modal L4: $0.000306/s (aktivan)
MODAL_PER_SECOND = 0.000306
AVG_REQUEST_SEC  = 1.8    # inference latencija

# Break-even zahtjeva mjesečno
break_even = SAGEMAKER_MONTHLY / (MODAL_PER_SECOND * AVG_REQUEST_SEC)
print(f"Break-even: {break_even:,.0f} zahtjeva/mjesec")
# ≈ 980 000 zahtjeva/mjesec (~22 rps prosjek)

# Zaključak: za < 22 rps prosjek, Modal je jeftiniji
# Za > 22 rps, dediciran endpoint pobjeđuje

U ovom trenutku, moje pravilo je jednostavno. Imate li > 10 rps sustavno, ne razmišljajte o serverless GPU-u. Za sve ispod, isprobajte prvo Modal ili Cloud Run L4. Možda uštedite 60% bez ikakve infrastrukture.

Česta pitanja

Koliko košta trenirati LLM na AWS-u u 2026.?

Trening 8B parametarskog modela (Llama-3 razred) na 500B tokena košta ~$5 000–$8 000 uz Spot H100 ili Trainium2 Reserved. 70B model istog tipa je 8–12× skuplji (~$50k–$95k). Za frontier razred (400B+ parametara) računajte na $2–$5 milijuna po pretraining run-u; tu Capacity Blocks i 3yr Reserved Instances postaju obavezni.

Je li AWS Trainium2 stvarno jeftiniji od H100?

Za većinu PyTorch/HuggingFace modela do 70B parametara, da. Trainium2 daje 30–45% niži trošak po treniranom tokenu. Uvjet je da model kompajlira čisto s NeuronX SDK-om (Llama, Mistral, Qwen, DeepSeek, GPT-NeoX su podržani; modeli s custom CUDA kernelima obično nisu). Preporučujem 2-dnevni PoC prije bilo kakve migracije.

Mogu li se osloniti na Spot GPU instance za produkcijski inference?

Ne za real-time inference s SLA. Spot preemption stope za H100/H200 su u srpnju 2026. između 15% i 30% ovisno o regiji, što probija bilo koji ozbiljni SLA. Za batch inference (embedding generation, re-indexing) Spot je i dalje idealan uz proper checkpointing i retry logiku.

Kako smanjiti SageMaker troškove ako endpoint nije potpuno iskorišten?

Tri poluge redom: (1) uključite auto-scaling s target-tracking na InvocationsPerInstance i minimum 1 instanca; (2) primijenite MIG particioniranje ako je GPU utilizacija < 40%; (3) razmislite o SageMaker Serverless Inference za low-QPS endpointe (< 5 rps). Compute Optimizer u 2026. daje specifične SageMaker preporuke; pokrenite ga prije odluke.

Isplati li se kupiti 3-godišnji Reserved Instance za H100 danas?

Vrlo oprezno. Blackwell (B200) je već u produkciji i B300 se očekuje 2027. Ako sada zaključate 3yr H100 po ~$2.20/GPU-h, možete se naći u situaciji da B200 Spot bude jeftiniji za istu performansu već 2027. Preporuka: maksimalno 1yr no-upfront za H100, a za dugoročni commitment radije SageMaker SP (SKU-agnostičan).

Pavel Dvorak
O Autoru Pavel Dvorak

AWS solutions engineer with an unhealthy interest in Compute Savings Plans. Will run the numbers for you over coffee.