Modele lingvistice pe bază de platformă bare metal · Primcast LLC · din 2004

Modelul decide memoria. Nimic altceva din formularul de comandă nu face acest lucru.

Oamenii ajung la această pagină crezând că decizia este care accelerator este cel mai rapid. Nu este așa. Ponderile fie încap în memoria cardului, fie nu încap - un card cu doi gigaocteți mai puțin nu rulează mai lent, ci nu se încarcă. Așadar, această pagină este prezentată în ordinea în care este luată decizia: cât de mare este modelul, la ce precizie îl veți rula, cât spațiu are nevoie conversația și abia apoi care card depășește limita. Prețurile sunt la o pagină distanță, în mod deliberat.

Ce placă rulează modelul meu Ce instalez pe el

Un singur chiriaș per mașină. Cardul este transmis sistemului de operare, iar versiunile runtime, driver și framework sunt alese și configurate de tine.

Pasul unu

Cât cântăresc de fapt greutățile.

Parametrii înmulțiți cu octeți per parametru, și acesta este întregul calcul. Ponderile pe șaisprezece biți sunt câte doi octeți fiecare, opt biți sunt câte unu, patru biți sunt câte jumătate. Un model cu șapte miliarde de parametri la șaisprezece biți are paisprezece gigaocteți de ponderi; același model la patru biți are între trei și patru.

Cuantizarea este ceea ce transformă o mașină care nu poate stoca un model într-una care poate. Costă calitatea, iar cât de mult depinde de model și de metodă mult mai mult decât de numărul de biți în sine - un model pe patru biți bine cuantizat este de obicei mai aproape de precizia sa maximă decât se așteaptă oamenii, iar unul pe opt biți prost cuantizat poate fi mai slab. Dacă precizia este scopul exercițiului, testați ambele înainte de a vă aloca hardware-ul; diferența este mai ieftin de descoperit acum decât după livrare.

Aceste cifre sunt ponderile și nimic altceva. Ele reprezintă pragul, nu cerința. Următoarea secțiune este partea care îi ia prin surprindere pe oameni.

Weights only — the runtime, the activations and the conversation are extra, and are the subject of the next section.
Model16-bit8-bit4-bit
7-8 billion parameters16 GB8 GB5 GB
13-14 billion parameters28 GB14 GB8 GB
30-34 billion parameters68 GB34 GB19 GB
70 billion parameters140 GB70 GB38 GB

Pasul doi

De ce un model care se potrivește tot nu va servi.

Aceasta este cea mai frecventă modalitate prin care achiziția unei plăci video eșuează și eșuează în același mod de fiecare dată: cineva citește că modelul său are treizeci și opt de gigaocteți, cumpără o placă de patruzeci de gigaocteți, o încarcă cu succes și apoi descoperă că poate susține aproximativ o scurtă conversație.

  • Timpul de execuție este și acolo

    Încărcarea unui model nu este singurul lucru care ocupă cardul. Timpul de execuție în sine, bufferele sale și activările a ceea ce este calculat se află toate în aceeași memorie ca și ponderile.

  • Conversația este acolo și se dezvoltă

    Fiecare token aflat deja într-o conversație lasă ceva în urmă în memoria cache cheie-valoare, deci nu trebuie recalculat. Memoria cache crește odată cu lungimea contextului și, din nou, cu fiecare solicitare servită în același timp. Un context lung sau un punct final ocupat pot necesita la fel de multă memorie ca un model mic.

  • Deci: din nou un sfert și jumătate

    Alocă cel puțin un sfert mai multă memorie pe card decât ponderile și încă jumătate dacă contextul este lung sau endpoint-ul este ocupat. Aceasta este regula pe care o aplică tabelul din secțiunea următoare - fiecare card pe care îl numește conține ponderile de o dată și jumătate.

  • Și dacă este aproape, spune-mi înainte să cumperi.

    Spuneți-ne modelul, cuantizarea, lungimea contextului de care aveți nevoie și aproximativ de câte solicitări simultan. Am prefera să vă convingem să cumpărați o placă mai mare acum sau un model mai mic, decât să acceptăm o comandă care vă dezamăgește în prima săptămână și care se întoarce ca o cerere de rambursare.

Pasul trei

Ce placă rulează ce model.

Citiți în jos până la dimensiunea modelului dvs. și în sus până la precizia la care intenționați să o utilizați. Fiecare celulă denumește cea mai mică carte pe care am potrivit-o, care conține acele greutăți, cu spațiu rămas pentru a servi, și face legătura cu mașina în care intră. În cazul în care catalogul nu conține nimic care să facă acest lucru singur, celula specifică acest lucru în loc să lase un spațiu gol.

The smallest card we fit that holds the weights with room left to serve — that is 1.5× the weights, the generous end of the quarter-to-a-half head-room rule below. No prices here on purpose: GPU dedicated servers holds every one.
If you want to runat 16-bitat 8-bitat 4-bit
7-8 billion parametersTESLA P40 / QUADRO P600024 GB16 GB of weightsTITAN V12 GB HBM28 GB of weightsTESLA P48 GB GDDR55 GB of weights
13-14 billion parametersRTX A600048 GB GDDR6 ECC28 GB of weightsTESLA P40 / QUADRO P600024 GB14 GB of weightsTITAN V12 GB HBM28 GB of weights
30-34 billion parametersMore than one cardNothing we fit holds it alone68 GB of weightsInstinct MI21064 GB HBM2e34 GB of weightsTesla V100 32GB32 GB HBM219 GB of weights
70 billion parametersMore than one cardNothing we fit holds it alone140 GB of weightsMore than one cardNothing we fit holds it alone70 GB of weightsInstinct MI21064 GB HBM2e38 GB of weights

Trei lucruri pe care masa nu ți le poate spune

  • Cea mai mică cartelă care se potrivește nu este întotdeauna cartela dorită. Memoria decide dacă un model rulează; tot restul cărții decid cât de repede rulează și câte persoane poate servi simultan. Tabelul optimizează pentru prima variantă, deoarece prima este un zid rigid, iar a doua este o preferință. Dacă debitul contează mai mult decât bugetul, mergeți cu un pas mai sus în lista de mai jos.
  • Cardurile mai vechi nu acceptă formatele numerice mai noi. Mai multe componente din catalogul nostru sunt anterioare FP8 și bfloat16, așadar un runtime care le așteaptă va reveni la ceva mai lent sau va refuza. Aceasta este o întrebare care merită pusă înainte de a comanda și la care vom răspunde pentru un card specific și un runtime specific, mai degrabă decât în ​​general.
  • O placă de bază AMD rulează ROCm, nu CUDA. Componentele Instinct au un raport calitate-preț excelent per gigabyte și reprezintă răspunsul menționat în mai multe celule de mai sus, dar stack-ul tău trebuie să suporte ROCm. Majoritatea sistemelor de rulare actuale acceptă ROCm; unele instrumente din jurul lor încă nu. Verifică-l pe al tău sau întreabă-ne și îl vom verifica împreună cu tine.

Când răspunsul este „mai mult de o placă”, aceasta este o versiune pe care o cităm mai degrabă decât o opțiune de finalizare a comenzii, iar multi-GPU și multi-node este pagina care explică cum arată și ce le limitează. Costul lunar al fiecăreia dintre aceste plăci și costul mașinii de sub ea reprezintă serverele dedicate GPU - fiecare cifră de acolo este atașată mașinii exacte căreia îi aparține, motiv pentru care această pagină nu repetă niciuna dintre ele.

Din memorie, cel mai mare primul

Fiecare carte pe care o potrivim care publică o figurină de memorie.

Același catalog cu prețurile pe pagina GPU, sortate invers: pagina respectivă începe cu cea mai ieftină mașină completă pentru că răspunde la întrebarea „cât costă aceasta”, iar aceasta începe cu cea mai mare placă video pentru că răspunde la întrebarea „care este cel mai mare lucru pe care îl pot rula”. O placă video a cărei memorie nu este publicată de producător este omisă aici, în loc să fie afișată cu un rând gol, deoarece un rând care nu poate fi comparat nu este util într-o comparație.

Mai multe dintre acestea apar pe mai multe șasiuri, uneori la prețuri diferite, iar generația magistralei mașinii de sub ea schimbă ceea ce poate face de fapt o placă modernă - ambele fiind pe servere dedicate GPU . Ce este instalat și gata în acest moment este din nou o altă întrebare, la care răspund serverele instant .

Ce instalezi pe el

Timpul de execuție este al tău, și acesta este scopul bare metal-ului.

Mașina sosește cu un sistem de operare și un root curate. Nu există niciun serviciu de inferență a furnizorilor prin care trebuie să treci, niciun runtime gestionat care se actualizează singur cu o săptămână înainte de un termen limită și nicio API în fața propriului model. Instalezi ce dorești și îl fixezi la versiunea cu care a fost testat codul tău.

vLLM

Răspunsul obișnuit pentru servirea unui model către traficul real. Loturi continue și atenție paginată sunt cele care permit unui card să răspundă la mai multe solicitări simultan în loc de una câte una, ceea ce este în mod normal diferența dintre o demonstrație și un serviciu. Dorește un card relativ modern.

llama.cpp

Răspunsul obișnuit atunci când memoria este insuficientă sau cardul este mai vechi. Formatele sale cuantizate sunt motivul pentru care un model mare încape pe un card mic și va folosi cu plăcere procesorul și cardul împreună atunci când ponderile nu se potrivesc pe deplin. Mai lent la cerere, mult mai permisiv.

TGI și SGLang

Servere de producție din aceeași familie ca vLLM, cu puncte forte diferite în ceea ce privește ieșirea structurată, reutilizarea prefixelor și servirea multi-model. Dacă aveți deja unul în stivă, acesta rulează aici neschimbat.

Ollama

Cea mai scurtă cale de la o mașină goală la un model care răspunde pe un port. Merită să începeți cu ea chiar dacă ajungeți în altă parte, deoarece vă va spune în aproximativ zece minute dacă dimensionarea a fost corectă.

Indiferent ce alegeți, driverul, versiunea CUDA sau ROCM și versiunea framework-ului vă aparțin și nu există nicio actualizare subordonată. Dacă preferați ca driverul să fie instalat înainte de predare, specificați acest lucru în comandă și denumiți versiunea.

Cât de repede va fi

Nu publicăm o cifră de token-uri pe secundă și iată de ce.

Fiecare astfel de număr depinde de model, cuantizare, timpul de execuție și versiunea sa, dimensiunea lotului, lungimea promptului, lungimea răspunsului și numărul de cereri în curs de livrare. Schimbați oricare dintre ele și cifra se mută cu un multiplu. Un număr principal care nu conține toate acestea este un număr ales pentru a arăta bine și am fi citați pe acesta.

Ceea ce vă vom spune este ceea ce o guvernează, astfel încât să puteți raționa asupra propriului caz:

  • Citirea promptului este legată de procesare. Se întâmplă o singură dată per cerere, în paralel pe întregul prompt, și este locul unde se manifestă randamentul aritmetic al unui card și suportul său pentru formatele numerice mai noi.
  • Generarea răspunsului este limitată de lățimea de bandă a memoriei. Fiecare token necesită citirea ponderilor, așa că pentru o singură solicitare, plafonul este aproximativ cât de repede poate cardul să transmită propria memorie. Acesta este motivul pentru care un card cu memorie mai lentă și mai mare poate pierde în fața unuia mai mic și mai rapid la capitolul latență, în timp ce câștigă la capitolul potrivire sau nepotrivire a modelului.
  • Lotul este ceea ce îl face economic. Servirea mai multor cereri împreună amortizează acea citire a ponderării pentru toate, motiv pentru care debitul total crește abrupt odată cu concurența, în timp ce latența per cerere se modifică abia - până când memoria cache cheie-valoare rămâne fără spațiu, moment în care totul se degradează imediat. Din nou spațiu liber.

Cere în schimb un răspuns real.

Spuneți-ne modelul, cuantizarea pe care o intenționați, lungimea contextului și aproximativ câte solicitări simultane așteptați. Dacă am rulat ceva comparabil, vom spune ce am observat și pe ce anume. Dacă nu, vom spune și asta.

Este o bază mai bună pentru o achiziție decât un grafic de referință și durează aproximativ un minut.

Programul obișnuit de asistență este reprezentat de toate acestea - telefon, chat și tichete, în fiecare zi a anului. Timpii de răspuns sunt în scris pentru serviciul de asistență .

Dincolo de servire

Ajustările fine necesită considerabil mai mult spațiu decât servirea.

Toate cele de mai sus dimensionează un model pentru inferență: ponderi introduse, token-uri excluse. Antrenarea sau reglarea fină a aceluiași model este o problemă de memorie diferită, iar diferența nu este mică.

De ce costă mai multă memorie

Servirea necesită ponderi. Antrenamentul are nevoie de ponderi, gradienți și starea proprie a optimizatorului pentru fiecare parametru pe care îl actualizează, toate rezidente simultan, plus activările pe care trebuie să le păstreze pentru a lucra invers prin rețea. Un model care servește confortabil pe un singur card poate fi de câteva ori prea mare pentru a fi reglat fin complet pe același card.

De aceea majoritatea oamenilor nu o fac pe deplin

Metodele eficiente din punct de vedere al parametrilor — adaptoarele, actualizările de rang scăzut și variantele lor cuantizate — actualizează o mică parte din parametri și necesită o fracțiune corespunzătoare, mică, din memoria suplimentară. Pentru majoritatea sarcinilor pe care oamenii le numesc reglare fină, aceasta este atât alegerea practică, cât și cea care se potrivește cu hardware-ul pe care vă puteți permite să îl păstrați.

Ce să ne spui

Modelul, metoda, lungimea secvenței și dimensiunea setului de date. Nu vom publica aici un multiplicator, deoarece cel corect depinde de toate cele patru, iar o cifră inventată care subdimensionează mașina este mai rea pentru amândoi decât o conversație. Dacă răspunsul este mai mult de o placă grafică, multi-GPU și multi-nod explică cum arată acea construcție.

Autobuzul contează aici într-un fel în care nu contează pentru a servi

O buclă de antrenament transmite în flux continuu loturi prin legătura dintre procesor și placă, astfel încât generarea PCIe a mașinii de subiacentă este o constrângere reală, mai degrabă decât o specificație. Inferența pe un model rezident abia o atinge. Ce platformă oferă unei plăci ce legătură este publicată pe servere dedicate GPU și comparată între platforme pe mai multe GPU-uri și mai multe noduri .

Întrebat anterior

Cele opt întrebări la care există această pagină pentru a răspunde.

Preluat din ceea ce oamenii ne întreabă efectiv în chat și pe tichete, aproximativ în ordinea în care o întreabă. Primele două sunt cele care decid dacă o achiziție funcționează.

Câtă memorie GPU are nevoie un model lingvistic mare?
Ponderile reprezintă numărul de parametri înmulțit cu numărul de octeți per parametru: câte doi octeți la 16 biți, unul la 8 biți, jumătate la 4 biți. Un model cu 7-8 miliarde de parametri are 16 GB de ponderi la 16 biți, 8 GB la 8 biți și 5 GB la 4 biți; un model cu 70 de miliarde de parametri are 140 GB, 70 GB și 38 GB. Aceste cifre reprezintă doar ponderile și reprezintă un minim, nu o cerință - bugetați din nou un sfert până la jumătate, pe lângă acestea, pentru timpul de execuție, activări și memoria cache cheie-valoare.
De ce se încarcă modelul meu, dar nu se difuzează?
Deoarece ponderile nu sunt singurele elemente din memoria cardului. Timpul de execuție și bufferele sale sunt rezidente, iar fiecare token dintr-o conversație lasă o intrare în memoria cache cheie-valoare, astfel încât nu trebuie să fie recalculat. Memoria cache crește odată cu lungimea contextului și din nou cu fiecare cerere servită concomitent, astfel încât un model ale cărui ponderi se potrivesc abia va reține aproximativ o conversație scurtă. Dimensionați cardul la o dată și un sfert până la o dată și jumătate ponderile.
Ce runtime de inferență pot instala?
Oricare dintre ele. Mașina sosește cu un sistem de operare și un root curate și nu există niciun serviciu de inferență al furnizorului în fața ei. vLLM este răspunsul obișnuit pentru servirea traficului real, deoarece procesarea continuă în loturi permite unei singure plăci să răspundă la mai multe cereri simultan. llama.cpp este răspunsul obișnuit atunci când memoria este insuficientă sau placa este mai veche. TGI și SGLang rulează neschimbate. Ollama este cea mai scurtă cale de la o mașină goală la un model care răspunde pe un port. Fixezi driverul, versiunea CUDA sau ROCm și framework-ul la versiunile cu care a fost testat codul tău.
Câte jetoane pe secundă voi primi?
Nu publicăm o cifră de jetoane pe secundă, deoarece fiecare astfel de număr depinde de model, cuantizare, timpul de execuție și versiunea sa, dimensiunea lotului, lungimea promptului, lungimea răspunsului și concurență, iar modificarea oricăruia dintre acestea îl mută cu un multiplu. Ceea ce guvernează acest lucru: citirea promptului este limitată la procesare și se întâmplă o singură dată per cerere; generarea răspunsului este limitată la lățimea de bandă a memoriei, deoarece fiecare jeton necesită citirea ponderilor; iar procesarea în loturi amortizează acea citire în cererile concurente, ceea ce face ca servirea să fie economică până când memoria cache cheie-valoare rămâne fără spațiu. Solicitați un răspuns bazat pe model, cuantizare și concurență așteptată, bazat pe ceea ce am observat efectiv.
Este GPU-ul partajat cu altcineva?
Nu. Un singur client per mașină fizică, iar cardul este transmis către propriul sistem de operare. Nu există hypervisor, partiție MIG, profil vGPU și planificator de time-slicing, deci nimic altceva nu rulează pe card, iar latența inferenței nu se modifică din cauza jobului batch al altcuiva.
Ce se întâmplă dacă modelul nu încape pe o singură carte?
Apoi, este vorba de o versiune cu mai multe plăci video, care este cotată în cotații mai degrabă decât comandată de la un checkout: numărul de plăci video potrivite depinde de lățimea fizică a plăcii respective și de bugetul de putere al carcasei. Două plăci video oferă suma memoriei lor doar dacă runtime-ul poate împărți modelul pe ambele, lucru pe care orice runtime serios îl suportă cu un anumit cost în ceea ce privește debitul. Mai multe plăci video sau mașini acoperă aspectul acelei versiuni.
Are nevoie de mai multă memorie reglajul fin decât servirea?
Mult mai mult. Servirea necesită ponderi; antrenamentul necesită ponderi, gradienți și starea optimizatorului pentru fiecare parametru actualizat, toate rezidente simultan, plus activările păstrate pentru trecerea inversă. Un model care servește confortabil pe o singură placă poate fi de câteva ori prea mare pentru a fi complet reglat fin pe aceasta. Metodele eficiente din punct de vedere al parametrilor actualizează o mică parte din parametri și necesită o fracțiune corespunzătoare, mică, din memoria suplimentară, motiv pentru care majoritatea reglajelor fine de aici utilizează una.
Pot rula o placă de bază AMD și funcționează ROCM?
Da. Componentele AMD Instinct se numără printre cele mai mari plăci de memorie pe care le instalăm și oferă adesea cel mai bun raport calitate-preț per gigabyte, dar stack-ul dvs. trebuie să suporte ROCm în loc de CUDA. Majoritatea runtime-urilor de inferență actuale o fac; unele instrumente conexe încă nu o fac. Întrebați înainte de a comanda și vom verifica rezultatele în raport cu runtime-ul dvs. specific, în loc să răspundem în general.

For the record

Everything on this page, as figures.

Card memory is the manufacturers’ published figure; which cards exist is read from the order catalogue when this page was served. No monthly price appears here on purpose — GPU dedicated servers holds every one, against the exact machine it belongs to.

What decides whether a model runs
Card memory, and almost nothing else on the order form. The weights either fit or they do not — a card a couple of gigabytes short does not run slower, it fails to load. Clock speed and core count decide how fast it is once it fits.
How much memory a model needs
Parameters multiplied by bytes per parameter: two bytes each at 16-bit, one at 8-bit, half at 4-bit. That is the WEIGHTS. The runtime, the activations and the key-value cache for the conversation live in the same memory, so budget a quarter to a half again on top before choosing a card.
Largest model on a single card here
70 billion parameters at 4-bit, with room left to serve. Past that the answer is more than one card in one machine, which is a build we quote rather than a checkout option — multi-GPU and multi-node is the page for it.
Biggest card we fit
RTX PRO 6000 Blackwell 96GB, 96 GB GDDR7 ECC. Card memory figures are the manufacturers' published ones; a card whose figure we could not source is left out of the comparison rather than guessed at.
Which runtime
Yours. The machine arrives with a clean operating system and root, and you install vLLM, llama.cpp, TGI, SGLang, Ollama or anything else, pinned to the version your code was tested against. Nothing upgrades underneath you, and there is no vendor runtime you have to go through.
Throughput
We publish no tokens-per-second figure, deliberately, because we have not measured one under conditions we would be willing to have quoted back at us. What governs it is the card's memory bandwidth while generating, its arithmetic while reading the prompt, and how many requests you batch. Ask with the model, the quantisation and the expected concurrency and we will say what we have actually seen.
Fine-tuning and training
Both are ordinary work here, and both need considerably more memory than serving the same model: gradients and optimiser state sit alongside the weights. A parameter-efficient method needs a fraction of what a full fine-tune does. Tell us the method and the model and we will size it rather than have you find out after delivery.
Tenancy
One tenant per physical machine and the card passed straight through to your operating system. No hypervisor, no MIG partition, no vGPU profile, no time-slicing scheduler, and nobody else's workload on the card. What you measure on the first afternoon is what you keep.
Bandwidth
Unmetered in both directions at every port speed, with no transfer allowance and no egress line on any invoice. Pulling weights down and serving tokens back out costs nothing beyond the port.
What this page does not price
Cards, or anything else. Every card we fit, what each adds per month and what the machine under it costs are on GPU dedicated servers, each figure against the exact machine it belongs to.