Benchmarki

Dwa silniki, te same modele na tej samej karcie

basal-rs to silnik, który uruchamia modele Basal. Jego szybkość porównujemy z basal-serve v1.5.0, referencyjny serwer autora modeli Basal w Pythonie i PyTorchu. Na kartach NVIDIA działa w trybie fast: BF16, torch.compile i CUDA graphs. Na Macach używa MLX., czyli serwerem autora modeli, na tej samej karcie graficznej. Oba silniki liczą w precyzji 16-bitowej: basal-rs w formacie f16, upstream w BF16. Decyzje obu silników porównujemy z obliczeniami w pełnej precyzji FP32, w której autor sprawdzał modele. Wyniki opisują silnik, a za trafność decyzji odpowiadają modele Basal.

  • 900/900 decyzji takich samych jak w pełnej precyzji FP32 (basal-1.5-max, A100, f16)
  • 0 różnic w odpowiedzi na to samo żądanie pod obciążeniem
  • 1,5–2,8× więcej żądań na tej samej karcie (14 z 15 par karta i model)
  • 1,3–2,8× mniej energii na decyzję we wszystkich 15 parach karta i model
01 / Metodyka

Jak mierzymy

Wyniki wydajności i zgodności pochodzą z raportów w repozytorium basal-rs, z danymi i opisem warunków. Oba silniki mierzymy zawsze na tej samej karcie, a basal-rs działa w ustawieniach domyślnych, takich jak po instalacji.

Szybkość porównujemy między basal-rs w f16 i upstream w BF16 na tej samej karcie. Decyzje obu silników porównujemy z obliczeniami FP32 w upstream.
nasz silnik, ustawienie domyślne

basal-rs, f16

wagi i wyniki pośrednie w f16, sumy w mnożeniu macierzy w f32

serwer autora modeli, tryb fast

upstream, BF16

PyTorch z torch.compile i CUDA graphs, na Macach MLX w bf16

899–900 / 900 decyzji takich jak w FP32
890–896 / 900 decyzji takich jak w FP32
punkt odniesienia dla jakości

upstream, FP32

Pełna precyzja, w której autor oceniał modele. Służy do porównania decyzji. Szybkości z nią nie porównujemy. Kto potrzebuje dokładnie FP32, ustawia w basal-rs dtype: f32 i dostaje 900 / 900.

  • Pojedyncza decyzja

    Czas jednej decyzji, gdy serwer nie ma innej pracy: 44 przykładowe pytania, każde w obu kolejnościach opcji. Mediana z 39 pomiarów, po odrzuceniu 5.

  • Serwer HTTP

    Działający serwer i 1, 8 albo 32 klientów naraz; każde żądanie zawiera jedno pytanie. Obu serwerom zapytania wysyła ten sam program, a zużycie energii odczytujemy z karty.

  • Ruch mieszany

    Dokumenty od 100 do 16 tys. tokenów i od 1 do 14 pytań na żądanie. Mierzony tylko basal-rs: upstream obsługuje na modelu max ok. 17 takich żądań na minutę, więc pomiar trwałby ponad godzinę dłużej na każdej karcie.

  • Zgodność

    Decyzje porównujemy z obliczeniami w pełnej precyzji FP32, w której autor sprawdzał modele. Oba silniki muszą zbudować dokładnie takie samo zapytanie do modelu, co do tokenu.

Karty wynajęte w Shadeform, po jednej na maszynę, z fabrycznym limitem mocy. Sterownik NVIDIA 580, na H100 wersja 535 z pakietem zgodności CUDA. Pomiary z 8 października 2026, basal-rs 0.1.4.
KartaArchitektura, Compute capability, czyli numer wersji układu NVIDIA. Od niego zależy, jakie instrukcje obsługuje karta.PamięćLimit mocyLiczba wirtualnych rdzeni procesora (vCPU) maszyny, w której pracuje karta.
H100 80 GBHopper, 9.080 GB700 W16 vCPU
A100 80 GBAmpere, 8.080 GB400 W16 vCPU
L40SAda, 8.948 GB350 W12 vCPU
RTX 6000 AdaAda, 8.948 GB300 W12 vCPU
RTX A6000Ampere, 8.648 GB300 W6 vCPU
02 / Karty NVIDIA

Pięć kart, trzy modele

Przełączniki nad wykresem zmieniają model i rodzaj pomiaru. Liczba z „×” przy każdej karcie pokazuje, ile razy lepszy wynik ma silnik, który wygrywa. Gdy wygrywa upstream, przed liczbą stoi jego nazwa.

Przepustowość serwera HTTP przy 32 klientach basal-1.5-max, żądań/s, więcej = lepiej
upstream v1.5.0, BF16 (fast) basal-rs, f16
Dane w tabeli
Pomiarupstream v1.5.0, BF16 (fast)basal-rs, f16Jednostka
H100 80 GB5685żądań/s (więcej = lepiej)
A100 80 GB2441żądań/s (więcej = lepiej)
L40S1836żądań/s (więcej = lepiej)
RTX 6000 Ada1027żądań/s (więcej = lepiej)
RTX A60001021żądań/s (więcej = lepiej)

W 14 z 15 par karta i model basal-rs obsługuje 1,5–2,8 raza więcej żądań niż upstream. Wyjątek to basal-1.5-mini na H100, gdzie oba serwery są na podobnym poziomie (basal-rs ma 0,95 wyniku upstream).

03 / Rozmiar instalacji

Bez Pythona i PyTorcha

Wykres pokazuje, ile miejsca na dysku zajmuje wszystko, co trzeba zainstalować, żeby uruchomić serwer z modelami Basal na karcie NVIDIA. Nie wliczamy plików modelu ani sterownika karty. Upstream w każdym trybie działa jako basal-serve w Pythonie z bibliotekami torch i transformers, także wtedy, gdy obliczenia wykonuje Ollama albo llama.cpp.

Instalacja na Linuksie z kartą NVIDIA GB na dysku, bez plików modelu i sterownika, mniej = lepiej
upstream: basal-serve z silnikiem basal-rs 0.1.6
Dane w tabeli
Pomiarupstream: basal-serve z silnikiembasal-rs 0.1.6Jednostka
PyTorch (tryb fast)7,081,07GB (mniej = lepiej)
vLLM8,241,07GB (mniej = lepiej)
SGLang8,911,07GB (mniej = lepiej)
Ollama + basal-serve12,091,07GB (mniej = lepiej)
llama.cpp + basal-serve8,151,07GB (mniej = lepiej)

basal-rs, 1,07 GB

Pliki programu: 47 MB. Reszta to biblioteki NVIDIA CUDA 12.9 (cudart, cuBLAS, cuBLASLt, cuRAND), razem 1,02 GB. Polecenie basal setup pobiera je tylko wtedy, gdy nie ma ich w systemie.

upstream z PyTorchem, 7,08 GB

Biblioteki NVIDIA instalowane jako pakiety Pythona: 4,5 GB, torch: 1,6 GB, triton: 0,67 GB. Do tego biblioteka transformers i serwer HTTP.

Upstream zainstalowany według instrukcji Basala v1.5.0 w czystym środowisku Pythona 3.12, bez wliczania samego Pythona (0,1 GB). Ollama 0.20.3 z oficjalnego instalatora. llama.cpp b11535 z oficjalnej paczki z CUDA 12.8: llama-server, jego biblioteki i cudart. Rozmiar plików na dysku zmierzony 9 października 2026.

04 / Ruch mieszany

Krótkie pytania i długie dokumenty naraz

Ruch podobny do prawdziwego: krótkie pytania przychodzą razem z dokumentami do 16 tys. Fragment tekstu, zwykle część słowa. Model czyta tekst jako ciąg tokenów.. p50 to typowy czas odpowiedzi, p95 czas, w którym mieści się 95% żądań. Wysokie p95 przy 32 klientach to długie dokumenty czekające w kolejce; krótkie pytania mają w serwerze osobną kolejkę i nie czekają za nimi.

Tylko basal-rs: obsłużone żądania na minutę oraz czas odpowiedzi p50 / p95 w sekundach. Przy 32 klientach żądania przychodzą jednocześnie, w kolumnie Sekwencyjnie po jednym.
Karta32 klientówp50 / p95Sekwencyjniep50 / p95
H100 80 GB 4541,35 / 12,13810,03 / 0,87
A100 80 GB 2312,05 / 22,81970,07 / 1,68
L40S 2142,23 / 26,21840,08 / 1,77
RTX 6000 Ada 1663,03 / 35,61450,12 / 2,22
RTX A6000 1213,55 / 46,51050,13 / 3,18

basal-1.5-mini przyjmuje krótsze dokumenty, do ok. 4 tys. tokenów, więc w jego teście najdłuższe dokumenty są krótsze.

05 / Długie dokumenty

Im dłuższy dokument, tym większa różnica

Przy krótkich dokumentach, do ok. 2 tys. tokenów, upstream jest na H100 szybszy. Od ok. 4 tys. tokenów basal-rs jest szybszy 1,75–2,4 raza, a przy pięciu pytaniach o ten sam dokument 10–15 razy, bo dokument liczy się tylko raz.

Czas całego żądania na H100 PCIe 350 W mediana, jeden klient, bez serwera HTTP; każdy wiersz ma własną skalę
upstream v1.5.0, BF16 (fast) basal-rs, f16
Dane w tabeli
Pomiarupstream v1.5.0, BF16 (fast)basal-rs, f16Jednostka
512 tokenów2331ms (mniej = lepiej)
1 792 tokenów84100ms (mniej = lepiej)
4 096 tokenów487267ms (mniej = lepiej)
16 384 tokenów42001743ms (mniej = lepiej)
16 384 tokenów, 5 pytań29,52s (mniej = lepiej)

Czas całego żądania z jednym pytaniem; im dłuższy dokument, tym większa przewaga basal-rs. Przy kilku pytaniach o ten sam dokument liczy się on tylko raz: na RTX 6000 Ada dokument 16 tys. tokenów z pięcioma pytaniami zajmuje w upstream 112 s, a w basal-rs 5,3 s.

06 / Apple Silicon

Modele Basal na MacBookach

Na Macach basal-rs liczy przez Interfejs Apple do obliczeń na układzie graficznym Maca.. Serwer autora modeli działa tam na Biblioteka Apple do uczenia maszynowego na komputerach Mac. w precyzji 16-bitowy format liczb o większym zakresie i mniejszej dokładności niż f16.. Przełącznik pokazuje dwa porównania: w tej samej precyzji f16 widać różnicę samych silników, a w bf16 różnicę, którą odczuje użytkownik upstream. Laptop mierzony na zasilaczu. Na baterii i po nagrzaniu czasy rosną.

Czas pojedynczej decyzji na M2 Max mediana w milisekundach, mniej = lepiej
upstream v1.5.0, MLX f16 basal-rs, f16
Dane w tabeli
Pomiarupstream v1.5.0, MLX f16basal-rs, f16Jednostka
basal-1.5-max886526ms (mniej = lepiej)
basal-1.5-4.5B372235ms (mniej = lepiej)
basal-1.5-mini13080ms (mniej = lepiej)

Czasy z kilku przebiegów: dla upstream pokazujemy najlepszy wynik, dla basal-rs najsłabszy. Na M2 Max basal-rs liczy 1,9–2,0 raza więcej decyzji na sekundę niż upstream w f16.

07 / Zgodność

Te same decyzje co w pełnej precyzji

900 pytań z dziewięciu publicznych zbiorów, po 100 z każdego. Decyzje porównujemy z obliczeniami w pełnej precyzji FP32. Jedyne różnice basal-rs w f16 to pytania, przy których nawet FP32 daje prawie remis, np. 0,503 wobec 0,497.

A100 80 GB. Decyzje takie same jak w obliczeniach upstream w pełnej precyzji FP32 oraz największe różnice wyników modelu. f16, f32 i BF16 to precyzja obliczeń.
WariantDecyzje jak FP32Maks. różnica Surowy wynik modelu dla opcji, z którego powstaje jej prawdopodobieństwo.Maks. Całkowite wahanie (total variation): połowa sumy bezwzględnych różnic prawdopodobieństw wszystkich opcji. 0 znaczy, że rozkłady są identyczne. rozkładu
basal-rs f16 (domyślnie)900/9000,1140,0092
basal-rs f32900/9000,00030,00001
upstream BF16 (fast)896/9001,2100,052

Zbiory pytań

  • polemo2-in (KLEJ) polski · wybór · opcje: 4
  • allegro-reviews (KLEJ) polski · ocena · opcje: 5
  • cdsc-e (KLEJ) polski · wybór · opcje: 3
  • dyk (KLEJ) polski · tak/nie · opcje: 2
  • cbd (KLEJ) polski · tak/nie · opcje: 2
  • ag-news angielski · wybór · opcje: 4
  • emotion angielski · wybór · opcje: 6
  • boolq angielski · tak/nie · opcje: 2
  • sst5 angielski · ocena · opcje: 5
08 / Duże wybory

Pytania z dziesiątkami opcji

Modele Basal wybierają spośród najwyżej 10 opcji. Gdy opcji jest więcej, basal-rs dzieli je na grupy, wybiera najlepsze z każdej i rozstrzyga je w rundzie finałowej. Serwer autora modeli tego nie robi, więc trafność porównujemy z API TypeSafe na zbiorach pytań z poprawnymi odpowiedziami.

Trafne odpowiedzi na 200 pytań pytania z wyborem spośród 59–150 opcji, więcej = lepiej
TypeSafe jev-1.13.0 basal-1.5-max w basal-rs
Dane w tabeli
PomiarTypeSafe jev-1.13.0basal-1.5-max w basal-rsJednostka
banking77 (77 opcji, EN)159156trafnych (więcej = lepiej)
clinc150 (150 opcji, EN)185182trafnych (więcej = lepiej)
massive-pl (59 opcji, PL)159157trafnych (więcej = lepiej)

Jedno pytanie z kilkudziesięcioma opcjami to dla basal-rs 14–32 mniejsze zapytania do modelu. Pomiar na RTX 6000 Ada z limitem mocy 200 W.

09 / Limit mocy

250 W czy 300 W

Mierzymy basal-rs z modelem basal-1.5-max na karcie RTX 6000 Ada, której fabryczny limit mocy to 300 W. Przy limicie obniżonym do 250 W serwer obsługuje ok. 20% mniej żądań, a energia na decyzję zostaje taka sama.

Pomiar250 W300 W (domyślnie)
Serwer HTTP, 1 klient13,9 żądania/s, p50 72 ms17,3 żądania/s, p50 56 ms
Serwer HTTP, 32 klientów21,8 żądania/s26,3 żądania/s
Energia na decyzję, 32 klientów11,5 J11,4 J
Ruch mieszany, 32 klientów134 żądania/min161 żądań/min
Dokument 16 tys. tokenów, 5 pytań5,9 s5,3 s
10 / Powtórz pomiar

Sprawdź zgodność u siebie

Wystarczy zainstalowany basal-rs (polecenie basal) i kopia repozytorium basal-rs. W repozytorium są wyniki obliczeń upstream w pełnej precyzji FP32 dla trzech modeli. Polecenia zapisujące wyniki odmawiają zapisu, jeśli pod wskazaną ścieżką coś już istnieje.

terminal
# wyniki upstream w pełnej precyzji FP32 są w repozytorium
git clone https://github.com/itsoltech/basal-rs && cd basal-rs

# sprawdza zapytania do modelu co do tokenu, bez GPU; model pobiera się do cache Hugging Face
basal check-prompts --model 4.5B --reference reports/reference-basal-1.5-4.5B-fp32

# te same pytania policzone przez basal-rs, zapisane w tym samym formacie
basal export --model 4.5B --inputs reports/reference-basal-1.5-4.5B-fp32 --out export-f16

# porównuje tokeny i decyzje, liczy różnice logitów i prawdopodobieństw
basal compare --a reports/reference-basal-1.5-4.5B-fp32 --b export-f16 --out compare.json