← Natrag
AI

NUMA zamka s 8 GPU-a: CPU-GPU afinitet i multi-node inferencija

Damir Radulić· 14. kolovoza 2026.· 2 min čitanja· 18 pregleda
NUMA zamka s 8 GPU-a: CPU-GPU afinitet i multi-node inferencija
🎧 Poslušaj članak

Kada radite s više GPU-ova, posebno u sustavima s 8 ili više kartica, često se suočavate s neočekivanim usporavanjima. Problem često nije u samim GPU-ovima, već u načinu na koji su povezani s CPU-om i memorijom. Riječ je o NUMA (Non-Uniform Memory Access) zamci: ako CPU i GPU nisu pravilno usklađeni, latencija raste, a propusnost pada, čak i ako su hardverske komponente vrhunske.

Što je NUMA i zašto je važna?

NUMA je arhitektura u kojoj svaki CPU socket ima vlastitu memoriju, a pristup tuđoj memoriji je sporiji. U sustavima s više procesora i GPU-ova, svaki GPU je fizički povezan na određeni CPU socket preko PCIe kontrolera. Ako proces na CPU-u šalje podatke GPU-u koji nije na istom socketu, podaci moraju putovati kroz QPI/UPI vezu, što dodaje latenciju. U višečvornim sustavima (multi-node), problem se dodatno pogoršava jer komunikacija ide kroz mrežu.

Simptomi NUMA neusklađenosti

  • Visoka latencija u inferenciji, čak i pri malim batch veličinama.
  • Niska iskorištenost GPU-a (GPU utilization) dok CPU čeka na memoriju.
  • Neujednačene performanse između različitih GPU-ova u istom sustavu.
  • Povećano vrijeme odziva kada se koristi više GPU-ova paralelno.

Kako dijagnosticirati problem?

Prvi korak je provjeriti topologiju PCIe veza. Alati poput nvidia-smi topo -m prikazuju matricu povezanosti između GPU-ova i CPU-a. Obratite pažnju na oznake kao što su NVLink, PIX (CPU-GPU veza) i PHB (PCIe host bridge). Ako GPU nije izravno povezan s CPU-om na kojem se izvodi proces, to je jasan znak NUMA neusklađenosti.

Drugi korak je analiza rasporeda memorije. Koristite numactl --hardware da vidite koje su memorijske zone dostupne na kojim socketima. Zatim provjerite gdje se nalazi memorija koju koristi vaš proces (npr. pomoću /proc/pid/numa_maps). Ako je memorija na udaljenom socketu, latencija će biti veća.

Rješenja i najbolje prakse

  • Postavite CPU-GPU afinitet: Koristite numactl --cpunodebind da vežete proces na CPU socket koji je izravno povezan s GPU-om. Na primjer, ako koristite GPU 0 koji je na socketu 0, pokrenite: numactl --cpunodebind=0 --membind=0 python infer.py.
  • Koristite CUDA_VISIBLE_DEVICES: Ograničite vidljive GPU-ove na one koji su na istom NUMA čvoru kao i proces.
  • Optimizirajte raspored podataka: Prenesite podatke u memoriju blizu GPU-a prije početka inferencije. Koristite cudaHostAlloc s cudaHostAllocMapped za mapped memory, ili cudaMemAdvise za preporuke o migraciji stranica.
  • Razmotrite NVLink: Ako vaš sustav podržava NVLink, koristite ga za među-GPU komunikaciju jer je brži od PCIe i smanjuje ovisnost o CPU-u.

Napredne tehnike za multi-node sustave

U multi-node okruženjima, gdje imate više računala povezanih mrežom, NUMA problem postaje još izraženiji. Preporučuje se korištenje GPUDirect RDMA za izravan prijenos podataka između GPU-ova na različitim čvorovima, bez posredovanja CPU-a. Također, razmislite o korištenju CUDA Graphs za smanjenje overheada pri pokretanju kernel-a, što može ublažiti utjecaj latencije.

Dijagnostika NUMA problema nije jednokratna aktivnost. Redovito pratite performanse i koristite alate poput NVIDIA Nsight Systems za profiliranje. Uz pravilno postavljen afinitet i raspored memorije, možete postići značajno poboljšanje—često i do 30% nižu latenciju u multi-GPU inferenciji.

Ne dopustite da vas NUMA zamka uspori—preuzmite kontrolu nad afinitetom i memorijom već danas.

NUMA zamkaCPU-GPU afinitetmulti-GPU inferencijaPCIe topologijaNUMA dijagnostika

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