Cum să optimizezi modelele de inteligență artificială

Cum să optimizezi modelele de inteligență artificială

Răspuns scurt: Pentru a optimiza modelele de inteligență artificială, alegeți o constrângere principală (latență, cost, memorie, calitate, stabilitate sau randament), apoi capturați o bază de referință fiabilă înainte de a schimba ceva. Eliminați mai întâi blocajele din conductă, apoi aplicați câștiguri cu risc scăzut, cum ar fi precizia mixtă și procesarea în loturi; dacă calitatea se menține, treceți la instrumentele de compilare/execuție și abia apoi reduceți dimensiunea modelului prin cuantizare sau distilare, atunci când este necesar.

Concluzii cheie:

Constrângere : Alegeți una sau două metrici țintă; optimizarea este un peisaj al compromisurilor, nu al câștigurilor gratuite.

Măsurare : Creați profiluri de sarcini de lucru reale cu p50/p95/p99, debit, utilizare și vârfuri de memorie.

Pipeline : Remediați tokenizarea, încărcătoarele de date, preprocesarea și procesarea în loturi înainte de a atinge modelul.

Servire : Folosește cache-ul, procesarea deliberată în lot, optimizarea concurenței și monitorizează cu atenție latența finală.

Guardrails : Executați prompturi de golden, indicatori de performanță și verificări aleatorii după fiecare modificare a performanței.

Infografic despre cum să optimizezi modelele de inteligență artificială

🔗 Cum să evaluezi eficient modelele de IA
Criterii și pași cheie pentru a judeca modelele în mod corect și fiabil.

🔗 Cum să măsori performanța inteligenței artificiale cu ajutorul unor indicatori reali
Folosește repere, latență, cost și semnale de calitate pentru a compara.

🔗 Cum să testezi modelele de inteligență artificială înainte de producție
. Flux de lucru practic de testare: împărțirea datelor, cazuri de stres și monitorizare.

🔗 Cum să folosești inteligența artificială pentru crearea de conținut
Transformă ideile în schițe mai rapid cu ajutorul unor solicitări structurate și iterații.


1) Ce înseamnă „Optimizare” în practică (pentru că fiecare îl folosește diferit) 🧠

Când oamenii spun „optimizarea unui model de inteligență artificială”, s-ar putea referi la:

  • Fă-l mai rapid (latență mai mică)

  • Faceți-l mai ieftin (mai puține ore GPU, cheltuieli mai mici în cloud)

  • Reduceți-l (amprentă de memorie, implementare la margine)

  • Faceți-l mai precis (îmbunătățiri ale calității, mai puține halucinații)

  • Faceți-l mai stabil (mai puțină varianță, mai puține eșecuri în producție)

  • Facilitează servirea (debit, procesare în loturi, performanță previzibilă)

Iată adevărul ușor enervant: nu poți maximiza toate acestea deodată. Optimizarea este ca și cum ai strânge un balon - împingi o parte înăuntru și cealaltă parte iese afară. Nu întotdeauna, dar suficient de des încât să planifici compromisuri.

Așadar, înainte de a atinge orice, alegeți-vă constrângerea principală :


2) Cum arată o versiune bună de optimizare a modelelor bazate pe inteligență artificială ✅

O versiune bună de optimizare nu este doar „aplicarea cuantizării și rugăciunea”. Este un sistem. Cele mai bune configurații au de obicei:

  • O valoare de referință în care ai încredere.
    Dacă nu poți reproduce rezultatele actuale, nu poți ști că ai îmbunătățit ceva. Simplu... dar oamenii sar peste asta. Apoi o iau razna.

  • O metrică țintă clară
    , „Mai rapid”, este vagă. „Reducerea latenței p95 de la 900ms la 300ms la același scor de calitate” este un obiectiv real.

  • Parapeți pentru calitate
    Fiecare performanță câștigată riscă o regresie silențioasă a calității. Ai nevoie de teste, evaluări sau cel puțin o suită de informații utile.

  • Conștientizare hardware
    Un model „rapid” pe o GPU se poate deplasa rapid pe alta. CPU-urile reprezintă propriul lor tip de haos.

  • Schimbări iterative, nu o rescriere de tip big bang.
    Când schimbi cinci lucruri simultan și performanța se îmbunătățește, nu știi de ce. Ceea ce este... tulburător.

Optimizarea ar trebui să se simtă ca acordarea unei chitare - mici ajustări, ascultă cu atenție, repetă 🎸. Dacă se simte ca și cum ai jongla cu cuțite, ceva nu este în regulă.


3) Tabel comparativ: Opțiuni populare pentru optimizarea modelelor de inteligență artificială 📊

Mai jos este un tabel comparativ rapid și puțin neîngrijit al instrumentelor/abordărilor comune de optimizare. Nu, nu este perfect „corect” - nici viața reală nu este.

Instrument / Opțiune Public Preţ De ce funcționează
PyTorch torch.compile ( documentația PyTorch ) Oamenii de la PyTorch Gratuit Trucurile de capturare grafică + compilare pot reduce cheltuielile generale... uneori e magie ✨
ONNX Runtime (documente ONNX Runtime ) Echipe de implementare Aproape gratuit Optimizări puternice pentru inferențe, suport larg, potrivit pentru servirea standardizată
TensorRT ( documentele NVIDIA TensorRT ) Implementare NVIDIA Vibrații plătite (adesea incluse în pachet) Fuziune agresivă a kernelului + manipulare precisă, foarte rapidă la clic
DeepSpeed ​​( documente ZeRO ) Echipe de antrenament Gratuit Optimizări de memorie + randament (ZeRO etc.). Poate părea un motor cu reacție
FSDP (PyTorch) (documente PyTorch FSDP ) Echipe de antrenament Gratuit Parametrii/gradienții Shards, fac modelele mari mai puțin înfricoșătoare
cuantizare bitsandbytes ( bitsandbytes ) Mentori LLM Gratuit Greutăți reduse pe biți, economii uriașe de memorie - calitatea depinde, dar uff 😬
Distilare ( Hinton și colab., 2015 ) Echipe de produs „Costul timpului” Modelul de student mai mic moștenește comportamentul, de obicei cel mai bun ROI pe termen lung
Tăiere ( tutorial de tăiere PyTorch ) Cercetare + producție Gratuit Elimină greutatea inutilă. Funcționează mai bine atunci când este asociat cu recalificarea
Flash Atention / nuclee topite ( hârtie FlashAttention ) Tocilari de performanță Gratuit Atenție mai rapidă, memorie mai bună. O adevărată victorie pentru transformatori
Serverul de inferență Triton ( procesare dinamică în loturi ) Operațiuni/infrastructură Gratuit Servire de producție, procesare în loturi, canale de producție multi-model - are un aspect de întreprindere

Mărturisire despre o ciudățenie legată de formatare: „Prețul” e dezordonat, deoarece open-source-ul te poate costa totuși un weekend de depanare, ceea ce e... un preț. 😵💫


4) Începeți cu măsurătorile: Profilați-vă cu seriozitate 🔍

Dacă faci un singur lucru din tot acest ghid, fă asta: măsoară corect.

În propriile mele teste, cele mai mari „descoperiri în optimizare” au venit din descoperirea a ceva jenant de simplu, cum ar fi:

  • încărcătorul de date înfometează GPU-ul

  • Blocajul de preprocesare al procesorului

  • dimensiuni mici ale lotului care cauzează supraîncărcarea lansării kernelului

  • tokenizare lentă (tokenizatorii pot fi ticăloși liniștiți)

  • fragmentarea memoriei ( note despre alocatorul de memorie PyTorch CUDA )

  • un calcul dominant pe un singur strat

Ce trebuie măsurat (set minim)

  • Latență (p50, p95, p99) ( SRE pe percentilele de latență )

  • Debit (tokenuri/sec, cereri/sec)

  • Utilizarea GPU (calcul + memorie)

  • Vârfuri VRAM / RAM

  • Cost per 1k de token-uri (sau per inferență)

Mentalitate practică de profilare

  • Descrieți un scenariu care vă interesează (nu o jucărie).

  • Înregistrează totul într-un mic „jurnal perfect”.
    Da, e plictisitor... dar te scutește de a te auto-abuza mai târziu.

(Dacă vrei un instrument concret cu care să începi: PyTorch Profiler ( documentele torch.profiler ) și Nsight Systems ( NVIDIA Nsight Systems ) sunt suspecții obișnuiți.)


5) Optimizarea datelor + antrenamentului: Superputerea silențioasă 📦🚀

Oamenii sunt obsedați de arhitectura modelului și uită de conducta de procesare. Între timp, conducta consumă în liniște jumătate din GPU.

Câștiguri ușoare care apar rapid

  • Folosește precizie mixtă (FP16/BF16 unde este stabil) ( PyTorch AMP / torch.amp ).
    De obicei, mai rapid, adesea în regulă - dar fii atent la ciudățeniile numerice.

  • Acumularea de gradient atunci când dimensiunea lotului este limitată ( 🤗 Ghid de accelerare )
    Menține optimizarea stabilă fără a suprasolicita memoria.

  • Verificarea gradienților ( torch.utils.checkpoint )
    Schimbă memoria cu resursele de calcul - face posibile contexte mai mari.

  • Tokenizare eficientă ( 🤗 Tokenizatoare )
    Tokenizarea poate deveni un blocaj la scară largă. Nu este o chestiune atrăgătoare; contează.

  • Reglarea încărcătorului de date
    Mai mulți workeri, memorie fixată, preîncărcare - discret, dar eficient 😴➡️💪 ( Ghid de reglare a performanței PyTorch )

Reglare fină eficientă din punct de vedere al parametrilor

Dacă reglați fin modele mari, metodele PEFT (cum ar fi adaptoarele de tip LoRA) pot reduce masiv costurile de antrenament, rămânând în același timp surprinzător de puternice ( 🤗 Ghidul Transformers PEFT , lucrare LoRA ). Acesta este unul dintre acele momente de genul „de ce nu am făcut asta mai devreme?”.


6) Optimizare la nivel de arhitectură: Dimensionarea corectă a modelului 🧩

Uneori, cea mai bună metodă de optimizare este... să nu mai folosești un model prea mare pentru această sarcină. Știu, un sacrilegiu 😄.

Faceți un apel pe baza câtorva aspecte de bază:

  • Decide dacă ai nevoie de vibrații complete de inteligență generală sau de un specialist.

  • Păstrați fereastra contextuală la dimensiunea necesară, nu mai mare.

  • Folosiți un model antrenat pentru sarcina respectivă (modele de clasificare pentru activități de clasificare etc.).

Strategii practice de dimensionare corectă

  • Treceți la o rețea principală mai mică pentru majoritatea cererilor,
    apoi direcționați „cererile dificile” către un model mai mare.

  • Folosește o configurație în două etape.
    Schițe rapide ale modelului, verificări sau editări mai puternice ale modelului.
    E ca și cum ai scrie cu un prieten pretențios - enervant, dar eficient.

  • Reduceți lungimea ieșirii.
    Jetoanele de ieșire costă bani și timp. Dacă modelul dvs. divaghează, plătiți pentru divagare.

Am văzut echipe care au redus drastic costurile impunând rezultate mai scurte. Pare mărunt. Funcționează.


7) Compilator + Optimizări graf: De unde vine viteza 🏎️

Acesta este stratul „fă computerul să facă lucruri mai inteligente”.

Tehnici comune:

În termeni simpli: modelul tău ar putea fi rapid din punct de vedere matematic, dar lent din punct de vedere operațional. Compilatoarele remediază o parte din asta.

Note practice (cunoscute și sub numele de cicatrici)

  • Aceste optimizări pot fi sensibile la modificările formei modelului.

  • Unele modele accelerează mult, altele abia se mișcă.

  • Uneori ai parte de o accelerare și de un bug derutant - ca și cum s-ar fi mutat un gremlin 🧌

Totuși, atunci când funcționează, este una dintre cele mai curate victorii.


8) Cuantizare, Tăiere, Distilare: Mai mic fără a plânge (prea mult) 🪓📉

Aceasta este secțiunea pe care oamenii o doresc... pentru că sună a spectacol gratuit. Poate fi, dar trebuie tratată ca pe o operație.

Cuantizare (ponderi/activări cu precizie mai mică)

  • Excelent pentru viteza de inferență și memorie

  • Risc: scăderea calității, în special în cazurile limită

  • Cea mai bună practică: evaluarea pe un set de testare real, nu pe baza vibrațiilor

Arome comune despre care veți auzi:

Tăiere (eliminare parametri)

  • Elimină ponderile sau structurile „neimportante” ( tutorial de eliminare a elementelor din PyTorch )

  • De obicei, necesită recalificare pentru a recupera calitatea

  • Funcționează mai bine decât cred oamenii... atunci când este făcut cu atenție

Distilare (elevul învață de la profesor)

Aceasta este pârghia mea preferată pe termen lung. Distilarea poate produce un model mai mic care se comportă similar și este adesea mai stabilă decât cuantizarea extremă ( Distilarea cunoștințelor într-o rețea neuronală ).

O metaforă imperfectă: distilarea e ca și cum ai turna o supă complicată printr-un filtru și ai obține... o supă mai mică. Nu așa funcționează supa, dar ați prins ideea 🍲.


9) Servirea și inferența: adevărata zonă de luptă 🧯

Poți „optimiza” un model și tot îl poți servi prost. Servirea este punctul în care latența și costul devin reale.

Servirea câștigă ceea ce contează

  • Lotting
    Îmbunătățește randamentul. Dar crește latența dacă exagerezi. Echilibrează-l. ( Lotting dinamic Triton )

  • -
    ul prompt și reutilizarea memoriei cache KV pot fi masive pentru contexte repetate. ( Explicație pentru memoria cache KV )

  • redarea
    este mai rapidă chiar dacă timpul total este similar. Percepția contează 🙂.

  • Reducerea costurilor generale pentru fiecare token.
    Unele stive depun efort suplimentar per token. Reduceți costurile generale și veți câștiga mult.

Atenție la latența cozii

Media ta ar putea arăta grozav, în timp ce P99-ul tău este un dezastru. Din păcate, utilizatorii trăiesc la coadă. ( „Latența coadă” și de ce mint mediile )


10) Optimizare bazată pe hardware: Potriviți modelul cu mașina 🧰🖥️

Optimizarea fără a ști ce hardware are e ca și cum ai regla o mașină de curse fără a verifica anvelopele. Sigur, poți face asta, dar e puțin cam absurd.

Considerații despre GPU

  • Lățimea de bandă a memoriei este adesea factorul limitator, nu calculul brut

  • Loturile mai mari pot ajuta, până când nu mai ajută

  • Optimizările privind fuziunea nucleului și atenția sunt uriașe pentru transformatoare ( FlashAttention: atenție exactă conștientă de IO )

Considerații despre procesor

  • Threading-ul, vectorizarea și localitatea memoriei contează foarte mult

  • Costul suplimentar de tokenizare poate fi dominant ( 🤗 tokenizoare „rapide” )

  • Este posibil să aveți nevoie de strategii de cuantizare diferite față de cele de pe GPU

Considerații privind edge/mobile

  • Amprenta memoriei devine prioritatea numărul unu

  • Varianța latenței contează deoarece dispozitivele sunt… capricioase

  • Modelele mai mici și specializate adesea înving modelele mari și generale


11) Balustrade de calitate: Nu te „optimiza” și nu te transforma într-o eroare 🧪

Fiecare victorie rapidă ar trebui să vină la pachet cu o verificare a calității. Altfel, vei sărbători, vei expedia și apoi vei primi un mesaj de genul „de ce vorbește asistentul brusc ca un pirat?” 🏴☠️

Balustrade pragmatice:

  • Prompturi de aur (set fix de prompturi pe care le testați întotdeauna)

  • Indicatori de sarcină (precizie, F1, BLEU, orice se potrivește)

  • Verificări la fața locului efectuate de oameni (da, serios)

  • Praguri de regresie („nu este permisă o scădere mai mare de X%”)

Urmăriți și modurile de defecțiune:

  • deviația de formatare

  • schimbări de comportament de refuz

  • frecvența halucinațiilor

  • inflația lungimii răspunsului

Optimizarea poate schimba comportamentul în moduri surprinzătoare. În mod ciudat. Iritant. Previzibil, în retrospectivă.


12) Listă de verificare: Cum să optimizați modelele de inteligență artificială pas cu pas ✅🤖

Dacă doriți o ordine clară a operațiunilor pentru Cum să optimizați modelele de inteligență artificială , iată fluxul de lucru care tinde să mențină oamenii sănătoși la minte:

  1. Definiți succesul.
    Alegeți 1-2 indicatori principali (latență, cost, randament, calitate).

  2. Măsurarea
    profilului de referință a sarcinilor de lucru reale, înregistrarea p50/p95, a memoriei, a costului. ( PyTorch Profiler )

  3. Remediați blocajele din conducte.
    Încărcarea datelor, tokenizarea, preprocesarea, procesarea în loturi.

  4. Aplicați victorii de calcul cu risc scăzut.
    Precizie mixtă, optimizări ale kernelului, procesare în loturi mai bună.

  5. Încercați optimizări pentru compilator/rulare:
    captura de grafuri, rulări prin inferență, fuziunea operatorilor. ( tutorial torch.compile , documentația ONNX Runtime )

  6. Reduceți costul modelului.
    Cuantificați cu atenție, distilați dacă puteți, eliminați dacă este cazul.

  7. Corecții pentru optimizarea
    funcționării în cache, concurență, testarea încărcării și latența finală.

  8. Validați calitatea.
    Rulați teste de regresie și comparați rezultatele alăturate.

  9. Iterație:
    Schimbări mici, notițe clare, repetare. Discret - eficient.

Și da, acesta este tot Cum să optimizezi modelele de inteligență artificială, chiar dacă pare mai degrabă „Cum să nu mai calci pe greble”. Același lucru.


13) Greșeli frecvente (ca să nu le repeti ca noi toți) 🙃

  • Optimizarea înainte de măsurare
    Vei pierde timp. Și apoi vei optimiza lucrul greșit cu încredere…

  • Urmărirea unui singur punct de referință.
    Punctele de referință mint prin omisiune. Volumul tău de muncă este adevărul.

  • Ignorarea memoriei
    Problemele de memorie cauzează încetiniri, blocări și trepidații. ( Înțelegerea utilizării memoriei CUDA în PyTorch )

  • Supracuantizarea prea devreme.
    Cuantificarea pe biți mici poate fi uimitoare, dar începeți mai întâi cu pași mai siguri.

  • Fără plan de revenire la o versiune anterioară.
    Dacă nu poți reveni rapid la o versiune anterioară, fiecare implementare devine stresantă. Stresul generează erori.


Note de încheiere: Modul uman de a optimiza 😌⚡

Cum să optimizezi modelele de inteligență artificială nu este un truc singular. Este un proces stratificat: măsoară, corectează pipeline-ul, folosește compilatoare și runtime-uri, ajustează servirea, apoi micșorează modelul cu cuantizare sau distilare, dacă este nevoie. Fă-o pas cu pas, păstrează barierele de siguranță și nu te baza pe „pare mai rapid” ca metrică (sentimentele tale sunt minunate, sentimentele tale nu sunt un profiler).

Dacă doriți cea mai scurtă mâncare la pachet:

  • Măsoară mai întâi 🔍

  • Optimizează fluxul de lucru în continuare 🧵

  • Apoi optimizați modelul 🧠

  • Apoi optimizează servirea 🏗️

  • Păstrați întotdeauna controalele de calitate ✅

Și dacă te ajută, amintește-ți: obiectivul nu este un „model perfect”. Scopul este un model rapid, accesibil și suficient de fiabil încât să poți dormi noaptea... în majoritatea nopților 😴.

FAQ

Ce înseamnă în practică optimizarea unui model de inteligență artificială

„Optimizarea” înseamnă de obicei îmbunătățirea uneia dintre constrângerile principale: latența, costul, amprenta memoriei, precizia, stabilitatea sau debitul de servire. Partea dificilă constă în compromisuri - depășirea unui aspect poate afecta negativ un altul. O abordare practică este alegerea unei ținte clare (cum ar fi latența p95 sau timpul de obținere a calității) și optimizarea în funcție de aceasta. Fără o țintă, este ușor să „îmbunătățești” și tot să pierzi.

Cum să optimizezi modelele de inteligență artificială fără a afecta în mod discret calitatea

Tratați fiecare modificare de viteză sau cost ca pe o potențială regresie silențioasă. Folosiți măsuri de siguranță precum prompturi de control, indicatori de performanță ai sarcinilor și verificări rapide la fața locului efectuate de oameni. Stabiliți un prag clar pentru o abatere acceptabilă a calității și comparați rezultatele una lângă alta. Acest lucru împiedică transformarea întrebării „este mai rapid” în „de ce a devenit brusc ciudat în producție?” după livrare.

Ce trebuie să măsurați înainte de a începe optimizarea

Începeți cu percentilele de latență (p50, p95, p99), debitul (tokenuri/sec sau cereri/sec), utilizarea GPU și VRAM/RAM de vârf. Urmăriți costul per inferență sau per 1k de tokenuri dacă costul este o constrângere. Creați un profil al unui scenariu real pe care îl serviți, nu al unei solicitări de jucărie. Păstrarea unui mic „jurnal de performanță” vă ajută să evitați ghicitul și repetarea greșelilor.

Victorii rapide și cu risc scăzut pentru performanța la antrenament

Precizia mixtă (FP16/BF16) este adesea cea mai rapidă metodă de calcul, dar fiți atenți la particularitățile numerice. Dacă dimensiunea lotului este limitată, acumularea de gradienți poate stabiliza optimizarea fără a consuma memorie. Checkpointing-ul gradienților schimbă puterea de calcul suplimentară pentru memorie mai mică, permițând contexte mai mari. Nu ignorați tokenizarea și reglarea încărcătorului de date - acestea pot priva în liniște de GPU.

Când se utilizează torch.compile, ONNX Runtime sau TensorRT

Aceste instrumente vizează cheltuielile operaționale generale: captura de grafuri, fuziunea kernelului și optimizările grafurilor în timpul rulării. Pot oferi accelerări clare ale inferențelor, dar rezultatele variază în funcție de forma modelului și de hardware. Unele configurații par magice; altele abia se mișcă. Așteptați-vă la sensibilitate la schimbările de formă și la erori ocazionale de tip „gremlin” - măsurați înainte și după pe sarcina de lucru reală.

Dacă merită cuantizarea și cum să eviți să mergi prea departe

Cuantizarea poate reduce memoria și poate accelera inferența, în special cu INT8, dar calitatea poate scădea în cazurile limită. Opțiunile cu biți mai mici (cum ar fi INT4/k-bit) aduc economii mai mari cu un risc mai mare. Cel mai sigur obicei este să evaluați pe un set de teste real și să comparați rezultatele, nu pe baza instinctului. Începeți mai întâi cu pași mai siguri, apoi treceți la o precizie mai mică doar dacă este necesar.

Diferența dintre tăiere și distilare pentru reducerea dimensiunii modelului

Tăierea elimină parametrii „de greutate” și necesită adesea recalificare pentru a recupera calitatea, mai ales atunci când este făcută agresiv. Distilarea antrenează un model de student mai mic pentru a imita comportamentul unui profesor mai mare și poate reprezenta un ROI pe termen lung mai puternic decât cuantizarea extremă. Dacă doriți un model mai mic care se comportă similar și rămâne stabil, distilarea este adesea calea cea mai curată.

Cum să reduci costul inferenței și latența prin îmbunătățiri ale servirii

Optimizarea devine tangibilă în timpul servirii: procesarea în loturi crește randamentul, dar poate afecta latența dacă este exagerată, așa că ajustați-o cu atenție. Cache-ul (caching prompt și reutilizarea KV-cache) poate fi masiv atunci când contextele se repetă. Streaming-ul îmbunătățește viteza percepută chiar dacă timpul total este similar. De asemenea, căutați overhead-ul token-by-token în stivă - munca mică per token se adună rapid.

De ce contează atât de mult latența cozii atunci când se optimizează modelele de inteligență artificială

Mediile pot arăta grozav, în timp ce p99 este un dezastru, iar utilizatorii tind să trăiască în coadă. Latența de coadă provine adesea din jitter: fragmentarea memoriei, vârfuri de preprocesare a CPU, încetiniri ale tokenizării sau comportament slab de procesare în loturi. De aceea, ghidul pune accentul pe percentile și sarcini de lucru reale. Dacă optimizați doar p50, puteți oferi în continuare o experiență care „pare lentă în mod aleatoriu”

Referințe

  1. Amazon Web Services (AWS) - Percentile AWS CloudWatch (definiții statistice) - docs.aws.amazon.com

  2. Google - The Tail at Scale (cele mai bune practici privind latența la coadă) - sre.google

  3. Google - Obiective de nivel de serviciu (Cartea SRE) - percentile de latență - sre.google

  4. PyTorch - torch.compile - docs.pytorch.org

  5. PyTorch - FullyShardedDataParallel (FSDP) - docs.pytorch.org

  6. PyTorch - PyTorch Profiler - docs.pytorch.org

  7. PyTorch - Semantica CUDA: gestionarea memoriei (note despre alocatorul de memorie CUDA) - docs.pytorch.org

  8. PyTorch - Precizie mixtă automată (torch.amp / AMP) - docs.pytorch.org

  9. PyTorch - torch.utils.checkpoint - docs.pytorch.org

  10. PyTorch - Ghid de optimizare a performanței - docs.pytorch.org

  11. PyTorch - Tutorial de tăiere - docs.pytorch.org

  12. PyTorch - Înțelegerea utilizării memoriei CUDA în PyTorch - docs.pytorch.org

  13. PyTorch - tutorial / prezentare generală torch.compile - docs.pytorch.org

  14. ONNX Runtime - Documentația ONNX Runtime - onxruntime.ai

  15. NVIDIA - Documentație TensorRT - docs.nvidia.com

  16. NVIDIA - Tipuri cuantizate TensorRT - docs.nvidia.com

  17. NVIDIA - Nsight Systems - developer.nvidia.com

  18. NVIDIA - Triton Inference Server - procesare dinamică în loturi - docs.nvidia.com

  19. Documentație DeepSpeed ​​- - deepspeed.readthedocs.io

  20. bitsandbytes (bitsandbytes-foundation) - bitsandbytes - github.com

  21. Față îmbrățișătoare - Accelerare: Ghid de acumulare a gradientului - huggingface.co

  22. Hugging Face - Documentație Tokenizers - huggingface.co

  23. Față îmbrățișătoare - Transformers: ghid PEFT - huggingface.co

  24. Față îmbrățișătoare - Transformers: explicația cache-ului KV - huggingface.co

  25. Hugging Face - Transformers: Tokenizatoare „rapide” (clase de tokenizatoare) - huggingface.co

  26. arXiv - Distilarea cunoștințelor într-o rețea neuronală (Hinton și colab., 2015) - arxiv.org

  27. arXiv - LoRA: Adaptare de rang inferior a modelelor lingvistice mari - arxiv.org

  28. arXiv - FlashAttention: Atenție exactă, rapidă și eficientă din punct de vedere al memoriei cu IO-Awareness - arxiv.org

Găsește cea mai recentă tehnologie AI în Magazinul oficial de asistenți AI

Despre noi

Înapoi la blog