You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
i2sLayout hardcoded to GROUP_128 at the call site — the I2sGgufLayout knob (GROUP_64 / SEQUENTIAL) is not exposed, and a wrong flavor only "fails fast on code 3 where possible".
Drop the explicit ternary kernel installs in Main.kt once SKaiNET#1240 (PR SKaiNET#1241) ships in a consumed BOM.
BF16 arbitration of the greedy divergence found while building the oracle — bitnet.cpp (pinned working build: microsoft/BitNet @ de371b7, fork @ 5eb47b721; current HEAD does not compile) and SKaiNET genuinely disagree from generated token 4 on the standard prompt. The oracle quantizes activations to int8 per matmul; SKaiNET's LUT path is exact FP32×ternary — so the divergence is expected in some direction, but which implementation tracks the BF16 reference (microsoft/bitnet-b1.58-2B-4T safetensors) is unverified. Proposal: an eval-callback-style probe against HF transformers BF16 (the gemma 8a7f1f1 method), gated like the parity test. Details and the oracle's top-5 at the divergence position are in the committed fixture header.
E5 (BF16 arbitration) is resolved — and it found a real bug. The HF BF16 reference sided with bitnet.cpp: SKaiNET was the diverging implementation, and the culprit was the RoPE pairing (INTERLEAVED instead of the NEOX-style SPLIT_HALF bitnet.cpp assigns all three BITNET arches). Fixed in PR #365; with it, SKaiNET, bitnet.cpp, and the BF16 reference agree token-for-token on all 32 greedy tokens of the parity prompt, and the committed fixture now gates on that full equality. Details, culprit-isolation steps, and the one documented dense-head near-tie are in the PR and fixture header.
Remaining on this issue: entry-point parity (E3) and dropping the CLI's explicit kernel installs once a BOM containing SKaiNET#1241 is consumed.
E3 done in PR #371: a real BitNet chat provider (BitNetChatTemplate per the HF checkpoint's authoritative format — the GGUF's embedded template is a conversion artifact — plus stopTokenStrings() so the loop stops at <|eot_id|> despite the GGUF declaring 128001 as EOS). Verified end-to-end on 2B4T: clean auto-detected chat, correct answer, proper stop.
E4's last piece (dropping the CLI's explicit kernel installs) is in PR #370 (the 0.52.1 BOM bump — merge after the engine release publishes). With #370 + #371 merged, everything on this issue is done and it can close.
Activity
michalharakal commentedon Aug 31, 2026
Status after PR #364: parity probe, smoke row, and CLI knobs are in. Remaining here:
llm-runtime/kbitnetfacade landed in refactor(bitnet): full #346 conformance — BitNetWeightLoader, RuntimeWeights, kbitnet facade (#359) #363; a chat-facade/family-CLI entry point is still open.Main.ktonce SKaiNET#1240 (PR SKaiNET#1241) ships in a consumed BOM.microsoft/bitnet-b1.58-2B-4Tsafetensors) is unverified. Proposal: an eval-callback-style probe against HF transformers BF16 (the gemma 8a7f1f1 method), gated like the parity test. Details and the oracle's top-5 at the divergence position are in the committed fixture header.Merge pull request #364 from SKaiNET-developers/feat/bitnet-maturity-…
michalharakal commentedon Aug 31, 2026
E5 (BF16 arbitration) is resolved — and it found a real bug. The HF BF16 reference sided with bitnet.cpp: SKaiNET was the diverging implementation, and the culprit was the RoPE pairing (
INTERLEAVEDinstead of the NEOX-styleSPLIT_HALFbitnet.cpp assigns all three BITNET arches). Fixed in PR #365; with it, SKaiNET, bitnet.cpp, and the BF16 reference agree token-for-token on all 32 greedy tokens of the parity prompt, and the committed fixture now gates on that full equality. Details, culprit-isolation steps, and the one documented dense-head near-tie are in the PR and fixture header.Remaining on this issue: entry-point parity (E3) and dropping the CLI's explicit kernel installs once a BOM containing SKaiNET#1241 is consumed.
michalharakal commentedon Sep 1, 2026
E3 done in PR #371: a real BitNet chat provider (
BitNetChatTemplateper the HF checkpoint's authoritative format — the GGUF's embedded template is a conversion artifact — plusstopTokenStrings()so the loop stops at<|eot_id|>despite the GGUF declaring 128001 as EOS). Verified end-to-end on 2B4T: clean auto-detected chat, correct answer, proper stop.E4's last piece (dropping the CLI's explicit kernel installs) is in PR #370 (the 0.52.1 BOM bump — merge after the engine release publishes). With #370 + #371 merged, everything on this issue is done and it can close.
Merge pull request #371 from SKaiNET-developers/feat/bitnet-chat-support
michalharakal commentedon Sep 2, 2026
Closing — every item is in:
--i2s-layout/--contextknobs: PR test(bitnet): maturity gate — bitnet.cpp parity probe, model-gated smoke row, CLI knobs (#360) #364BitNetChatTemplate+ stop tokens, PR feat(chat): BitNet chat support — correct template, eot_id stop, resolver entry (#360 E3) #371;llm-runtime/kbitnetfacade, PR refactor(bitnet): full #346 conformance — BitNetWeightLoader, RuntimeWeights, kbitnet facade (#359) #363NativeTernary*Kernel.install(...)calls are insideBitNetWeightLoaderTest/BitNetGoldenTokenParityTest, where pinning the kernel under test is intentional.Released in transformers 0.53.0.