Karta tytułowa dla Ternary Bonsai 2 27B, z podtytułem „Model 27B w 5,93 GB — i co faktycznie oznacza 98,2%”, z trzema plakietkami statystyk o treści „Dostarczony pakiet: 5,93 GB”, „Wartość bazowa FP16: 53,80 GB” i „Zmierzone zmniejszenie: 9,05x”. Stopka: „Rozmiar zweryfikowany na podstawie opublikowanego pakietu; wskaźnik jakości podany przez dostawcę.”
Engineering & Research

Ternary Bonsai 2 27B: Co mieści się w 5,9 GB i czego nie mówi 98,2%

Autor

Elias Hawthorne

Data publikacji

Najnowsze modele · 20Zobacz wszystkie modele
Benchmarki: Artificial Analysis · aktualizowane codziennie
Powrót do wszystkich wpisów

Ternary Bonsai 2 27B to multimodalny model językowy o 27,36 miliarda parametrów, ogłoszony przez Prism ML 17 września 2026 r., a najważniejsze w nim jest to, że jego wagi językowe przyjmują jedną z dokładnie trzech wartości. Jego model bazowy to Qwen3.8 27B — model 27B z hybrydową uwagą — a Bonsai zachowuje tę architekturę, ten trening i ten kształt oraz zastępuje macierzowe wagi modelu językowego reprezentacją trójwartościową. Udostępniany plik ma 5,93 GB. Wzorzec pełnej precyzji ma 53,81 GB. Główne twierdzenie dostawcy jest takie, że zachowuje 98,2% średniej wyników benchmarków oryginału.

Zacznij od części, którą większość relacji pomknie: te 98,2% to własna liczba Prism ML, zmierzona na własnym zestawie 20 benchmarków Prism ML, przy użyciu własnego środowiska testowego Prism ML, i nikt spoza firmy jej nie odtworzył. To nie jest oskarżenie — to normalny stan rzeczy dzień po premierze i dokładnie taki status powinieneś temu przypisać. To, co możesz dziś zweryfikować niezależnie, to plik: API Hugging Face podaje Ternary-Bonsai-2-27B-PTQ1_0.gguf o rozmiarze 5,947 GB wobec referencyjnego FP16 o rozmiarze 53,808 GB, co daje redukcję 9,05x i zgadza się z „około 9x” producenta, bez potrzeby wiary w kogokolwiek. Rozmiar to fakt. Utrzymanie jakości to pomiar producenta. Najciekawszy materiał jest pomiędzy — podział na kategorie, który pokazuje dokładnie, gdzie kompresja jest darmowa, a gdzie nie.

To wydanie ma także drugie oblicze. 18 września, dzień po ogłoszeniu, OrcaRouter opublikował wariant tego samego modelu z abliteracją w czasie działania — OrcaRouter Ternary Bonsai 2 27B Uncensored — który usuwa wyuczony kierunek odmowy w czasie wnioskowania i pozostawia wagi bitowo identyczne. Jest omówiony w osobnej sekcji poniżej, ponieważ ciekawa jest sama technika, a jej ograniczenia są równie pouczające jak jej wyniki.

To skompresowany Qwen3.8 27B, a nie nowo wytrenowany model.

Ta różnica to różnica między wyjaśnianiem premiery a powtarzaniem komunikatu prasowego. Prism ML nie wytrenował modelu 27B od zera i nie zastosował nowej receptury pretreningowej. Zrobił natomiast to: wziął Qwen3.8 27B i zmienił reprezentację numeryczną, w której przechowywane i obliczane są jego wagi.

Architektura pozostaje niezmieniona i jest architekturą modelu bazowego: hybrydowa uwaga, w której około 75% to uwaga liniowa, a 25% to pełna uwaga, z blokami MLP SwiGLU, RoPE i RMSNorm. Ten hybrydowy szkielet jest również powodem, dla którego kontekst 262K tokenów jest opisywany jako zdolny do pełnego kontekstu, a nie tylko jako obsługiwany — głównie liniowa uwaga sprawia, że długi kontekst jest wykonalny na urządzeniu. Model jest modelem wizyjno-językowym: akceptuje obrazy, a także tekst, a wieża wizyjna to standardowa, niekwantyzowana wieża Qwen, pakowana osobno.

Wkład Prism ML to dwie rzeczy. Pierwsza to sama reprezentacja trójwartościowa plus trening świadomy kwantyzacji, dzięki któremu jest ona w ogóle wykonalna. Druga to kernele — niestandardowe kernele niskobitowe dla tego stosu hybrydowej uwagi na Apple Silicon i CUDA, które działają bezpośrednio na upakowanych wagach, zamiast rozpakowywać je do FP16 i mnożyć. Bez drugiego wkładu pierwszy jest formatem przechowywania, którego nie da się wykorzystać z dużą szybkością.

Biała księga samego Prism ML podaje podział parametrów jako 24,35 mld w szkielecie językowym na 64 bloki, 2,54 mld w embeddingu i głowicy LM oraz 0,47 mld w 27-blokowej wieży wizyjnej, co daje łącznie 27,36 mld. Wieża wizyjna to jedyna część, która naprawdę stanowi odrębny artefakt: wydanie GGUF pakuje ją jako 4-bitowy plik mmproj o rozmiarze około 0,63 GB, ładowany tylko wtedy, gdy rzeczywiście pojawi się obraz, więc obsługa wyłącznie tekstowa nigdy go nie obejmuje.

To Bonsai drugiej generacji z tego samego laboratorium; pierwsze Bonsai 27B pojawiło się w lipcu 2026 roku, około dwa miesiące wcześniej, a porównanie obu generacji jest zasadnym pytaniem — którym zajmujemy się w bezpośrednim zestawieniu z Bonsai 27B, zamiast powielać je tutaj.

Co konkretnie oznacza „ternary g128”?

Jeśli nie spotkałeś się wcześniej z wagami trójwartościowymi, ten akapit sprawia, że wszystko inne staje się zrozumiałe, więc oto on bez skrótów.

Zwykła waga w sieci neuronowej to 16-bitowa liczba zmiennoprzecinkowa — około 65 536 rozróżnialnych wartości w użytecznym zakresie, a przechowanie każdej z nich kosztuje 16 bitów. Waga ternarna nie jest małą liczbą zmiennoprzecinkową. To wybór jednego z trzech symboli: −1, 0 lub +1. To cały słownik. Gdyby przechowywać taki symbol w naiwny sposób, zużyłbyś dwa bity na wagę, ponieważ dwa bity dają cztery stany, a potrzebujesz tylko trzech.

Samo w sobie byłoby to katastrofalną utratą ekspresywności i dlatego ten format nigdy nie jest tylko symbolem. Każda grupa 128 kolejnych wag współdzieli jeden współczynnik skali FP16, a rzeczywista wartość wagi to symbol trójwartościowy pomnożony przez tę skalę:

• w = ssub>g/sub> · t, gdzie t ∈ {−1, 0, +1}, a ssub>g/sub> to jedna wspólna skala FP16 dla grupy 128

Model nadal reprezentuje szeroki zakres wielkości — po prostu reprezentuje je w zgrubnych, grupowych krokach, a nie w krokach dla poszczególnych wag. To zero nie jest artefaktem zaokrąglenia; to prawdziwy trzeci stan, a jego obecność pozwala grupie 128 wag być w większości milczącą, gdy musi.

Obrócona baza to część, która zaskakuje ludzi. Zanim nastąpi przypisanie wartości trójkowych, każda macierz wag jest przekształcana blokowo przez obrót ortogonalny — macierz Walsha–Hadamarda połączoną ze stałą przekątną znaków ±1, przy rozmiarze bloku 1024 — a wartości trójkowe są wybierane w tej obróconej przestrzeni. Obrót jest wkomponowywany w przechowywane wagi na etapie przygotowania, więc nie kosztuje dodatkowych bitów ani dodatkowego przesyłu wag. Podczas wnioskowania środowisko wykonawcze stosuje zamiast tego dopasowane przekształcenie do aktywacji, a spakowany model deklaruje swój obrót w metadanych, więc środowisko wykonawcze albo stosuje dopasowane przekształcenie, albo odmawia wczytania pliku.

Po co się tym przejmować? Ponieważ rotacja Hadamarda rozprasza energię macierzy wag bardziej równomiernie po współrzędnych, co sprawia, że późniejsza kwantyzacja trójpoziomowa jest znacznie mniej szkodliwa, niż byłaby w przypadku surowego, kolczastego rozkładu. Rotacja nie jest ozdobnikiem; to dzięki niej model ternarny może zachować cokolwiek z jakości modelu-rodzica. Koszt polega na tym, że transformacja leży na ścieżce krytycznej każdej projekcji przy rozmiarze batcha równym 1, co jest prawdziwym problemem inżynierskim — Prism ML scala zmianę znaku ze ścieżką wczytywania transformacji na Metal i paralelizuje ją na całym bloku wątków na CUDA, aby nie zdominowała dekodowania.

Liczby, uważnie: 1.585, 1.71, 1.72, 1.76

Wokół tego wydania krążą cztery wartości szerokości bitowej — wszystkie są poprawne i mierzą cztery różne rzeczy. Mylenie ich ze sobą to najłatwiejszy błąd, jaki można popełnić w tej historii. Oto każda z nich i to, co tak naprawdę obejmuje.

1,585 bita na wagę — zawartość informacyjna jednego symbolu trójkowego, log₂3. To właściwość formatu, a nie jakiegokolwiek pliku. Nic, co zostało wydane, nie działa przy 1,585 bita/wagę.

1,71 bita na wagę — tylko tensory trójwartościowe. Dodaj 16-bitową skalę grupową FP16 rozłożoną na 128 wag, a otrzymasz log₂3 + 16/128 ≈ 1,71. To wciąż nie jest wartość z wydanej wersji; to tensory trójwartościowe w izolacji.

1,72 bitu na wagę — każdy parametr w modelu językowym, w tym niewielki zbiór utrzymywany powyżej reprezentacji niskobitowej. Prism ML utrzymuje 26 238 464 parametrów — 0,0976% modelu językowego, około 52 MB przy bf16 — w wyższej precyzji, głównie ścieżkę stanu rekurencyjnego warstw uwagi liniowej oraz wagi normalizacji. Te tensory nie są ani obracane, ani kwantyzowane, i to one przesuwają wartość z 1,71 na 1,72. Przy 1,72 idealizowany rozmiar to 5,80 GB, redukcja o około 9,3x. To wiersz „True Ternary” firmy Prism ML i jest to cel, a nie plik do pobrania.

1,76 bita na wagę — faktycznie dostarczany GGUF. Wydajne jądra wymagają formatu upakowania, a PTQ1_0 firmy Prism ML gęsto pakuje trity, osiągając 1,76 bita na wagę w 5,93 GB, około 9,1x. To plik stojący za zarówno „5,9 GB”, jak i „9x mniejszy”, które cytuje ogłoszenie, i to właśnie ten plik potwierdzają powyższe pomiary.

Drugie upakowanie to PQ2_0, który przechowuje każdy trit w 2-bitowym slocie, a nie w sposób gęsty. Zajmuje więcej miejsca w zamian za tańsze rozpakowywanie: 2,16 bita na wagę w 7,25 GB, około 7,4×. Żadne z upakowań nie jest szybsze w każdym przypadku — PTQ1_0 przenosi na krok o około 18% mniej danych wag, ale ponosi koszt obliczeniowy rozpakowania gęstych tritów, więc wygrywa na kartach generacji Ada i L4, gdzie wiążącym ograniczeniem jest pamięć, a przegrywa na Hopper, Blackwell i Apple silicon, gdzie natomiast dekodowanie przy batchu 1 jest ograniczone przepustowością instrukcji. Przetwarzanie promptu wszędzie sprzyja PQ2_0, ponieważ jest ograniczone obliczeniowo.

Dwie uwagi porządkowe dla każdego, kto weryfikuje je ze źródłami. Po pierwsze, własne dokumenty Prism ML zaokrąglają nieco inaczej — tabela przechowywania w whitepaperze podaje PTQ1_0 jako 1,76 bita na wagę przy 5,93 GB, podczas gdy karta modelu GGUF na Hugging Face podaje 1,75 i 5,95 GB, a zmierzony plik ma 5,947 GB. To ten sam plik opisany z różną precyzją, a nie rozbieżność co do istoty. Po drugie, ogłoszona redukcja „ponad 9x” pochodzi od dostawcy; w zestawieniu z rzeczywistymi plikami wynosi 53,808 / 5,947 = 9,05x, co się zgadza.

Two-column scoreboard for Ternary Bonsai 2 27B and Qwen3.8-27B FP16 across six shared dimensions: bits per weight 1.76 vs 16.0, footprint 5.93 GB vs 53.80 GB, 20-benchmark average 83.9 vs 85.4, math 96.57 vs 97.06, instruction following 82.66 vs 81.25, and Terminal-Bench 2.1 52.8 vs 69.7. Footer: 'Both columns are Prism ML's own vendor-reported figures; no independent reproduction yet.'

Obraz benchmarku: nie średnia, lecz kształt

Nagłówek to średnia 83,9 w porównaniu z 85,4 dla modelu bazowego Qwen3.8 27B FP16, co daje 98,2%. Średnia jest najmniej interesującą częścią tego. Prawdziwa informacja kryje się w kształcie znajdującym się pod spodem, a ten nie jest jednolity.

Podążanie za instrukcjami — 82,66 vs 81,25. To jedyna kategoria, w której skompresowany model przewyższa swój pełnoprecyzyjny model nadrzędny. To nie jest szum, który ktokolwiek mógłby zbyć od niechcenia; to wygrana w kategorii we własnym zestawie testów dostawcy.

Matematyka — 96,57 vs 97,06, a kodowanie — 81,58 vs 82,17. Oba zasadniczo na tym samym poziomie: pół punktu i sześć dziesiątych punktu w średnich kategorii. Jak na model zajmujący jedną dziewiątą rozmiaru, to właśnie na tych wynikach opiera się cała argumentacja za tą techniką.

Wiedza i rozumowanie — 83,95 vs 86,66.Spadek o 2,7 punktu i właśnie tu kryje się znacząca część brakujących 1,8 punktu w średniej ogólnej.

Wizja — 78,59 vs 81,64. Spadek o 3,05 punktu, największa strata w pojedynczej kategorii. Warto zauważyć, że sama wieża wizyjna nie jest częścią poddaną kompresji; jest nią model językowy odczytujący jej dane wyjściowe.

Agentowość i wywoływanie narzędzi — 77,57 vs 79,74. Średnia dla kategorii obejmuje τ 2-Bench na poziomie 80,22 i BFCL v3 na poziomie 74,92.

Poszczególne wyniki warte są poznania, ponieważ nie wszystkie wskazują ten sam kierunek. W Terminal-Bench 2.1 model uzyskuje 52,8 wobec 69,7 dla pełnej precyzji — około trzech czwartych — a w SWE-bench Verified uzyskuje 60,8 wobec 80,6, znowu około trzech czwartych. To był pierwszy raz, gdy ta rodzina modeli była oceniana w Terminal-Bench, a Prism ML jednoznacznie stwierdza, że obiecane przez nią w pierwszym wydaniu Bonsai długoterminowe postępy w inżynierii oprogramowania są częściowe, a nie pełne. Z drugiej strony: τ 2-Bench wzrósł do 80,2 z 73,6 w poprzednim wydaniu, BFCL v3 utrzymuje się na poziomie 74,9, a AA-LCR wynosi 77,0, w granicach jednego punktu od pełnej precyzji. AIME26 osiąga 95,83, a LiveCodeBench 90,07.

Gdzie mu ufać, a gdzie nie. Ufaj profilowi wyników w matematyce, kodowaniu i podążaniu za instrukcjami — to kategorie, w których można wykazać, że ta technika robi to, co deklaruje, a są one mierzone na tym samym stanowisku testowym co baseline. Zachowaj ostrożność w przypadku pracy agentowej o długim horyzoncie: dwa benchmarki, które faktycznie sprawdzają w wymagających warunkach ciągłą pracę inżynieryjną opartą na narzędziach — Terminal-Bench 2.1 i SWE-bench Verified — pokazują znacząco większą lukę, niż sugeruje agregat, a dostawca mówi o tym wprost, zamiast to ukrywać. A całą tabelę traktuj jako pomiar jednego laboratorium na jednym stanowisku testowym, dopóki ktoś inny go nie powtórzy. To zastrzeżenie nie jest tu formalnością — to różnica między „ten model zachowuje 98,2%” a „dostawca tego modelu zmierzył 98,2% na zestawie, który sam wybrał”. Oba są prawdziwe; tylko jedno jest faktem dotyczącym modelu.

Prism ML's launch post for Bonsai 2 27B, dated September 17 2026, headed 'PrismML Launches Bonsai 2 27B, Its Most Capable Model Yet', with body text stating the model is just 5.9 GB and reduces memory footprint by more than 9x while retaining over 98% of the aggregate benchmark performance of its full-precision counterpart.

Dlaczego to jest lepsze od wersji IQ2_XXS tego samego modelu bazowego

To zasługuje na własną sekcję, a nie na jedną linijkę, ponieważ stanowi to cały argument za treningiem ternarnym świadomym kwantyzacji zamiast kwantyzacji po treningu.

Konwencjonalnym sposobem na zmniejszenie Qwen3.8 27B jest poddanie go kwantyzacji po treningu. Punktem odniesienia w white paperze jest kompilacja IQ2_XXS GGUF tego samego modelu bazowego:

• Ternary Bonsai 2 27B — 1,76 bita/wagę, 5,93 GB, średnia z 20 benchmarków 83,9

• Qwen3.8 27B IQ2_XXS — 2,2 bity/wagę, 7,3 GB, średnia z 20 benchmarków 75,2

Model skompresowany przez trening jest zarówno mniejszy, jak i lepszy. Jest 1,23 razy mniejszy niż konwencjonalna wersja niskobitowa i uzyskuje o 8,7 punktu wyższy wynik. Ta kombinacja nie jest ciekawostką wynikającą z zaokrągleń; to twierdzenie, że reprezentacja wybrana podczas treningu jest warta znacznie więcej niż ten sam nominalny budżet bitowy zastosowany później.

Bardziej pouczającą częścią jest to, jak zawodzi konwencjonalny build, ponieważ porażka jest wybiórcza i łatwa do przeoczenia. IQ2_XXS nie pogarsza się równomiernie. Radzi sobie z wiedzą powierzchniową — 85,79 na MMLU-Redux — ale załamuje się przy zadaniach wymagających długich łańcuchów rozumowania: 78,6 na AIME26, 70,05 na LiveCodeBench, 65,45 na GPQA Diamond. Bonsai 2 uzyskuje 95,83, 90,07 i 85,76 na tych samych trzech. Swobodny test w czacie uznałby build IQ2_XXS za całkowicie użyteczny i nigdy nie ujawniłby załamania; uszkodzenie tkwi dokładnie tam, gdzie zachodzi długie rozumowanie i generowanie kodu. Ta asymetria jest powodem, dla którego „dobrze się sprawdzało, kiedy tego próbowałem” nie jest dowodem w kwestii skwantyzowanego modelu.

Prism ML sprowadza ten sam argument do pojedynczej pochodnej wartości, którą nazywa gęstością inteligencji — z grubsza: wydajność benchmarkowa na gigabajt. W zestawie 20 benchmarków podaje 0,444 na GB dla Bonsai 2, 0,276 dla wersji IQ2_XXS i 0,051 dla FP16. Ta metryka jest własną konstrukcją dostawcy, a sposób jej ważenia to wybór projektowy, nie prawo; ale porządek, który tworzy, jest tym samym porządkiem, który daje surowa tabela, więc dodaje interpretację, a nie dowody.

Jeszcze jedna szczera uwaga dotycząca porównania. Karta modelu GGUF Prism ML podaje drugą, węższą ewaluację — zestaw 14 benchmarków w trybie myślenia — w której ta sama wartość retencji pojawia się ponownie na poziomie 84,78 wobec 86,32, przy czym IQ2_XXS wynosi 72,59. Dwa różne zestawy dające ten sam wynik 98,2% to łagodne potwierdzenie, że zbiorcze twierdzenie nie jest artefaktem doboru jednego benchmarku. To wciąż to samo laboratorium przeprowadzające oba, na tym samym stanowisku badawczym. Nasze pełniejsze rozbicie tego starcia, w tym kwestia formatu pakowania, znajduje się w porównaniu z kompilacjami GGUF Qwen3.8 27B.

Czego tak naprawdę trzeba, żeby prowadzić

Wartości przepustowości pochodzące ze standaryzowanego pomiaru tg128 opisanego w białej księdze, przy rozmiarze partii 1, z wyłączoną wieżą wizyjną:

• Apple M5 Max — 46,8 tok/s przy dekodowaniu, 765 tok/s przy przetwarzaniu promptu

• Apple M5 Pro — 27,7 tok/s przy dekodowaniu; osobny przebieg pakietu PQ2_0 z dłuższym oknem zmierzył 27,0 tok/s w trybie ciągłym, pobierając 27,0 W na szynie GPU i 32,8 W łącznie na CPU i GPU

• Apple M4 Pro — 18,0 tok/s przy dekodowaniu, a przetwarzanie promptu z szybkością około 125 tok/s staje się wiążącym ograniczeniem w przypadku bardzo długich kontekstów

• NVIDIA RTX 5090 — dekodowanie 142,5 tok/s na pakiecie PQ2_0 przy 0,582 mWh na token

Praktyczne twierdzenie, jakie stawia Prism ML, nie dotyczy współczynnika przyspieszenia, lecz raczej braku: bazowy model FP16 o rozmiarze 53,8 GB w ogóle nie mieści się na laptopie z 16 GB pamięci, więc sensowne stwierdzenie brzmi, że model klasy 27B działa teraz interaktywnie na codziennym sprzęcie. Na M5 Pro zmierzony strumień dekodowania przepuszcza około 201 GB/s wag, co potwierdza profil zdominowany przez przepustowość pamięci, który reprezentacja niskobitowa ma wykorzystywać.

A potem przypadki brzegowe, które mają większe znaczenie niż wyniki szczytowe.

Nie możesz używać standardowego llama.cpp. Trójskładnikowe jądra hybrydowej uwagi znajdują się we własnym forku llama.cpp firmy Prism ML. Standardowy llama.cpp odrzuca typy PTQ1_0 i PQ2_0 jako nieznane, a — co groźniejsze — wczytuje starszy trójskładnikowy format Q2_0 bez żadnego ostrzeżenia i produkuje śmieci, ponieważ nie ma środowiska wykonawczego aktywacji Hadamarda. Jeśli uruchomisz ten model na pliku binarnym, który nie stosuje pasującej rotacji, nie otrzymasz błędu; otrzymasz pozornie płynny bełkot. To zdecydowanie najbardziej prawdopodobny sposób na zmarnowanie popołudnia przy tym wydaniu.

Pakiet MLX nie ma ścieżki CUDA. Wydanie MLX (prism-ml/Ternary-Bonsai-2-27B-mlx-2bit) jest przeznaczone dla Apple Silicon, gdzie ma własne kernele dla stosu hybrydowego zarówno w środowisku Python, jak i Swift. Jego skwantyzowane matmul ma kernele Metal i CPU, ale nie ma implementacji CUDA, więc na maszynie NVIDIA ten konkretny pakiet w ogóle nie korzysta z akceleracji GPU. Wnioskowanie na CPU działa, ale przejście w przód modelu 27B na CPU może zająć minuty — co czyni ścieżkę CPU w Linuksie przydatną do testowania implementacji i odtwarzalności, a bezużyteczną do serwowania.

Oba pakiety to prawdziwy kompromis, a nie ranking. Jeśli korzystasz z karty generacji Ada lub L4 albo to pamięć jest wąskim gardłem, wyborem jest PTQ1_0 przy 5,93 GB. Jeśli masz Hoppera, Blackwella lub 5090, PQ2_0 daje ci szybkość dekodowania za 1,3 GB. Jeśli korzystasz z Apple silicon, pamiętaj, że powyższe wartości dla M5 Pro są mierzone na PQ2_0, który jest także pakietem pobieranym domyślnie przez konfigurację demonstracyjną.

Uwaga o własnym rozliczaniu pakietu MLX, ponieważ jest to częste źródło zamieszania. Kontener MLX to afiniczny format 2-bitowy, którego blok przechowuje zarówno skalę FP16 jak i bias FP16 dla każdej grupy 128 wag. Wagi trójkowe Bonsai potrzebują tylko skali — poziomy wynikają wyłącznie ze skali — więc bias jest zbędnym balastem, a blok kosztuje 36 bajtów na 128 wag zamiast 34. To podnosi współczynnik upakowania pakietu MLX do 2,250 bita/wagę, nie 1,72 i nie 1,76. To inny kontener przenoszący te same wartości trójkowe, a jego zmierzony plik na Hugging Face ma 8,005 GiB.

Wariant abliterowany w czasie działania

18 września OrcaRouter opublikował OrcaRouter Ternary Bonsai 2 27B Uncensored, który stosuje ablację kierunku odmowy wobec tego modelu w całości w czasie działania. Idea inżynierska zasługuje na więcej uwagi niż produkt, więc najpierw idea.

Konwencjonalna abliteracja modyfikuje wagi. Znajduje kierunek w przestrzeni aktywacji odpowiadający zachowaniu odmowy, a następnie ortogonalizuje względem niego macierze wag, które zapisują do strumienia rezydualnego: W ← W − r(rᵀW). W zwykłym modelu FP16 to nie problem — edytowana macierz wciąż jest gęstą macierzą zmiennoprzecinkową, więc zapisujesz ją i idziesz dalej. W pakiecie ternarnym to ślepa uliczka, a konkretnie ślepa uliczka z powodu, dla którego cały ten model istnieje. Ortogonalizacja macierzy ternarnej daje gęstą macierz pełnej precyzji. Aby zapisać ją z powrotem w pakiecie ternarnym, trzeba by ponownie przeprowadzić kwantyzację — a ponowna kwantyzacja edytowanych wag nie odtwarza treningu świadomego kwantyzacji, który wytworzył oryginał. Wyrzuciłbyś dokładnie to, za co zapłacono.

Więc zamiast tego projekcja przenosi się na etap wnioskowania. Zamiast zmieniać W, zmień jego wyjście:

• y ← y − α · dot(y, r) · r, obliczane w float32, gdzie y to wkład resztowy, a r to znormalizowany kierunek odmowy

Przy α = 1 usuwana jest składowa każdego zapisu resztowego równoległa do kierunku odmowy. Przy α = 0 model pozostaje nietknięty. α powyżej 1 nadmiernie rzutuje i może pogarszać jakość. Ponieważ α jest parametrem czasu wykonania, a nie właściwością punktu kontrolnego, ten sam pakiet można poddać testom A/B względem samego siebie w tym samym procesie — co jest dokładnie tym, co robią ewaluacje OrcaRouter. Oryginalny pakiet Bonsai pozostaje bitowo identyczny: zero zmodyfikowanych wag, zero ponownej kwantyzacji, zero dodatkowego błędu kwantyzacji wag.

To dwa szczegóły implementacji, w których naiwna wersja tego zawodzi.

129 miejsc interwencji, nie 16. Każdy moduł, który może zapisywać do strumienia rezydualnego, musi zostać opakowany, a w tej hybrydowej architekturze są to 64 bloki mlp.down_proj, 48 warstw linear_attn.out_proj, 16 warstw self_attn.o_proj oraz model.embed_tokens — w sumie 129. Opakowanie tylko self_attn.o_proj to oczywisty błąd i obejmuje 16 z nich, pozostawiając pozostałe 113 zapisów bez projekcji. Skrypt autoweryfikacji mierzy, czy pozostała składowa wzdłuż kierunku odmowy jest sprowadzana do około 1e-6 normy rezydualnej, i ostrzega, jeśli nie wykryje wszystkich 129 miejsc.

Nie obracaj ponownie kierunku. Pakiet ternarny utrzymuje swoje projekcje w obróconej bazie na swoim wejściowym wymiarze i kompensuje po stronie aktywacji. Projekcja odmowy działa na wyjściach tych projekcji, które są już z powrotem w normalnej ukrytej bazie — zatem kierunek odmowy to zwykły 5120-wymiarowy wektor, a zastosowanie do niego dodatkowego obrotu Hadamarda rzutowałoby całkowicie względem niewłaściwej bazy.

The OrcaRouter Ternary Bonsai 2 27B Uncensored repository on GitHub, showing the README description 'Runtime-uncensored Ternary Bonsai 2 27B — without modifying or re-quantizing the original weights', the line 'The original Bonsai pack remains bit-identical.', and a bullet list reading 27B parameters, 0 modified weights, 0 re-quantization, 0 additional weight quantization error, runtime-adjustable ablation strength and 129 residual intervention sites.

Co zmierzył OrcaRouter — nasze własne liczby, a nie niezależne

To są własne, oparte na regułach pomiary OrcaRouter i tak należy je odczytywać: klasyfikator frazy otwierającej oparty na regułach, a nie sędzia LLM, z wyłączonym myśleniem, dekodowaniem zachłannym i budżetem 64 tokenów, przy czym wariant base i wariant ablated to te same wagi w tym samym procesie przy α = 0 w porównaniu z α = 1. Mają charakter orientacyjny, a nie publikacyjny, i nie stanowią weryfikacji żadnego z twierdzeń Prism ML.

W przypadku odmowy, mierzonej jako odsetek promptów, które otrzymały odmowę:

• AdvBench (n=100) — 99,0% w wersji bazowej, 6,0% po ablacji, przy czym 56,0% uzyskało odpowiedź, ale opatrzoną zastrzeżeniem

• JailbreakBench (n=100) — 96,0% wynik bazowy, 4,0% po ablacji, 52,0% z zastrzeżeniami

• StrongREJECT (n=150) — 99,3% dla wersji podstawowej, 3,3% po ablacji, 45,3% z zastrzeżeniami

• HarmBench (n=150) — 98,7% bazowy, 7,3% po ablacji, 48,0% z zastrzeżeniami

• MaliciousInstruct (n=100) — 97,0% w wariancie podstawowym, 0,0% w wariancie po ablacji, 52,0% w wariancie z zastrzeżeniami

• ForbiddenQuestions (n=150) — 75,3% w wariancie podstawowym, 5,3% po ablacji, 42,7% z zastrzeżeniami

• SimpleSafetyTests (n=50) — 96,0% w wariancie bazowym, 18,0% w wariancie z ablacją, 60,0% w wariancie z zastrzeżeniami — a ta wartość jest zaniżona. Ten zbiór składa się głównie z promptów dotyczących samookaleczenia, a model odpowiada na nie przekierowaniem kryzysowym rozpoczynającym się od „Jest mi niezmiernie przykro słyszeć…”, którego dokładna lista fraz klasyfikatora nie wychwytuje, przez co klasyfikator ocenia je jako zastosowanie się do polecenia. Rzeczywisty rezydualny wskaźnik odmów w tym zbiorze jest wyższy niż 18,0%. Klasyfikator celowo pozostawiono bez zmian, aby liczby pozostały porównywalne z innymi kartami modeli OrcaRouter.

Żadna odpowiedź w żadnym zestawie nie wyczerpała swojego budżetu tokenów, więc żaden z tych wskaźników nie jest zawyżony przez obcięcie. W przypadku nieszkodliwych promptów ta sama projekcja usuwa również nadmierne odmawianie: XSTest-safe spadł z 5,2% odmów do 0,4%, a nieszkodliwy podzbiór JailbreakBench z 25,0% do 0,0%. Opublikowany pakiet odrzuca jedną czwartą nieszkodliwych promptów tego benchmarku; po ablacji nie odrzuca żadnego.

Pod względem możliwości identyczność bitowa wag oznacza, że nie ma ponownej kwantyzacji, za którą trzeba by płacić, a pomiary są z tym zgodne:

• MMLU (n=300) — 76,7% dla wersji bazowej, 77,7% dla wersji po ablacji, +1,0

• GSM8K (n=150) — 87,3% dla wersji bazowej, 86,0% po ablacji, −1,3

• CMMLU (n=500) — 76,2% dla modelu bazowego, 75,6% dla modelu po ablacji, −0,6

Przy tych rozmiarach próby każda zmiana mieści się w granicach szumu; pojedyncze pytanie GSM8K jest warte 0,7 punktu. MMLU-Pro zostało wyłączone, a nie raportowane: jego prompt prosi o rozumowanie przed odpowiedzią, a 63–64% odpowiedzi po obu stronach nie zdołało wytworzyć rozumowania w ramach budżetu tokenów, więc każda wartość dokładności byłaby dolną granicą wyznaczoną przez budżet, a nie pomiarem.

Zastrzeżenie, które ma największe znaczenie

Kierunek odmowy oszacowano na podstawie modelu bazowego BF16, z którego wytrenowano pakiet Bonsai. Architektura i ukryta baza są identyczne, więc geometria się zgadza. Ale to, jak dobrze ten kierunek przetrwa trening uwzględniający kwantyzację, nie zostało w pełni zmierzone.

Środowisko wykonawcze potrafi matematycznie i z dokładnością do około 1e-6 udowodnić, że usuwa podany kierunek z każdego zapisu resztowego. Nie potrafi jednak na tej podstawie udowodnić, że kierunek ten nadal wychwytuje tę samą cechę behawioralną w modelu skwantowanym, którą wychwytywał w modelu gęstym. To dwa różne twierdzenia i tylko pierwsze z nich zostało rozstrzygnięte. Każdy, kto czyta powyższą tabelę bezpieczeństwa, powinien czytać ją ze świadomością, że interwencja jest dokładnie tak skuteczna, jak trafne jest założenie o transferze kierunku, a to założenie pozostaje kwestią otwartą.

Jest też praktyczne ujęcie, jakie OrcaRouter nadaje samemu wydaniu, które warto powtórzyć, a nie złagodzić parafrazą: usunięcie wyuczonego kierunku odmowy może sprawić, że model odpowie na żądania, które pierwotny model odrzuciłby. Jest to mechanizm badawczy i kontroli wnioskowania, a nie dowód, że jakiekolwiek wynikowe dane wyjściowe są bezpieczne, poprawne lub właściwe, a wdrożenia, które go używają, powinny stosować własne kontrole dostępu i egzekwowanie zasad. Usuwanie odmów nie jest darmową poprawą, a ten tekst nie jest napisany tak, jakby nią było.

Trzy dalsze praktyczne uwagi dla każdego, kto chciałby to odtworzyć. Pakiet trzeba załadować wraz z jego własnym dołączonym środowiskiem uruchomieniowym — zwykły loader MLX może sprawiać wrażenie, że ładuje go poprawnie, a po cichu obliczać coś błędnego, więc jeśli wyniki wyglądają źle, zanim ablacja zostanie nawet włączona, najpierw sprawdź ścieżkę ładowania. Obsługiwana jest ablacja wybiórcza warstwowo, więc interwencja nie musi być wszystkim albo niczym. A ewaluację ablacji przeprowadzono na rozwiniętym rozszerzeniu FP16 pakietu, a nie na pakiecie uruchamiającym własne jądra, ponieważ spakowane skwantyzowane mnożenie macierzy nie ma implementacji CUDA, a backend CPU potrzebuje minut na przebieg w przód; to rozszerzenie przenosi wartości trójkowe pakietu dokładnie i odtwarza własne rozkłady następnego tokenu pakietu z dokładnością do trzech miejsc po przecinku w testach wyrywkowych, ale jest to zmiana kontenera i warto o niej wiedzieć. Kod i pełne tabele znajdują się w repozytorium OrcaRouter Ternary Bonsai 2 27B Uncensored. Osobne porównanie obejmujące wersję MLX z ablacją względem niezmodyfikowanej ścieżki MLX Qwen3.8 27B wchodzi głębiej w szczegóły środowiska uruchomieniowego.

Dokąd to zmierza i co wciąż pozostaje nieudowodnione

To, co niemal bezstratny model 27B w około sześciu gigabajtach zmienia dla lokalnych agentów, dotyczy głównie tego, co staje się rezydentne. Model językowy, który mieści się wraz z rzeczywistym oknem kontekstu na laptopie z 16 GB, może pozostać załadowany, gdy agent wykonuje inną pracę — czyta pliki, wywołuje narzędzia, utrzymuje plan przez kolejne tury — zamiast być podmienianym przy każdym żądaniu albo wypychanym na serwer. To różnica między lokalnym modelem, którego próbujesz, a lokalnym modelem, który zostawiasz uruchomiony, i to właśnie tę konkretną właściwość mają potwierdzać wyniki agentowe, τ 2-Bench na poziomie 80,2 i BFCL v3 na poziomie 74,9.

Lista tego, co nieudowodnione, jest dłuższa, niż sugeruje to ogłoszenie.

• Brak niezależnego odtworzenia. Każda wartość jakościowa w tym artykule — 83,9, 98,2%, średnie kategorii — to pomiar samego Prism ML na własnym zestawie Prism ML. To nie jest wada wydania; to po prostu tak wygląda coś, co ma jeden dzień. To także pierwsza rzecz, która się zmieni.

• Długoterminowa praca agentowa to najsłabszy element we własnej tabeli dostawcy, a nie najmocniejszy. Terminal-Bench 2.1 z wynikiem 52,8 wobec 69,7 to realna luka, a dostawca mówi, że ta zdolność jest częściowa.

• Prompty, których jeszcze nie wypróbowałeś. Profil niepowodzeń modeli niskobitowych jest wybiórczy, a załamanie IQ2_XXS na AIME26 i LiveCodeBench przy jednoczesnym utrzymaniu 85,79 na MMLU-Redux to najwyraźniejszy dostępny dowód, że średnia z benchmarku nie mówi, co się stanie w Twoim obciążeniu. Bonsai 2 nie wykazuje tego załamania na tych dwóch benchmarkach, co jest zachęcające i nie jest tym samym co gwarancja.

• Kwestia transferu kierunku w wariancie poddanym abliteracji, powyżej, która jest nierozstrzygnięta z założenia.

• Czy jądra się utrzymają, gdy środowiska uruchomieniowe będą się zmieniać. Obecnie ten model wymaga forka; standardowy llama.cpp odrzuca dwa z trzech formatów, a trzeci po cichu przekłamuje. Dopóki te jądra nie trafią do upstreamu, „działa wszędzie tam, gdzie działa llama.cpp” nie jest jeszcze prawdą w przypadku tego modelu.

Samo wydanie nie jest kwestionowane. Multimodalny model klasy 27B o rozmiarze 5,93 GB, stanowiący jedną dziewiątą objętości tego, z czego został skompresowany, z matematyką i kodowaniem na poziomie modelu macierzystego oraz nieco lepszym realizowaniem instrukcji, to naprawdę inny punkt pracy dla wnioskowania lokalnego. Rozsądne stanowisko na 18 września 2026 r. to przyjąć rozmiar pliku jako fakt, potraktować wskaźnik zachowania jako staranne twierdzenie dostawcy złożone dzień wcześniej na zestawie testów wybranym przez dostawcę, a ocenę własnego obciążenia wstrzymać, dopóki się go na nim nie uruchomi.

Kod ablacji czasu wykonania, kierunek odmowy i pełne tabele ewaluacyjne są publikowane przez OrcaRouter, wraz z platformą routingu, którą buduje zespół.