Saphan

Studio · Bench

Które zadania należą na Twoją maszynę — i na czyim pomiarze opiera się ta decyzja?

Bench odpowiada, mierząc sprzęt, który naprawdę masz, zamiast czytać kartę modelu. Wynik przypina do wersjonowanego profilu, który mówi, kiedy dane przestały być aktualne.

Werdykt jest bezpłatny i niczego nie instaluje →

To nie jest „lokalne modele zamiast chmury”

Modele frontier zostają. Zarabiają na swoją cenę tam, gdzie błąd jest kosztowny — w projektowaniu, trudnym debugowaniu i review. Nie zarabiają jej w mechanicznym środku: migracjach wzorców, podsumowaniach, scaffolding i powtarzalnej masie rozliczanej za token.

Pytanie nie brzmi, czy przenieść tę pracę, lecz którą pracę przenieść — a to właściwość konkretnego sprzętu, której nikt nie poda z góry.

Właściwej konfiguracji lokalnej nie da się znać wcześniej. Trzeba ją zmierzyć na posiadanej maszynie, a różnica między zgadywaniem i pomiarem potrafi zmienić decyzję zakupową.

Zmierzone, nie zgadnięte

Cztery modele, jeden węzeł ze 128 GB zunifikowanej pamięci, llama.cpp przez Vulkan/RADV. GLM-4.5-Air wydaje się oczywistym flagowcem. Na tym sprzęcie generuje jednak 2,1× wolniej niż gpt-oss-120b — wynik 2,12× uzyskano dwukrotnie, z różnicą poniżej jednej dziesiątej odchylenia standardowego. Prompt również przetwarza ponad dwa razy wolniej (2,11–2,25×), a przy tym waży około 9 GiB więcej. Żadna karta modelu tego nie mówi, bo żadna nie opisuje Twojej maszyny.

Jeden węzeł, cztery modele, trzy miary

Jeden węzeł ze 128 GB zunifikowanej pamięci klasy Ryzen AI Max+ 395, llama.cpp + Vulkan/RADV, Q4_K_M poza natywnym MXFP4 w gpt-oss-120b. llama-bench -p 512 -n 128 -ngl 999 -fa 1 -ctk q8_0 -ctv q8_0; f16 KV dla kimi-linear, który nie może go kwantyzować. Wszystkie panele mają kolejność według szybkości generowania.

gpt-oss-120b — rekomendacja z pomiaru pozostałe, w tym model wybrany bez pomiaru
pp512 = przetwarzanie promptu, tg128 = generowanie; oba w tokenach na sekundę. Cold load to pierwszy odczyt z dysku, warm — ponowny odczyt z cache strony. Wagi są dokładnymi rozmiarami plików. Przepustowość to średnia z pięciu powtórzeń; rozrzut wyniósł poniżej 1% dla generowania i 1–3% dla promptu. Kontekst jest domyślny dla llama-bench, nie dla wdrożonej usługi — to pomiar przepustowości.
Modelpp512 t/stg128 t/sWagi GiBCold load sWarm s

Te liczby opisują jedną maszynę i jeden zestaw flag. Dowodzą znaczenia pomiaru, nie przewidują wyniku Twojego sprzętu. Dopasowanie pamięci przenosi się między maszynami, bo bajt pozostaje bajtem. Przepustowość nie. Kalibracja wyprodukuje Twoje liczby; wcześniej wolimy nie pokazać nic niż cudzy wynik.

Czego nie powie karta modelu

Pięć rzeczy ujawnionych dopiero przez uruchomienie. Żadnej nie widać w specyfikacji; każda zmienia decyzję.

01

Cold load trwa ~23× dłużej niż warm load

GLM-4.5-Air: 42,19 s z dysku wobec 1,85 s na ciepło — i to najmniejsza z czterech różnic. Ten stosunek, nie sama przepustowość, decyduje o grupowaniu lub przeplataniu pracy. W czasie ładowania ukrywa się polityka kolejki.

02

Sukces, który jest porażką

Przy zbyt małym budżecie tokenów modele rozumujące zwracają HTTP 200 z pustą treścią: tokeny rozumowania zużyły limit. Nie ma błędu. Pipeline zapisuje ukończone wywołanie i idzie dalej.

03

Jeden model w ogóle nie kwantyzuje cache KV

Wymiar głowy Kimi-Linear to 72, a blok q8_0 ma 32. To twarde ograniczenie, nie parametr strojenia; wychodzi dopiero po uruchomieniu modelu.

04

Możliwości mają mierzalny sufit

Coder klasy 30B działa niezawodnie w jednym pliku i wykłada się powyżej tego poziomu. Sufit można zmierzyć; nie wynika wprost z liczby parametrów na pudełku.

05

Maszyna kłamie o własnej pamięci

Domyślnie GPU widziało 60,61 z 121,21 GiB — dokładnie połowę, bo ttm_global_init() w jądrze wykonuje num_pages /= 2 od wersji 6.1. To nie awaria ani zły build, tylko ogólny default, którego nikt tu nie wybrał. Jeden parametr startowy dał 112 GiB i model 120B, który „nie mieścił się”, jednak się zmieścił.

Wynik z tej samej maszyny w odstępie tygodnia jest nieintuicyjny: często powtarzana rada, by zwiększyć wydzieloną pamięć grafiki w BIOS-ie, jest na Linuksie gorszą opcją. Limit GTT oblicza się z RAM-u już pomniejszonego o ten obszar, więc jego zwiększenie mechanicznie obniża limit, który miało podnieść.

28 Jul, BIOS carve-out 64 GiB
amdgpu: 65536M of VRAM memory ready
amdgpu: 31451M of GTT memory ready.

05 Aug, BIOS carve-out 2 GiB + ttm.pages_limit
amdgpu: 2048M of VRAM memory ready
amdgpu: 114688M of GTT memory ready.

Ustawienie w BIOS-ie 64 GiB zostawiło 30,71 GiB GTT. Minimum w BIOS-ie i jeden parametr jądra dały 112 GiB — 3,6× więcej na tym samym sprzęcie. Parametr, który większość poradników każe zwiększać, najlepiej zostawić w spokoju.

Nic z tego nie widnieje w karcie modelu. Wszystko znaleziono przez uruchomienie. Tym właśnie jest Bench.

Jak to działa — wartość przed instalacją

Zanim ktokolwiek poprosi o instalację, dowiesz się, czy ma ona sens. Diagnoza jest i pozostanie bezpłatna.

01

Werdykt bezpłatny · niczego nie instaluje

Odczytuje pamięć, pamięć dostępną dla GPU, wersje sterownika i jądra oraz wolne miejsce. Mówi, które klasy modeli mogą pozostać w pamięci, które można przełączać, a które się nie zmieszczą. Każda wartość wskazuje plik lub polecenie źródłowe, więc pomiar da się odróżnić od wniosku.

02

Profil

Jedno odtwarzalne polecenie. Przypina hash buildu llama.cpp, wersję proxy, jądra, firmware i Mesa oraz każdy plik modelu przez repozytorium, nazwę i sha256. Profil ma wersję, macierz testową i datę wygaśnięcia — poniżej wyjaśniamy, dlaczego są obowiązkowe.

03

Kalibracja Ty ją ratyfikujesz

Uruchamia dobrany zestaw zadań prawdziwą ścieżką serwowania. Tam, gdzie można kompilować lub testować, rozstrzyga CI; model ocenia tylko to, czego nie da się sprawdzić mechanicznie. Wynik jest propozycją przypisania lane i przechodzi zwykłą bramkę. Kalibracja nigdy nie wdraża się sama.

04

Raport

Na bieżąco pokazuje podział local/frontier, różnicę kosztu i lane uzasadniający następną modernizację sprzętu. Liczy z rekordu znającego endpoint, który naprawdę obsłużył wywołanie — proxy może po cichu użyć fallbacku, a oszczędność oparta na intencji zamiast faktu jest nic niewarta.

Profil bez wersji i daty wygaśnięcia to przyszłe kłamstwo

W jednym tygodniu budowy upstream zmienił się trzy razy: klucz konfiguracji zniknął w połowie zadania, reguła „znanego dobrego jądra” sprzed miesiąca przestała być prawdziwa, a funkcja warstwy serwującej zmieniła miejsce. Konfiguracja poprawna w poniedziałek była po cichu błędna w piątek.

Dlatego profil podaje, na czym był testowany, i datę, po której przestaje twierdzić, że jest aktualny. Gdy się zestarzeje albo świadomie od niego odejdziesz, ponawiasz test i mapowanie. To wspierana ścieżka, nie awaria.

$ saphan machine show strix-halo-evo-x2
[current]  profile strix-halo-evo-x2 v1.0.0 · expires in 90 days
          kernel 7.0.0-28-generic · mesa 26.0.3 · vulkan 1.4.341
          llama.cpp e031d95 · BIOS EVO-X2 1.12 · GTT 112.00 GiB
          models: 4 pinned by sha256 · 1 hard constraint recorded

$ saphan machine show strix-halo-evo-x2  # ninety-one days later
[expired]  do not treat the figures below as current
→ run: saphan machine qualify strix-halo-evo-x2 --reverify

Ograniczenie, którego nie wystarczy opisać prozą: n_embd_head_v % kv_block_size == 0 — 72 wobec bloku q8_0 równego 32, więc kimi-linear nie może kwantyzować cache KV. Kwantyzacja samego K nie pomaga. Reguła trafia jako dane z reprodukcją, dzięki czemu narzędzie odrzuca niemożliwą konfigurację przed ładowaniem.

Miejsce Bench w systemie

Bench jest modułem Saphan Studio, nie osobnym produktem. Proponuje lane obsługiwane już przez routing, korzysta z tej samej bramki ratyfikacji, a koszt odczytuje z tego samego rekordu.

Osobno działa tylko bezpłatny werdykt — bo musi działać na maszynie, na której nie zainstalowano jeszcze niczego, także Saphan.

Routing decyduje, dokąd trafi klasa pracy. Bench mierzy, co przyjmie Twój sprzęt, aby decyzja wynikała z pomiaru, nie założenia.

Gdy druga osoba potrzebuje tej samej gwarancji

W zespole wszystko działa tak samo. Podział przestaje być nawykiem jednej osoby i staje się polityką: przypisanie lane jest zatwierdzonym plikiem, a koszt da się przypisać, bo rekord zna endpoint faktycznie obsługujący każde wywołanie.

To kolejne drzwi, nie inny produkt. Zacznij solo; po dołączeniu drugiej maszyny profil pozostaje ten sam.

Status, bez ogródek

Co jest prawdą dziś: wdrożenie referencyjne działa i z niego pochodzą wszystkie pomiary na tej stronie. Verdict jest działającym prototypem raportującym dla referencyjnego profilu sprzętu i syntetycznego zestawu testów.

Co nie jest jeszcze prawdą: Verdict nie został sprawdzony na drugiej fizycznej maszynie. Profile, Calibration i Report są opisane, lecz jeszcze niezbudowane. Wspierana macierz jest celowo wąska i rozszerza się przez weryfikację, klasa po klasie.

Wolimy powiedzieć „nie zmierzono” niż opublikować liczbę, której nie potrafimy obronić. Dlatego istnieje ta sekcja.

← Saphan Studio·Saphan Protocol →

Zapytania partnerów projektowych

Skontaktuj się — [email protected]