Autor: Laboratoarele invergent.ai
Surogate este un framework open-source pentru pre-training și fine-tuning de modele mari de limbaj, construit ca motor nativ C++/CUDA, cu un strat Python minimal. Nu este un „tool de notebook” și nu este un wrapper peste alte stack-uri. Este un engine de training de nivel industrial, proiectat să ruleze la limitele reale ale GPU-urilor moderne.
L-am construit cu o întrebare foarte pragmatică: ce ar însemna un framework care nu doar „funcționează”, ci folosește aproape complet ceea ce hardware-ul poate oferi?
În ultimii ani, ecosistemul de training LLM a crescut rapid, dar majoritatea soluțiilor au rămas blocate într-o paradigmă de tip Python-first. Logica este scrisă sus, în Python, iar performanța este „salvată” prin patch-uri native. Funcționează, dar plafonul apare repede. Pe măsură ce modelele cresc, iar GPU-urile devin tot mai rapide, costul acestor straturi de abstracție devine vizibil.
Surogate pornește invers. Core-ul este C++/CUDA. Python este doar un strat de control. Nu acolo se întâmplă munca. Asta schimbă tipul de probleme care pot fi rezolvate: kernel fusion real, scheduling determinist, control explicit al memoriei, mixed precision end-to-end, scalare multi-GPU predictibilă.
Rezultatul este un engine care atinge speed-of-light utilization pe GPU-urile NVIDIA moderne. Nu ca metaforă, ci ca metrică: cât din capacitatea teoretică a hardware-ului este transformată în calcule utile de training.
Surogate suportă nativ BF16, FP8, NF4 și NVFP4. Nu ca opțiuni adăugate ulterior, ci ca rețete complete de training. FP8 este implementat cu E4M3 pentru activări și greutăți și E5M2 pentru gradienți, cu delayed scaling per-tensor pentru stabilitate numerică. NVFP4 folosește CUTLASS FP4 E2M1 cu two-level block scaling, stochastic rounding și Hadamard transforms pentru stabilitate, rulând nativ pe generațiile Blackwell.
În Surogate, mixed precision este o arhitectură. GEMM-urile, modelul, gradientul și rețetele LoRA pot folosi tipuri diferite de precizie în același pipeline. Poți construi propriul „flavor” de training, adaptat exact la constrângerile tale de memorie și performanță.
Framework-ul acoperă atât pre-training complet, cât și fine-tuning clasic, LoRA și QLoRA. Are suport nativ pentru multi-GPU cu backends MPI și multi-threading real. Optimizatorii includ AdamW 8-bit și NorMuon. Rulează pe toate generațiile moderne de GPU NVIDIA: de la A100 și RTX 30xx, până la H100 și Blackwell.
Modelele suportate includ Qwen2.5, Qwen3 Dense și LLaMA 3.2, cu extinderi planificate.
Dar arhitectura nu este un scop în sine. Este motivul pentru care Surogate este, în acest moment, cel mai rapid framework open-source de training LLM.
În benchmark-uri directe față de Unsloth, standardul actual de viteză din open-source, Surogate depășește performanța pe toate dimensiunile de modele și pe toate formatele majore de precizie:
• BF16: aproximativ +36%
• FP8: aproximativ +78%
• QFP8: aproximativ +61%
• FP4: între +107% și +128%
• QFP4: aproximativ +68%
Aceste cifre nu provin din teste scurte. Sunt măsurate pe workload-uri reale, pe cicluri complete de training. Diferența nu apare în primele secunde. Apare după ore de rulare continuă. În numărul total de token-uri procesate. În cât progres real obții din fiecare oră de GPU.
Un exemplu simplu: un overhead de 5–10 ms între batch-uri pare neglijabil. Dar într-un training de 200.000 de pași, înseamnă zeci de minute de GPU idle. În multe stack-uri, aceste pierderi sunt distribuite în kernel launches, sincronizări, mutări de date sau logică Python din bucle critice.
În Surogate, aceste zone au fost tratate ca probleme de arhitectură, nu ca micro-optimizări. Kernelurile sunt compuse. Scheduling-ul este controlat din engine. Mișcarea datelor este explicită. Mixed precision este aplicată pe întreg fluxul.
De aceea, când rulezi același model, cu același batch size, pe același hardware, diferența nu este „se simte mai rapid”. Diferența este că, după o zi, ai procesat semnificativ mai mult.
Același lucru este vizibil în multi-GPU. Multe framework-uri arată bine pe un singur GPU și pierd eficiență pe măsură ce adaugi plăci. În Surogate, scalarea este tratată ca proprietate de bază. În benchmark-uri, nu măsurăm doar viteza absolută, ci și pierderea relativă la fiecare pas de scalare.
Un engine de training este relevant nu prin cât de frumos arată într-un demo, ci prin cât de multă muncă reală poate duce într-un interval lung de timp.
Toată această putere ar fi inutilă dacă ar fi greu de accesat.
De aceea, Surogate este construit să poată fi rulat rapid. Instalarea recomandată este un singur pas:
curl -LsSf https://surogate.ai/install.sh | sh
Cu un GPU NVIDIA și un driver recent, framework-ul este gata de utilizare în câteva minute. Pentru cei care vor să contribuie sau să inspecteze engine-ul în profunzime, există opțiunea de build din sursă, cu suport pentru CUDA 12.8+, NCCL și cuDNN.
Surogate vine cu:
• rețete predefinite pentru BF16, FP8 și FP4
• exemple clare pentru fine-tuning și LoRA
• benchmark-uri reproducibile în repo
• suport pentru toate generațiile moderne de GPU-uri NVIDIA
Obiectivul este simplu: să poți instala, rula un exemplu real și compara direct performanța, fără fricțiune.
Repo-ul nu este o arhivă. Este un spațiu de lucru activ. Benchmark-urile sunt publice. Rezultatele sunt reproductibile. Deciziile de arhitectură sunt vizibile.
Un engine de acest tip nu devine relevant prin anunțuri, ci prin utilizare. Prin stresare. Prin comparație. Prin integrare în contexte reale.
Surogate există pentru cei care tratează training-ul LLM ca pe o problemă de inginerie, nu ca pe un experiment ocazional. Pentru cei care vor să stoarcă fiecare ciclu de GPU. Pentru cei care înțeleg că diferența nu se face în prompt, ci în pipeline.
Dacă lucrezi serios cu modele mari, Surogate nu este un tool „de încercat”. Este un engine de evaluat. Codul este deschis, instalarea este directă. Toate benchmark-urile sunt acolo, restul îl decide hardware-ul.