← Natrag
AI

Fragmentacija VRAM-a: Tihi OOM na potrošačkim GPU-ima u inferenciji

Damir Radulić· 11. srpnja 2026.· 2 min čitanja· 16 pregleda
Fragmentacija VRAM-a: Tihi OOM na potrošačkim GPU-ima u inferenciji
🎧 Poslušaj članak

Kada pokrećete dugotrajne inferencije na potrošačkim GPU-ima, poput NVIDIA GeForce ili AMD Radeon serija, možete naići na podmukao problem: tihi Out-of-Memory (OOM) koji se javlja nakon sati rada. Ovaj problem nije uzrokovan nedostatkom ukupnog VRAM-a, već fragmentacijom memorije – procesom u kojem se memorijski blokovi različitih veličina raspršuju, ostavljajući nedovoljno kontinuiranog prostora za nove alokacije.

Zašto dolazi do fragmentacije VRAM-a?

Moderni deep learning okviri, poput PyTorch i TensorFlow, dinamički alociraju i oslobađaju memoriju tijekom inferencije. Na potrošačkim GPU-ima, koji nemaju napredne mehanizme za defragmentaciju poput enterprise modela (npr. NVIDIA A100 s unified memory), ovo dovodi do postupnog nakupljanja fragmenata. Nakon više stotina ili tisuća iteracija, čak i ako je ukupna iskorištenost VRAM-a ispod 90%, može doći do OOM-a jer nema dovoljno velikog kontinuiranog bloka.

Kako detektirati fragmentaciju VRAM-a?

Najjednostavniji način je praćenje VRAM-a kroz nvidia-smi ili rocm-smi alate. No, oni pokazuju samo ukupnu iskorištenost, ne i fragmentaciju. Za precizniju detekciju koristite:

  • PyTorch memory profiler: torch.cuda.memory_summary() prikazuje detaljnu alokaciju po blokovima.
  • CUDA API: cudaMemGetInfo daje slobodnu i ukupnu memoriju, ali ne i fragmentaciju. Za to koristite cudaMemPoolTrimTo ili alate poput nsys (NVIDIA Nsight Systems).
  • Prilagođeni skripti: Mjerite maksimalnu veličinu alociranog bloka u redovitim intervalima. Ako ona opada, fragmentacija raste.

Kako izmjeriti fragmentaciju VRAM-a?

Fragmentacija se može kvantificirati omjerom najvećeg slobodnog kontinuiranog bloka i ukupne slobodne memorije. Na primjer, ako imate 2 GB slobodno, ali najveći blok je samo 256 MB, fragmentacija je visoka. Alati poput gpustat (Python paket) ili nvtop (terminalni monitor) mogu prikazati ove podatke u stvarnom vremenu.

Kako spriječiti OOM zbog fragmentacije VRAM-a?

Postoji nekoliko strategija:

  • Povećajte batch size: Veći batchovi smanjuju broj alokacija, ali zahtijevaju više VRAM-a.
  • Koristite memory pooling: Okviri poput PyTorch imaju opciju torch.cuda.empty_cache() koja oslobađa neiskorištene blokove, ali ne rješava fragmentaciju u potpunosti.
  • Implementirajte periodično oslobađanje: Nakon svakih N iteracija, ručno oslobodite i ponovno alocirajte memoriju (npr. model.cpu(); torch.cuda.empty_cache(); model.cuda()).
  • Koristite torch.cuda.set_per_process_memory_fraction: Ograničite maksimalnu količinu VRAM-a koju proces može koristiti, ostavljajući prostor za fragmentaciju.
  • Prebacite na enterprise GPU: Ako je problem kroničan, razmislite o GPU-ima s podrškom za unified memory ili SR-IOV.

Primjer detekcije fragmentacije VRAM-a u Pythonu

Evo jednostavne skripte koja prati fragmentaciju:

import torch
import time

def check_fragmentation():
    free, total = torch.cuda.mem_get_info()
    # Simulirajte alokaciju velikog bloka
    try:
        test_tensor = torch.empty((free // 4,), dtype=torch.float32, device='cuda')
        max_block = test_tensor.numel() * test_tensor.element_size()
        del test_tensor
    except RuntimeError:
        max_block = 0
    fragmentation = 1 - (max_block / free) if free > 0 else 1
    return fragmentation

while True:
    frag = check_fragmentation()
    print(f'Fragmentacija: {frag:.2%}')
    time.sleep(60)

Ova skripta pokušava alocirati veliki blok i mjeri koliko je uspješna. Ako fragmentacija prelazi 50%, vrijeme je za intervenciju.

Zaključak

Tihi OOM na potrošačkim GPU-ima nije neizbježan. Redovitim praćenjem fragmentacije i primjenom gore navedenih tehnika možete značajno produžiti stabilnost dugotrajnih inferencija. Ne zaboravite testirati svoje modele na stvarnim radnim opterećenjima prije produkcije.

fragmentacija VRAM-aOOM greškapotrošački GPUdugotrajna inferencijadetekcija fragmentacije

Zanima vas ovakva AI tehnologija?

RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.

Kontaktirajte nas →
0 komentara

Komentari