basal 2.2 z autokalibracją: co robi basal-calibrate i po co kalibrować model decyzyjny
Silnik basal 2.2 dostał basal-calibrate: kalibrację modelu decyzyjnego na własnych oznaczonych danych, bez wysyłania ich na zewnątrz. Po co to, ile przykładów trzeba i co jeszcze weszło w wydaniu.

👁 117 przeczytań
19 października Remek Kinas wydał silnik basal 2.2 do swoich polskich modeli decyzyjnych. Najważniejsza nowość to basal-calibrate: narzędzie, które dopasowuje pewność modelu do Twoich danych. Oznaczasz kilkaset własnych przykładów, uruchamiasz kalibrację lokalnie i dostajesz plik z progami, przy których model może decydować sam. Nic nie wysyłasz na zewnątrz. Wyjaśniam, po co to jest, co pokazał test autora i co jeszcze weszło w wydaniu.
W skrócie (basal 2.2, 19.10.2026)
- basal-calibrate liczy progi pewności na Twoich oznaczonych przykładach, lokalnie.
- Test autora na nowej dziedzinie: ustawienie „1% błędu” z fabrycznej kalibracji przepuszczało 12,6% decyzji, z czego 8% było błędnych.
- Po kalibracji błąd kalibracji pytań wyboru spadł z 0,268 do 0,083, a przy weryfikacji twierdzeń 54,8% przypadków poszło automatycznie bez żadnego błędu.
- Kilkadziesiąt etykiet już coś zmienia, kilkaset wystarcza do progu 5%, próg 1% wymaga ok. 1000.
- W wydaniu także GGUF (Ollama, llama.cpp), FP8 (vLLM) i MLX (Mac) dla basal-omni.
Po co kalibrować model decyzyjny
Model decyzyjny, taki jak basal-omni czy Jev od TypeSafe, przy każdej odpowiedzi podaje pewność, np. 0,92. Cała wartość tej liczby polega na tym, że można na niej oprzeć regułę: powyżej progu decyzja idzie automatycznie, poniżej trafia do człowieka albo większego modelu. To działa tylko wtedy, gdy pewność jest „uczciwa”, czyli gdy z decyzji z pewnością 0,9 rzeczywiście ok. 90% jest trafnych. Na tym polega kalibracja.
basal od początku ma plik kalibracji dołączony do modelu. Są w nim progi wyznaczone tak, żeby wśród przepuszczonych decyzji było najwyżej 1% albo 5% błędów. Haczyk: autor wyznaczył je na swoich danych. Gdy model trafia do innej dziedziny, z innym słownictwem i innymi pytaniami, pewność może się rozjechać z trafnością. Widziałem to w swoim teście: przy pewności co najmniej 0,9 basal-omni-1.0-mini miał rację w 35 z 40 polskich zgłoszeń, czyli w 87,5% (wyniki w tekście basal lokalnie).
Co pokazał test autora
Kinas sprawdził basal-omni-1.0-mini na zbiorze typed-decisions z Hugging Face, którego model wcześniej nie widział. Fabryczne ustawienie „1% błędu” przepuściło automatycznie 12,6% decyzji, czyli mniej więcej co ósmą, ale błędnych było wśród nich 8%, a nie 1%. Po kalibracji na części treningowej tego zbioru:
| Typ pytania | Błąd kalibracji przed | Po basal-calibrate |
|---|---|---|
| wybór z listy (choice) | 0,268 | 0,083 |
| tak / nie | 0,106 | 0,073 |
| ocena na skali (score) | 0,104 | 0,052 |
Błąd kalibracji mówi, o ile średnio deklarowana pewność mija się z rzeczywistą trafnością, więc im mniej, tym lepiej. Według notatki wydania po kalibracji żaden typ pytania nie przekroczył zadanego poziomu błędu. Przy weryfikacji twierdzeń (czy dokument potwierdza dane zdanie) próg 1% przepuścił automatycznie 54,8% przypadków testowych bez ani jednej pomyłki. Górna granica błędu z 95-procentową pewnością statystyczną to 1,1%.
Jak to wygląda w praktyce
- Zbierasz przykłady. Każdy wiersz pliku JSONL to zapytanie dokładnie takie, jakie wysyłasz w produkcji, plus poprawna odpowiedź w polu
goldprzy każdym pytaniu. - Uruchamiasz kalibrację z tym samym modelem i trybem, którego używasz:
basal-calibrate moje_przyklady.jsonl --model Remek/basal-omni-1.0-max --mode eagerNarzędzie zapisuje plik
CALIBRATION.custom.jsoni wypisuje raport: ile decyzji przechodzi automatycznie przy progu 1% i 5% oraz jaki jest wtedy błąd na odłożonej części Twoich danych. - Serwujesz model z nowym plikiem:
basal-serve --model Remek/basal-omni-1.0-max --mode eager --calibration CALIBRATION.custom.json
- Ile przykładów: według autora kilkadziesiąt etykiet już przesuwa „temperatury”, czyli to, jak bardzo model ufa sobie przy danym typie pytania. Kilkaset zwykle wystarcza do progu 5%. Próg 1% wymaga ok. 1000 przykładów, bo w części do dopasowania musi się znaleźć co najmniej 299 przyjętych decyzji bez błędu.
- Mało danych: poniżej ustalonej liczby przykładów danego typu kalibracja miesza Twoje dane z fabrycznymi, proporcjonalnie do liczby etykiet.
- Sam raport: opcja
--report-onlytylko ocenia model albo plik kalibracji na Twoich danych, bez zapisywania nowego. To dobry sposób, żeby sprawdzić, czy basal w ogóle nadaje się do danego zadania. - Plik pamięta model. Kalibracja zapisuje, na jakim modelu i wersji powstała. basal-serve ostrzega, gdy podasz plik od innego modelu, a z opcją
--strict-calibrationodmawia jego użycia. - Prywatność: wszystko liczy się na Twoim sprzęcie, na tym samym silniku, którym serwujesz model.
Co jeszcze weszło w basal 2.2
Nie przepłacaj za te subskrypcje
Prowadzę sklep z rocznymi dostępami do narzędzi AI - te same konta, o których piszę wyżej, tylko taniej niż w cenniku producenta.
- GGUF do Ollamy i llama.cpp dla basal-omni-1.0-mini i max, w wersjach Q8_0 i Q6_K, z kalibracją policzoną osobno dla tych plików.
- FP8 do vLLM dla mini i max (12 GB i 14 GB) z własną kalibracją.
- MLX dla Maca dla mini, max i 1.1-max. Na M4 Pro z 24 GB pamięci mini daje według autora 0,73 decyzji na sekundę przy 8 równoległych zapytaniach.
- Powtarzalne odpowiedzi w vLLM: z ustawieniem
VLLM_BATCH_INVARIANT=1dwa przebiegi dały tę samą odpowiedź na wszystkich 2000 decyzjach (bez niego w 94,7%), kosztem ok. 23% wolniejszego działania. - Wkład społeczności:
- Piotr Durlej - eksport do GGUF (basal-export-gguf),
- Kuba Sołtys - tryb dla Google TPU,
- Michał Kardyś - tryb dla AMD Strix Halo,
- lukaspoloki - wizualizacja basal-viz,
- Paweł Kiszczak - silniki MLX dla Maca.
Jak uruchomić mini przez Ollamę na Windowsie i jak wypadł na polskich zgłoszeniach, opisałem w poradniku basal lokalnie: Ollama, llama.cpp i Mac. Wszystkie modele decyzyjne, rankingi i moje testy są w przewodniku Modele decyzyjne AI.
Cały tydzień w AI, w jednym mailu
Wybrane premiery, narzędzia i analizy. Raz w tygodniu, prosto do skrzynki.
Zapisz się za darmo →
