Cererea de memorie GPU include datele și ponderile utilizate, rezultatele intermediare, spațiile de lucru de rulare și cache-urile dependente de volumul de lucru. Măsurați utilizarea de vârf la precizia, dimensiunea lotului și concurența dorite; dimensiunea modelului salvat este doar una dintre intrări.
Alegeți volumul de lucru înainte de a alege GPU
O specificație GPU devine utilă atunci când cunoașteți software-ul și munca pe care îl va efectua. Randarea, procesarea imaginilor, antrenarea și inferența au modele diferite de memorie și calcul. Verificați arhitectura GPU, driverele și runtime-ul acceptate de aplicație înainte de a compara capacitatea. Un card cu suficientă memorie poate fi totuși nepotrivit dacă calea software sau funcția necesară nu este acceptată.
Descrieți dimensiunea maximă de intrare, precizia, dimensiunea lotului și munca simultană pe care intenționați să le permiteți. Pentru inferență, includeți cea mai lungă cerere acceptată și sesiunile concurente. Pentru randare, includeți scena reprezentativă și texturile. O demonstrație minusculă reușită este dovada că stiva poate porni; nu este dovada că întregul volum de lucru de producție se încadrează.
Separați datele persistente de memoria de lucru
Ponderile sau activele de intrare pot rămâne pe dispozitiv, în timp ce rezultatele intermediare și bufferele temporare apar în timpul execuției. Antrenarea poate necesita suplimentar gradienți și starea optimizatorului. Volumele de lucru de inferență pot menține cache-uri a căror dimensiune se modifică odată cu cererea. Aranjamentul exact depinde de model, framework și implementare. Nu aplicați un multiplicator universal fiecărei sarcini și nu îl tratați ca garanție de capacitate.
Ca exemplu aritmetic simplu, un model ipotetic cu șapte miliarde de parametri reprezentat cu doi octeți per parametru necesită aproximativ paisprezece miliarde de octeți doar pentru acei parametri. Acest calcul exclude alocările de rulare, activările, cache-urile și suprasarcina de format. Este un exemplu de planificare de nivel inferior, nu o afirmație că un astfel de volum de lucru se încadrează pe o anumită configurație SwissOctet.
| Componentă de memorie | Ce o modifică | Cum să investigați |
|---|---|---|
| Ponderi sau active de scenă | Dimensiunea modelului, reprezentarea și activele încărcate | Inspectați formatul implementat și alocarea reală încărcată |
| Rezultate intermediare | Forma intrării și dimensiunea lotului | Măsurați o operație reprezentativă completă |
| Cache-uri | Lungimea cererii și concurența | Exersați volumul de lucru maxim acceptat |
| Spații de lucru și runtime | Biblioteci, kernel-uri și strategie de execuție | Observați utilizarea de vârf a dispozitivului și a framework-ului |
Măsurați utilizarea de vârf prin vizualizarea corectă
Metricile framework-ului și metricile la nivel de dispozitiv pot descrie lucruri diferite. PyTorch distinge memoria alocată tensorilor de memoria rezervată de alocatorul său de cache și oferă măsurători de vârf. Documentația sa de vizualizare a memoriei explică, de asemenea, că alocările făcute în afara alocatorului său pot să nu apară în acea vizualizare. Comparați raportul framework-ului cu starea mai largă a dispozitivului, în loc să presupuneți că un singur număr acoperă fiecare alocare.
Încălziți operația reală, apoi măsurați sarcina completă și suprapunerea realistă dintre sarcini. Înregistrați versiunile software și condițiile exacte de intrare. Un eveniment de memorie insuficientă poate apărea la un vârf temporar, astfel încât o instantanee finală liniștită poate rata problema. Păstrați capturile de diagnostic private atunci când ar putea conține detalii despre model sau informații despre intrările aplicației dvs.
Tratați dimensiunea batch și precizia ca alegeri de proiectare
Loturile mai mari pot modifica atât utilizarea, cât și cererea de memorie. Ghidul de performanță al NVIDIA discută interacțiunea dintre forma operației, intensitatea aritmetică și capacitățile hardware. Dimensiunea utilă a lotului depinde de ținta de latență a volumului de lucru, precum și de debit. O politică de loturi care maximizează munca finalizată pe secundă poate face utilizatorii individuali să aștepte mai mult decât permite aplicația.
Precizia redusă sau cuantizarea pot reduce unele cerințe de memorie, dar compatibilitatea și calitatea rezultatului trebuie testate. Păstrați un set de date de evaluare și comparați rezultatele relevante după o schimbare de format. Nu schimbați reprezentarea unui model doar pentru a-l încadra fără a verifica comportamentul de care depinde proiectul. Optimizarea memoriei ar trebui să păstreze rezultatul necesar, nu doar să evite o eroare de alocare.
Păstrați restul mașinii în buget
CPU, gazda RAM și calea de stocare pregătesc și alimentează munca GPU. Decodarea lentă a intrării sau memoria gazdă insuficientă pot lăsa acceleratorul în așteptare. Fișierele mari de model și seturile de date au nevoie, de asemenea, de suficient spațiu pe disc pentru instalare, conversii temporare și actualizări. Evaluați întregul pipeline în loc să achiziționați un GPU și să vă așteptați ca fiecare pas anterior să devină mai rapid.
Mai multe GPU-uri nu se comportă automat ca un singur dispozitiv de memorie comun. Aplicația trebuie să utilizeze o strategie paralelă adecvată, iar suprasarcina de comunicare poate conta. Confirmați câte dispozitive sunt furnizate, memoria fiecăruia și aranjamentul acceptat de software. O listă de nume de upgrade GPU nu este o descriere verificată a memoriei disponibile pentru un singur proces nemodificat.
Folosiți un test de acceptare reprezentativ
Definiți un test cu stiva software aleasă, intrarea maximă așteptată și concurența permisă. Măsurați memoria de vârf, timpul de finalizare, erorile și calitatea rezultatului. Păstrați o marjă pentru variația normală de rulare și mentenanță, cu suma justificată de observații. Dacă volumul de lucru nu se încadrează, decideți dacă reduceți concurența, schimbați implementarea sau alegeți hardware diferit.
Tensor GPU prezintă opțiuni legate de GPU în catalogul SwissOctet. Confirmați dispozitivul exact, VRAM-ul per dispozitiv, compatibilitatea driverului și configurația selectată înainte de a vă baza pe ele. Site-ul nu oferă o garanție de potrivire specifică aplicației. Un test de acceptare documentat conectează acele detalii hardware cu munca pe care trebuie să o efectueze mașina.
Lista dumneavoastră practică de verificare.
- Confirmați arhitectura GPU și runtime-ul acceptate.
- Bugetați ponderile, intermediarii, cache-urile și spațiile de lucru.
- Măsurați vârfurile la intrarea maximă intenționată și concurența maximă.
- Comparați vizualizările de memorie ale framework-ului și la nivel de dispozitiv.
- Validați rezultatul după schimbările de precizie sau format.
- Confirmați VRAM-ul exact per dispozitiv înainte de comandă.
Detaliile care contează.
Dimensiunea modelului salvat este egală cu cererea de VRAM?+
Nu. Execuția adaugă rezultate intermediare, spații de lucru, cache-uri și alte alocări, în timp ce formatele de stocare pot diferi de reprezentările din memorie.
Adăugarea unui al doilea GPU va dubla automat memoria utilizabilă?+
Nu. Aplicația are nevoie de o strategie paralelă adecvată. Limitele per dispozitiv și comportamentul de comunicare contează în continuare.
Precizia redusă poate rezolva întotdeauna o problemă de memorie insuficientă?+
Nu. Poate reduce unele alocări, dar suportul, bufferele rămase și calitatea acceptabilă a rezultatului trebuie testate.
Mergeți la sursă.
Aceste referințe susțin conceptele tehnice din acest ghid. Urmați documentația actuală înainte de a modifica un sistem de producție.
- NVIDIA: Începeți cu performanța învățării profunde docs.nvidia.com
- PyTorch: Înțelegerea utilizării memoriei CUDA docs.pytorch.org
- PyTorch: Gestionarea memoriei CUDA docs.pytorch.org
Îndrumare editorială de SwissOctet. Exemplele sunt ilustrative. Specificațiile serviciilor, opțiunile disponibile și condițiile contractuale trebuie verificate separat.