Știri

Configurația noastră experimentală: un model de ~83,6 GB care rulează local pe un RTX 3060 de buget

Qwen3.8-Flash-Next IQ3_S pe un RTX 3060 de 12 GB cu doar 48 GB de memorie RAM de sistem. Fără inferență în cloud. Doar hardware de consum accesibil.

Inferență AI locală Strata: 68 de jetoane pe secundă pe un RTX 3060 de 12 GB cu 48 GB de DDR5

Acest lucru este incredibil!

Qwen3.8-Flash-Next IQ3_S (~83,6 GB) rulează local pe un buget RTX 3060 12 GB cu doar 48 GB de RAM de sistem!

Până la 68 de jetoane/sec decodare, ~916 jetoane/sec procesare prompt și un prompt de 30.000 token procesat în doar 34 de secunde.

Produs de Strata de coldniko. Fără inferență în cloud. Doar hardware de consum accesibil!

Benchmark-uri complete, specificații hardware, optimizări și compromisuri de mai jos.

Puteți sări direct la concluziile cheie din secțiunea finală.

Hardware-ul din spatele acestor rezultate

Fără GPU pentru centru de date, fără server multi-GPU scump și fără configurație RAM masivă.

Întregul experiment a fost efectuat pe un PC de consum/stație de lucru destul de obișnuită.

PC-ul compact folosit pentru experiment

CPU

Placa de baza

Memorie

GPU

Depozitare

OS

Rețea

Detaliul crucial: modelul este mult mai mare decât VRAM și RAM disponibile combinate.

Exact asta face acest experiment interesant.

Arhitectura modelului, motorului și memoriei

Model

Qwen3.8-Flash-Next-GSQ-RCO-IQ3_S

Două cioburi GGUF:

Componente suplimentare

Motor de inferență

Alocarea reală a memoriei

Setări importante de configurare

--expert-cache auto
--prefill 4096
--spec 4
--spec-min-p 0.5
--mtp mtp/rt
--max-context 32768
--kv int8
--kv-grow
--kv-resident 32768
--vision
--vram-reserve-mib 960
--pool-workers 12
--conversation-cache-mib 1536
--prompt-cache-tail
--prompt-cache-spread
--resident-experts
--resident-budget-gib 24

Aceasta nu este o configurație convențională „încărcați întregul model în memoria GPU”.

Strata utilizează împreună memoria GPU, RAM de sistem, cache expert și stocare NVMe.

Optimizarea importantă este reducerea la minimum a transferurilor costisitoare de experți, menținând în același timp productivitatea GPU-ului.

Rezultate de referință reale

Același model, același hardware, două configurații de rutare.

Modul A: rutare expertă rapidă, orientată spre rezidență (anterior = 1,5)

ContextPrecompletareDecodare la receDecodare caldă
1K285 tok/s42 tok/s61 tok/s
4K804 tok/s50 tok/s65 tok/s
8K819 tok/s61 tok/s68 tok/s
16K916 tok/s60 tok/s68 tok/s
30K890 tok/s58 tok/s61 tok/s

Timp rece până la primul simbol:

Pentru comparație, Modul B dezactivează rutarea în funcție de rezidență (anterior = 0):

ContextPrecompletareDecodare la receDecodare caldă
1K282 tok/s24 tok/s27 tok/s
4K781 tok/s29 tok/s26 tok/s
8K789 tok/s30 tok/s32 tok/s
16K889 tok/s30 tok/s29 tok/s
30K878 tok/s26 tok/s27 tok/s

Run generație de 500 de jetoane:

Măsurătorile vitezei au fost verificate încrucișat cu cronometrele de streaming la nivelul clientului.

Principala observatie:

Dezactivarea rutării părtinitoare în cache poate reduce viteza de decodare cu aproximativ 2–2,4×.

Dar există un motiv important pentru a nu lăsa rutarea agresivă activată pentru fiecare sarcină de lucru. Mai multe despre asta în secțiunea următoare.

Viteza vs calitatea modelului: compromisul ascuns

Pe această versiune a motorului Strata, GPU-urile cu ≤13 GB VRAM utilizează automat rutarea părtinitoare de rezidență:

STRATA_ROUTE_PRIOR=1.5

Acest lucru favorizează experții deja disponibili în memoria rapidă, în loc să selecteze întotdeauna experții pe care i-ar prefera routerul original.

Beneficiul este dramatic:

Dar aceasta NU este o optimizare gratuită.

Modificarea selecției experților poate modifica comportamentul modelului, poate crește divergența față de modelul original și poate afecta raționamentul îndelungat sau fluxurile de lucru ale agenților.

Conform evaluării dezvoltatorului pentru 10 sarcini de agent:

Rezultatele de referință în sine au variat între curse, deci acesta este un rezultat direcțional, nu o măsurare definitivă a calității.

Propriile mele șase verificări de agent scurt au trecut în ambele moduri.

Cu toate acestea, o serie separată de stres de unicitate a expus repetarea:

Concluzia este simplă:

Și viteza de referință nu trebuie confundată niciodată cu calitatea modelului.

Memorarea promptă în cache schimbă totul

Unul dintre cele mai impresionante rezultate nu a fost viteza de decodare. Era timpul de răspuns pentru solicitările repetate folosind același prompt.

Cu un prompt complet în cache:

ContextTTFT receTTFT stocat în cache
1K3.7 s0.08 s
4K4.9 s0.08 s
8K9.7 s0.27 s
16K17.3 s0.34 s
30K33.9 s0.44 s

Aceasta înseamnă cu aproximativ 45–90 de ori mai puțin timp până la primul simbol în aceste curse.

Cache-ul prompt face o diferență enormă atunci când interogați în mod repetat același document lung sau mențineți o conversație cu un context stabil.

Motorul este, de asemenea, configurat pentru memorarea în cache a conversațiilor:

Există o captură: aceste rezultate sunt pentru solicitări identice cu un cache complet reutilizabil.

Ele nu înseamnă că noi solicitări arbitrare de 30.000 token vor procesa într-o jumătate de secundă.

Dar pentru AI local interactiv, un cache cald este un schimbător de joc.

Misterul SSD: PCIe 5.0 nu este blocajul

La început, unitatea NVMe părea suspect de lentă. Am investigat legătura PCIe, topologia de stocare și comportamentul real I/O.

Unitatea: Lexar NM1090 PRO 2 TB, PCIe 5.0 ×4.

Conexiune PCIe verificată:

Deci, unitatea funcționează la viteza maximă a conexiunii PCIe 5.0.

Benchmark-uri de citire direct necache:

Acest rezultat paralel de 10,94 GB/s este deosebit de important: depășește lățimea de bandă practică a PCIe 4.0 ×4.

De ce debitul de flux unic este mult mai mic?

Deoarece lățimea de bandă PCIe nu este același lucru cu debitul la nivel de aplicație.

Adâncimea cozii, dimensiunea I/O, paralelismul solicitărilor și latența contează.

Modelul de încărcare expert al Strata este mult mai aproape de cazul cu concurență mai mică decât de un benchmark sintetic de debit maxim.

Debitul de stocare a motorului observat:

Diferența vine de la câți experți trebuie aduși, nu de la un downgrade PCIe.

Încă un detaliu util: RTX 3060 în sine este un dispozitiv PCIe 4.0. Vederea legăturii sale la Gen1 în timp ce este inactiv este un comportament normal de gestionare a energiei.

Verificați întotdeauna ce dispozitiv măsurați înainte de a diagnostica o problemă PCIe.

O lecție importantă: nu lăsați Linux să memoreze în cache un model de 83,6 GB pe o mașină de 48 GB

Am întâlnit o problemă serioasă în timpul pornirii inițiale.

Prima configurație a permis încărcarea în buffer a fișierelor model.

Modelul este de ~83,6 GB, în timp ce sistemul are doar 48 GB de memorie RAM fizică.

Sub această încărcătură de lucru, Linux a intrat în presiune severă de recuperare a memoriei. Mașina a devenit aproape fără răspuns, inclusiv conectivitatea SSH și a necesitat o repornire forțată.

Soluția a fost schimbarea strategiei de încărcare și introducerea unor protecții de memorie.

Setări curente:

După aceste modificări:

Lecția:

Este posibil să rulați un model mai mare decât memoria fizică, dar contabilizarea memoriei este absolut critică.

Presiunea din memoria cache a paginii, datele modelului fixate, experții rezidenți și memoria cache KV trebuie luate în considerare împreună.

Nu copiați orbește steaguri de performanță maximă de pe mașini cu configurații RAM mult mai mari.

Consumul de energie, costurile termice și deducția

Aceasta este o altă surpriză plăcută.

Puterea măsurată a componentelor:

Inactiv cu modelul încărcat:

În timpul generației:

Puterea totală estimată a sistemului la perete (nu măsurată folosind un contor de perete):

Temperaturi observate:

Nu s-a observat nicio limitare termică.

La un preț estimat de energie electrică de 0,25 EUR/kWh:

Acest lucru face ca operarea unui endpoint local AI capabil, care păstrează confidențialitatea, este complet realistă acasă.

Desigur, acestea sunt costuri estimate ale energiei electrice, nu costul total de proprietate. Sunt excluse amortizarea hardware-ului, răcirea și întreținerea.

Unde configurarea RTX 3060 nu mai are sens

Această configurație este excelentă pentru solicitări interactive scurte, dar are limite.

Cel mai important:

Pentru comparație, am rulat același model pe un sistem local mai puternic, cu un GPU de 24 GB.

Performanța măsurată pe acel sistem:

Sistemul RTX 3060 oferă un debit de pre-umplere mult mai mic și aproximativ jumătate din decodare în cazuri comparabile, cu o opteme din contextul disponibil.

Cu toate acestea, cardul de 12 GB este mult mai accesibil și rămâne impresionant de util.

Abordarea mea actuală:

Ideea nu este să pretindem că un GPU ieftin înlocuiește o mașină de ultimă generație.

Ideea este cât de multă AI locală utilă poate rula deja pe hardware ieftin.

Ce ar mai putea fi optimizat?

Sistemul funcționează deja bine, dar există câteva căi interesante pentru experimente ulterioare.

Inferență concomitentă

Opțiunea --slots 2 ar putea îmbunătăți debitul total cu două conversații simultane.

Un randament total estimat de +10–12% este posibil pentru acest volum de lucru, dar are nevoie de validare.

Acest lucru nu înseamnă că o singură conversație devine cu 12% mai rapidă.

Loturi mai mari de pre-umplere

Curent: --prefill 4096

Candidat: --prefill auto:16384

Ferestrele mai mari de precompletare ar putea îmbunătăți procesarea promptă îndelungată, dar VRAM-ul disponibil este deja limitat.

Cu aproximativ 11,14 GiB din cei 12 GiB ai GPU-ului ocupați, comportamentul memoriei trebuie măsurat cu atenție.

Mai multă memorie RAM de sistem

Utilizarea --ple-io ram ar putea aduce mai multe date de model în memoria sistemului și poate reduce citirile de stocare.

Documentația dezvoltatorului sugerează:

Dar această configurație ar necesita substanțial mai multă RAM, aproximativ 72+ GiB pentru aspectul măsurat.

Nu este practic pe configurația actuală de 48 GB.

Decodare speculativă

Decodificarea speculativă MTP este deja activată.

Acceptarea observată: ~33–41 de jetoane acceptate din 50–60 redactate, sau aproximativ 65–70%.

Context mai lung

Limita actuală de 32K este o limită de configurare operațională, nu o dovadă că modelul în sine acceptă doar 32K.

Creșterea acesteia necesită reverificarea capacității de memorie, a comportamentului cache-ului KV, a latenței și a stabilității.

Pentru această încărcătură de lucru, reducerea lecturilor costisitoare de experți și îmbunătățirea tiparelor de acces pot conta mai mult decât creșterea lățimii de bandă secvențială maximă a unității.

Ca întotdeauna: comparați volumul de lucru real, nu doar cifrele de marketing hardware.

Gânduri finale

Iată ce demonstrează acest experiment.

Un model MoE cuantificat de ~83,6 GB poate rula local pe:

Cu rezultate măsurate până la:

Dar există avertismente importante.

Sunt interesat în special de economia practică a IA locală.

Nu doar valoarea de referință maximă pentru un sistem de 10.000 EUR, ci și performanța utilă atinsă pe mașinile de consum și configurații accesibile începând cu aproximativ 1.000 EUR.

Confidențialitatea, independența, costurile de operare controlate și utilitatea în lumea reală contează mai mult decât urmărirea unor cifre de referință impresionante.

Acesta este încă un experiment în evoluție și voi continua să împărtășesc măsurătorile, eșecurile, modificările configurației și îmbunătățirile.

Viitorul AI local devine deja surprinzător de accesibil.

Adăugiri ulterioare

Oh, am uitat să menționez că GPU-ul rulează cu NVIDIA Unlock, care a fost lansat cu doar câteva zile în urmă, săptămâna trecută.

Acum i-am cerut agentului meu AI să ruleze aceleași benchmark-uri fără deblocare, așa că vom putea compara rezultatele în aproximativ 15-20 de minute.

În următoarele câteva zile, deși nu astăzi, voi instala acest GPU într-un sistem care costă mai puțin de 1.000 USD și voi vedea cum funcționează acolo.

Firul original pe X · Toate noutățile