Få 70 % rabatt på to-årsabonnement – NordVPN

Slik samhandler CPU og GPU i flerkort AI-oppsett

AI-nyheter: En guide forklarer grunnprinsippene i vert-enhet (host-device) paradigm for CPU og NVIDIA-GPU.

Verten (host) er CPU-en som kjører operativsystemet og skriptet og gir oppgaver til enheten (device), altså GPU-en. CPU-en legger GPU-oppgaver på en kø kalt en CUDA Stream; den venter normalt ikke på at GPU-en blir ferdig (asynkron kjøring). Én stream utfører operasjoner i rekkefølge, mens forskjellige streams kan kjøre samtidig, noe som gjør det mulig å overlappe beregning og dataoverføring. I PyTorch brukes ofte standardstrømmen, men man kan opprette egne streams og bruke non_blocking=True ved .to() for asynkrone kopier. Synkronisering kan gjøres globalt med torch.cuda.synchronize(), eller mer presist med CUDA Events der én stream venter på en markør uten å stoppe CPU-tråden. Når det gjelder PyTorch-tensorer, ligger metadata i vertsminnet og selve tallene i GPU-ens VRAM; å be om tensorens verdier på CPU (for eksempel print(t)) kan tvinge frem en vert-enhet-synkronisering og blokkere CPU-en. Funksjoner som DataLoader(pin_memory=True) og prefetching bygger på disse mekanismene. Integrerte GPU-er (for eksempel Apple Silicon) har en annen arkitektur og omfattes ikke av guiden.

Dette er relevant for norske forskningsmiljøer og virksomheter som kjører trening og inferens på NVIDIA-GPU-er, fordi forståelse av køer, overføringer og synkronisering påvirker ytelse ved arbeid med kunstlig intelligens (KI).

Kilde: https://towardsdatascience.com/understanding-the-host-and-device-paradigm | Sammendraget er KI-generert med OpenAI API og kvalitetssikret av redaksjonen i Ainy.no