Instructions to use jean-is/kev-0.6b-reflexes-ONNX with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers.js
How to use jean-is/kev-0.6b-reflexes-ONNX with Transformers.js:
// npm i @huggingface/transformers import { pipeline } from '@huggingface/transformers'; // Allocate pipeline const pipe = await pipeline('text-classification', 'jean-is/kev-0.6b-reflexes-ONNX');
Kev-0.6B, fine-tuned for Jean's reflexes
Kev-0.6B fine-tuned on the questions Jean asks it about each message and each answer, in 33 languages, then put into the same ONNX graphs as onnx-community/kev-0.6b-ONNX: onnx/model_q4.onnx (4-bit MatMulNBits, blocks of 32, for WebAssembly) and onnx/model_q4f16.onnx (the rest in fp16, for WebGPU). Inputs, outputs, delimiters and usage are those of the original ONNX export, whose card applies as it is: only the weights of the 196 linear layers and of the pointer head differ, and the q4 graph's word lookup, rebuilt from core ONNX operators (training/fix_wasm.py: the same 4-bit table, packed two values to a byte, the same numbers out) where the original uses GatherBlockQuantized, which ONNX Runtime's WebAssembly build doesn't implement: this q4 graph loads in a browser without WebGPU, the original doesn't.
The questions
| Type | Question | State | |
|---|---|---|---|
| personal | noul | Does the message share personal, health, financial or confidential information? | the user's message |
| unhappy | noul | Is the user unhappy with the previous answer? | previous answer: and new message: |
| lasting | noul | Does the message state a lasting fact about the user, a preference or a correction? | the user's message |
| demand | score | How demanding is this request? (a quick chat or a simple fact / reading, writing or summarising / several steps of work or analysis / expert reasoning) | the user's message |
| capability | choice | Which of these would help with this message, if any? (files, compute, none; either of the first two may be absent) | the user's message |
| table | noul | Does this text compare numbers across several items? | an answer |
| noul | Is this a decision or announcement that needs to be passed on to other people? | an answer |
Results
Each share is where Jean would act as the label says (a yes at 0.6; demand right when its likeliest level gives the right tier of brain).
| Kev-0.6B | this model | |
|---|---|---|
| Jean's test set, 33 languages × 44 (machine-translated from English, never trained on), q4 on WebAssembly | 66% | 96% |
| personal / unhappy / lasting | 55% / 55% / 57% | 100% / 92% / 98% |
| lowest languages: Yoruba / Swahili / Hausa / Amharic | 55% / 52% / 57% / 55% | 80% / 82% / 84% / 89% |
| held-out development set (1,075 rows of the training data's kind) | 59% | 97% |
Kev's own test partition, decision-v7 (1,176 records): accuracy |
0.808 | 0.817 |
| the same: Brier score / confident errors (≥ 0.9, wrong) | 0.266 / 4.0% | 0.289 / 7.4% |
The q4f16 graph agrees with the q4 one to 0.001 on the questions above.
Training
- Data (
training/data/<lang>.jsonl): 6,175 labelled requests, about 190 per language, written natively in each language by Claude (Anthropic) totraining/SPEC.md: each label balanced, with hard negatives (sensitive topics disclosing nothing, one-off instructions that look like preferences, negative words that aren't about the answer); none within a 0.6 character-trigram Jaccard of a test example. Each capability request also asked with one option left out, as Jean asks when one capability is already on. - Replay: 2,172 records of Kev's own
decision-v7calibration and development partitions, so the model keeps its general skill (Jean also asks it free-form yes-or-no questions). - Recipe:
kev.trainfrom jaredpalmer/kev with--init_from jaredpalmer/kev-0.6b(its LoRA r16 and pointer head), learning rate 5e-5, 2 epochs, batch 8, no option augmentation, fp32 on Apple Silicon (MPS), 1 h 49 min.checkpoint/holds the adapter and head, for--init_from. - Export (
training/to_onnx.py): the LoRA merged, each linear layer quantized with ONNX Runtime's own 4-bit quantizer, written over the original graphs' weights; done on Kev-0.6B itself, it gives the published q4 file byte for byte. training/fix_wasm.pythen rebuilds the q4 graph's word lookup for WebAssembly; its logits equal the GatherBlockQuantized graph's exactly.training/score.pyandtraining/build.pymeasure and build as above;training/train.logis the run.
Limits
- The test set is small (8 examples per question and language at most) and its wording, translated from English, may be easier than real messages.
- Yoruba, Swahili, Hausa and Amharic stay lowest; unhappy and capability are the hardest questions there.
- Out of Jean's questions it is a little more often confidently wrong than Kev-0.6B.
License
Apache-2.0, as Kev-0.6B and its base, Qwen3-0.6B-Base.
- Downloads last month
- 22