Introducere
În ultimii ani, scalarea modelelor de limbaj dense a constituit principalul motor de progres în domeniul modelelor de limbaj de mari dimensiuni (LLM). De la modelele timpurii precum ULMFiT original (~30M parametri) sau GPT-2 (1,5 miliarde parametri, care la vremea respectivă era considerat „prea periculos pentru a fi lansat” 🧌), și până la sistemele de astăzi cu sute de miliarde de parametri, rețeta a fost una aparent simplă: mai mulți parametri înseamnă o capacitate mai mare de învățare. Totuși, această abordare se lovește de limite fizice și economice. Aici intervine o paradigmă revoluționară: Mixture of Experts (MoE).
Dacă sunteți deja familiarizați cu conceptele MoE și doriți să treceți direct la detaliile inginerești implementate în biblioteca Transformers, puteți naviga direct la secțiunea dedicată. Totuși, pentru înțelegerea deplină a impactului, este esențial să parcurgem fundamentele.
De la Dense la Sparse: Ce sunt MoE-urile?
Un model de tip Mixture of Experts păstrează coloana vertebrală a arhitecturii Transformer, dar înlocuiește anumite straturi dense feed-forward (feed-forward networks - FFN) cu un set de experți. Este crucial să înțelegem că un „expert” în acest context nu este un module specializat tematic (de exemplu, „expert în matematică” sau „expert în cod”). În schimb, este pur și simplu o sub-rețea care poate fi antrenată, specializată empiric prin învățare automată.
Mecanismul funcționează astfel: pentru fiecare token (unitate de bază a textului), un router (un mecanism de rutare) selectează un subset mic de experți pentru a-l procesa. Tokeni diferiți activează experți diferiți, în funcție de reprezentările lor ascunse (hidden representations). Aceasta este distincția fundamentală: capacitatea modelului depinde de numărul total de parametri, dar viteza de inferență depinde de parametri activi. Aceasta permite decuplarea capacității de învățare de costul computațional.
Să luăm ca exemplu modelul gpt-oss-20b. Acesta dispune de 21 de miliarde de parametri totali, dar utilizează doar 4 experți activi per token dintr-un total de 32 de experți. Luând în considerare componentele partajate plus experții activi, acest model utilizează aproximativ 3,6 miliarde de parametri activi per token. Rulând acest model pe un Mac M3 Ultra, care are o lățime de bandă a memoriei de aproximativ 800 GB/s, am putea estima viteza de generare ca fiind ~800 / (3,6 * 2) în format bfloat16, unde fiecare parametru ocupă 2 octeți. Acest lucru produce aproximativ 111 tokeni pe secundă. Performanța reală măsurată este de ~115 tok/s, foarte aproape de calculul teoretic estimativ. Această viteză superioară confirmă că modelul funcționează aproximativ ca un model de 3,6 miliarde parametri, dar are aceeași capacitate (sau calitate) ca un model de 21 de miliarde parametri.
Experții oferă o limită structurală în graficul de computație. Deoarece tokeni diferiți angajează experți diferiți, putem paraleliza computația across experți. Printre lansările majore recente de modele MoE open-source din ultimele săptămâni se numără Qwen 3.5, MiniMax M2, GLM-5 sau Kimi K2.5. Trendul s-a accelerat după succesul înregistrat de DeepSeek R1 în ianuarie 2025, construit pe sisteme anterioare precum DeepSeek V2. Un alt pionier a fost Mixtral-8x7B, lansat în decembrie 2023. Este demn de menționat că și laboratoarele închise folosesc MoE; se zvonește de mult timp că ChatGPT folosește o arhitectură rară (sparse), iar modelele open gpt-oss confirmă acest lucru.
Transformers și MoE-urile: Provocări Inginerești
Majoritatea instrumentelor din ecosistem, inclusiv încărcarea modelelor, plasarea pe dispozitive, cuantizarea și execuția backend, au fost proiectate inițial pentru modele dense. MoE-urile provoacă aceste presupuneri fundamentale. A face din MoE cetățeni de prima clasă în biblioteca Transformers înseamnă a reproiecta părți ale pipeline-ului de încărcare, a modelului de execuție și a abstracțiunilor distribuite, nu doar adăugarea unor noi clase de modele.
Refactorizarea Încărcării Greutăților (Weight Loading)
Pentru modelele dense, încărcarea este relativ simplă: fiecare tensor din checkpoint corespunde unu-la-unu cu un parametru din modulul de runtime. Pentru MoE, este mult mai complex. În majoritatea checkpoint-urilor MoE, fiecare expert este serializat independent. Dacă inspectăm indexul checkpoint-ului DeepSeek-V3, vom vedea chei precum: model.layers.3.mlp.experts.0.gate_proj.weight și așa mai departe până la model.layers.3.mlp.experts.255.gate_proj.weight. Fiecare expert are propriul set de matrice de greutăți, esențial 256 de rețele feed-forward mici salvate una lângă alta.
Totuși, la runtime, GPU-urile execută kernel-uri optimizate. Kernel-urile MoE moderne, cum ar fi grouped GEMMs și implementările fused MoE, sunt proiectate pentru a procesa toți experții într-o singură operațiune, nu prin iterarea lor unul câte unul. Pentru a face acest lucru eficient, ele necesită ca greutățile experților să fie împachetate într-un singur tensor contiguu.
Încărcarea Dinamică cu WeightConverter
Abstracția centrală introdusă de această refactorizare este încărcarea dinamică a greutăților prin WeightConverter. Modelul mental s-a schimbat: un checkpoint nu mai este doar o copiere cheie-cu-cheie, ci o sursă serializată de tensori care trebuie transformați în layout-ul de runtime dorit. Operațiile primitive (chunk, concatenate etc.) sunt componibile. De exemplu, MergeModulelist poate îmbina o listă de tensori într-un singur tensor, util pentru a stiva experții într-un MoE și a-i împacheta.
Materializarea Leneșă (Lazy) a Tensorilor
Refactorizarea îmbunătățește nu doar conversiile, ci și modul în care acestea sunt programate. Loader-ul scanează cheile de checkpoint o singură dată, le potrivește cu modelele de conversie și grupează tensorii. Odată ce o cheie este identificată ca fiind necesară, este înregistrată ca un „future” și materializată printr-un pool de fire de execuție. Operațiile de conversie rulează doar atunci când dependențele lor sunt gata.
Benchmark: Îmbunătățiri ale Pipeline-ului de Încărcare
Pentru a evalua îmbunătățirile, am comparat versiunile v4 și v5 ale bibliotecii transformers, concentrându-ne pe viteza de încărcare a modelelor MoE mari. Rezultatele sunt elocvente. De exemplu, încărcarea modelului Qwen/Qwen1.5-110B-Chat cu device_map="auto" a durat 66,24 secunde pe v4.57.6, în timp ce pe v5, cu materializare asincronă, timpul a scăzut la 20,71 secunde. În scenariul de tensor parallelism (TP), v5 atinge un timp remarcabil de doar 10,1 secunde. Este combinația dintre rutarea single-pass, materializarea asincronă și programarea conștientă de conversie care evită materializările inutile și vârfurile de memorie.
Unde se Încadrează Cuantizarea
Cu această refactorizare, putem crea structura modulului de runtime mai întâi și apoi converti greutățile. Putem atașa opțional cuantizarea în cadrul pipeline-ului de conversie. Acest lucru este crucial deoarece cuantizarea „per expert” are sens doar atunci când experții există într-un layout împachetat previzibil.
Backend-ul Experților
Odată ce experții sunt împachetați într-un singur tensor de runtime, apare o altă întrebare: cum executăm computația eficient? Sistemul Experts Backend introduce o arhitectură de execuție conectabilă care decuplează computația expertului de implementarea modelului. Sistemul permite straturilor de experți să selecteze dinamic un backend la runtime, folosind un decorator @use_experts_implementation. Printre backend-urile disponibile se numără „eager” (pentru depanare), „batched_mm” (pentru batch-uri mici) și „grouped_mm” (strălucit pentru batch-uri mari sau configurații cu memorie limitată).
Paralelismul Experților (Expert Parallelism)
Modelele MoE pot avea sute de miliarde de parametri, mult peste capacitatea unui singur GPU. Paralelismul experților (EP) abordează acest lucru prin distribuirea experților pe mai multe dispozitive. Fiecare dispozitiv încarcă doar subsetul său de experți atribuiți, calculează pentru acei experți și apoi participă la agregarea rezultatelor. Această abordare scalează modelele la numere de parametri mult mai mari fără a crește costul computațional, deoarece fiecare token activează doar câțiva experți.
Concluzie
Integrarea MoE în ecosistemul Transformers nu este doar o actualizare incrementală, ci o schimbare de paradigmă necesară pentru a susține următoarea generație de AI. Prin refactorizarea pipeline-ului de încărcare, introducerea backend-urilor flexibile și optimizarea paralelismului, biblioteca Transformers deschide calea către modele mai inteligente, mai rapide și mai accesibile.
Mixture of Experts (MoE) în Transformers: O Revoluție în Arhitectura Modelelor de Limbaj