PCIe topologija i tiha migracija memorije: Što je puklo kad smo dodali drugi GPU
Dodavanje drugog GPU-a na naš inference server zvučalo je kao logičan korak za povećanje propusnosti. No, umjesto očekivanog ubrzanja, performanse su pale za čak 40%. Nakon detaljne analize, otkrili smo dva ključna krivca: PCIe topologiju i tihu migraciju memorije.
PCIe topologija: Neočekivani uski grlo
Kad smo dodali drugi GPU, nismo obratili pažnju na PCIe lane raspodjelu. Naša matična ploča ima dva PCIe x16 slota, ali drugi slot dijeli propusnost s prvim preko PCIe switcha. To znači da oba GPU-a dijele taj PCIe link prema CPU-u, što stvara uski grlo. U praksi, to je rezultiralo dvostrukim kašnjenjem pri prijenosu podataka između GPU-a i CPU-a.
Tiha migracija memorije: Skriveni problem
Drugi problem bio je silent memory migration – tiha migracija memorije. Kada je drugi GPU aktiviran, NVIDIA driver automatski premješta memorijske stranice između GPU-a i CPU-a bez ikakvog upozorenja. To se događa u pozadini, a mi smo to primijetili tek kad smo pratili latency i propusnost. Migracija memorije troši PCIe propusnost i povećava latency, što je izravno utjecalo na performanse inference servera.
Kako smo riješili problem
- Provjera PCIe topologije: Koristili smo
lspci -vvinvidia-smi topo -mda bismo vidjeli kako su GPU-i povezani. Otkrili smo da su oba GPU-a na istom PCIe switchu, pa smo ih fizički premjestili na slotove koji koriste zasebne PCIe laneove. - Onemogućavanje tihe migracije: Postavili smo
CUDA_VISIBLE_DEVICESi koristilicudaSetDevice()da bismo osigurali da svaki GPU obrađuje svoje podatke bez migracije. Također smo koristilicudaMemAdvises opcijomcudaMemAdviseSetPreferredLocationda bismo zaključali memoriju na GPU-u. - Optimizacija batch sizea: Smanjili smo batch size kako bismo smanjili količinu podataka koja se prenosi preko PCIe-a, što je smanjilo opterećenje na linku.
Rezultati
Nakon ovih promjena, performanse su se vratile na očekivanu razinu, a čak smo dobili i 10% ubrzanja u usporedbi s jedan GPU. Ključno je razumjeti da dodavanje drugog GPU-a nije samo plug-and-play – PCIe topologija i upravljanje memorijom mogu drastično utjecati na performanse.
Zanima vas ovakva AI tehnologija?
RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.
Kontaktirajte nas →
Komentari