DeepSeek V3 detalii despre lucrare: Cum să ocoliți monopolul CUDA!
Cele două modele recent lansate de DeepSeek, DeepSeek-V3 și DeepSeek-R1, ating performanțe comparabile cu modele similare de la OpenAI, la un cost mult mai mic.
Potrivit rapoartelor din presa străină, în doar două luni, aceștia au antrenat un model lingvistic MoE cu 671 de miliarde de parametri pe un cluster de 2 048 de GPU-uri H800, ceea ce este de 10 ori mai eficient decât AI de top.
Această descoperire nu a fost realizată folosind CUDA, ci printr-un număr mare de optimizări fine și prin utilizarea programării PTX (execuție paralelă a firelor) asemănătoare asamblării de la NVIDIA.
DeepSeek a fost nevoită să urmeze o cale diferită de cea a OpenAI și a altor companii care se bazează pe puterea de calcul prin forță brută în cadrul constrângerilor hardware. Aceasta a utilizat o serie de inovații tehnologice pentru a reduce cerințele de putere ale modelului, obținând în același timp câștiguri de performanță.
Unele comentarii entuziaste din partea internauților:
"În această lume, dacă există grupuri de oameni care ar fi suficient de nebuni să spună lucruri de genul "CUDA este prea lent!
Genius geeks ajustează PTX pentru a maximiza performanța GPU
NVIDIA PTX (Parallel Thread Execution) este o arhitectură middle-instruction-set concepută special pentru GPU-urile sale, situată între limbajele de programare GPU de nivel înalt (cum ar fi CUDA C/C++) sau alte limbaje front-end și codul mașină de nivel scăzut (streaming assembly sau SASS).
PTX este o arhitectură de seturi de instrucțiuni de nivel scăzut care prezintă GPU ca un dispozitiv de calcul paralel al datelor, permițând optimizări fine, cum ar fi alocarea registrelor și reglarea la nivel de thread/thread-bundle, care nu sunt posibile cu limbaje precum CUDA C/C++.
Atunci când PTX este convertit în SASS, acesta este optimizat pentru o anumită generație de GPU-uri NVIDIA.
La antrenarea modelului V3, DeepSeek a reconfigurat GPU-ul NVIDIA H800:
Din cele 132 de nuclee ale procesorului de flux, 20 au fost alocate pentru comunicarea între servere, în principal pentru compresia și decompresia datelor, pentru a depăși limita de conectare a procesorului și a îmbunătăți viteza de procesare a tranzacțiilor.
Pentru a maximiza performanța, DeepSeek a implementat, de asemenea, algoritmi avansați de pipelining prin ajustări suplimentare la nivel de pachet de fire/fiecare cu granulație fină.
Aceste optimizări depășesc cu mult nivelul de dezvoltare CUDA convențională, dar sunt extrem de dificil de menținut. Cu toate acestea, acest nivel de optimizare este exact ceea ce demonstrează pe deplin capacitățile tehnice remarcabile ale echipei DeepSeek.
Documentul V3 menționează în mod specific detalii despre PTX
Acest lucru se datorează faptului că, sub dubla presiune a lipsei de GPU la nivel mondial și a restricțiilor din SUA, companii precum DeepSeek au trebuit să caute soluții inovatoare.
Din fericire, ei au făcut progrese semnificative în acest domeniu.
Un dezvoltator consideră că "programarea GPU la nivel scăzut este direcția corectă. Cu cât optimizarea este mai mare, cu atât costul este mai mic sau bugetul de performanță poate fi utilizat pentru alte progrese fără cheltuieli suplimentare".
Această descoperire a avut un impact semnificativ asupra pieței, iar unii investitori cred că noul model va reduce cererea de hardware de înaltă performanță, ceea ce poate afecta performanța vânzărilor unor companii precum NVIDIA.
Cu toate acestea, veteranii industriei, inclusiv fostul director general al Intel, Pat Gelsinger, consideră că aplicațiile AI pot utiliza la maximum toată puterea de calcul disponibilă.
Gelsinger consideră că această descoperire realizată de DeepSeek reprezintă o nouă modalitate de a încorpora capacități de inteligență artificială în dispozitive ieftine destinate pieței de masă.
PTX și CUDA
Așadar, sosirea DeepSeek înseamnă că dezvoltarea LLM de ultimă generație nu mai necesită clustere GPU pe scară largă?
Vor fi investițiile uriașe în resurse de calcul ale Google, OpenAI, Meta și xAI se irosesc în cele din urmă? Consensul general în rândul dezvoltatorilor de AI este că nu este cazul.
Cu toate acestea, este cert că există încă un potențial imens de exploatat în ceea ce privește procesarea datelor și optimizarea algoritmilor, iar în viitor vor apărea cu siguranță metode de optimizare mai inovatoare.
Având în vedere că modelul V3 al DeepSeek este liber, detaliile sunt dezvăluite în detaliu în raportul său tehnic.
Raportul documentează optimizările profunde de bază efectuate de DeepSeek. Pe scurt, gradul de optimizare poate fi rezumat la "au reconstruit întregul sistem de la zero".
După cum s-a menționat mai sus, la instruirea V3 cu ajutorul GPU-ului H800, DeepSeek a personalizat unitățile de calcul de bază ale GPU-ului (streaming multiprocessor cores sau SMs) pentru a răspunde nevoilor specifice.
Din totalul de 132 de SM, aceștia au alocat în mod specific 20 pentru a gestiona mai degrabă sarcini de comunicare între servere decât sarcini de calcul.
Această personalizare se face la nivelul PTX (paralel thread execution), care este setul de instrucțiuni de nivel scăzut al GPU-ului NVIDIA.
PTX rulează la un nivel apropiat de limbajul de asamblare și permite optimizări fine, cum ar fi alocarea registrelor și reglarea la nivel de thread/thread-bundle. Cu toate acestea, acest control fin este complex și dificil de întreținut.
Acesta este motivul pentru care dezvoltatorii preferă de obicei să utilizeze limbaje de programare de nivel înalt, cum ar fi CUDA, care oferă optimizări de performanță suficiente pentru majoritatea sarcinilor de programare paralelă și elimină necesitatea optimizărilor de nivel scăzut.
Cu toate acestea, atunci când vine vorba de maximizarea eficienței resurselor GPU și îndeplinirea cerințelor specifice de optimizare, dezvoltatorii trebuie să recurgă la PTX.
Cu toate acestea, barierele tehnice rămân
În acest sens, utilizatorul de internet Ian Cutress a declarat: "Utilizarea PTX de către Deepseek nu elimină barierele tehnice ale CUDA".
CUDA este un limbaj de nivel înalt. Acesta facilitează dezvoltarea de biblioteci și interfețe cu GPU-urile NVIDIA și sprijină dezvoltarea iterativă rapidă.
CUDA poate optimiza performanța prin reglarea fină a codului de bază (de exemplu, PTX), iar bibliotecile de bază sunt deja complete. În prezent, majoritatea programelor software la nivel de producție sunt construite pe CUDA.
PTX este mai asemănător cu un limbaj de asamblare direct inteligibil pentru GPU. Acesta funcționează la un nivel scăzut și permite optimizarea la nivel micro.
Dacă alegeți să programați în PTX, aceasta înseamnă că nu poate fi utilizată niciuna dintre bibliotecile CUDA încorporate menționate mai sus. Aceasta este o sarcină foarte anevoioasă, care necesită o expertiză aprofundată în probleme de hardware și runtime.
Cu toate acestea, dacă dezvoltatorii înțeleg pe deplin ceea ce fac, pot obține într-adevăr performanțe și optimizări mai bune în timpul rulării.
În prezent, principala caracteristică a ecosistemului NVIDIA este încă utilizarea CUDA.
Dezvoltatorii care doresc să obțină un plus de 10-20% performanță sau eficiență energetică din sarcina lor de calcul, cum ar fi companiile care implementează modele în cloud și vând servicii de token, au optimizat într-adevăr de la nivelul CUDA la nivelul PTX. Acestea sunt dispuse să investească timp pentru că merită pe termen lung.
Trebuie remarcat faptul că PTX este de obicei optimizat pentru un anumit model de hardware și este dificil de transferat de la un hardware la altul, cu excepția cazului în care logica de adaptare este scrisă special.
În plus, reglarea manuală a nucleului de calcul necesită multă perseverență, curaj și o capacitate specială de a rămâne calm, deoarece programul poate avea o eroare de acces la memorie la fiecare 5.000 de cicluri.
Desigur, pentru acele scenarii în care PTX este cu adevărat necesar și pentru acei dezvoltatori care sunt plătiți suficient pentru a se ocupa de aceste probleme, ne exprimăm întreaga înțelegere și respect.
Pentru toți ceilalți dezvoltatori, este recomandabil să continue să utilizeze CUDA sau alte variante avansate bazate pe CUDA (sau MLIR).