deburky's picture
Restore model card with evaluation results
eddbb4e verified
|
Raw History Blame Contribute Delete
3.13 kB
---
base_model: thinkingmachines/Inkling-Small
library_name: peft
tags:
- tinker
- peft
- lora
- base_model:adapter:thinkingmachines/Inkling-Small
tinker_path: tinker://0e3342b7-6f34-5a67-9009-f94aad6ae787:train:0/sampler_weights/claude-code-r32
---
# Inkling-Small LoRA: claude-code
Rank-32 LoRA adapter for [`thinkingmachines/Inkling-Small`](https://huggingface.co/thinkingmachines/Inkling-Small),
trained on Tinker from [`deburky/gpt-oss-claude-code`](https://huggingface.co/datasets/deburky/gpt-oss-claude-code).
## Training
| | |
| --- | --- |
| Base | `thinkingmachines/Inkling-Small` (276B total / 12B active MoE) |
| Method | LoRA, rank 32, alpha 32, `target_modules: all-linear` |
| Modules | attention + MoE expert MLPs (`train_mlp=True`) |
| Optimizer | Adam, lr 1e-4, 2 epochs, batch 8 |
| Data | 284 train / 71 validation chat records |
| Platform | Tinker |
Held-out loss went from **1.5374** (base) to **0.7486**.
The source dataset is in gpt-oss harmony format with tool calls encoded as JSON
inside the final channel. It was parsed back to structured messages and
re-rendered with Inkling's renderer, converting those to native tool calls.
## Usage
```python
from peft import PeftModel
from transformers import AutoModelForCausalLM
base = AutoModelForCausalLM.from_pretrained("thinkingmachines/Inkling-Small")
model = PeftModel.from_pretrained(base, "deburky/inkling-small-claude-code")
```
Serving with vLLM, which supports MoE expert LoRA via `FusedMoEWithLoRA`:
```bash
vllm serve thinkingmachines/Inkling-Small-NVFP4 \
--enable-lora \
--lora-modules claude-code=deburky/inkling-small-claude-code \
--max-lora-rank 32
```
The adapter uses the "shared-outer" MoE layout: `w1`/`w3` `lora_A` and `w2`
`lora_B` are stored once with expert-dim 1, the rest per-expert across 256
experts.
## Honest evaluation
Held-out loss more than halved, but **this adapter does not beat the base model
on behaviour**, and it is not recommended over base for agentic use.
Scored in real Claude Code sessions (3 tasks x 6 repeats, tool access, checkable
ground truth):
| Model | Held-out loss | Agentic (n=18) |
| --- | --- | --- |
| base `Inkling-Small` | 1.5374 | 18/18 |
| this adapter | 0.7486 | 18/18 |
| attention-only variant | 0.8175 | 12/18 |
On a harder multi-step task (discover files, read several, judge a bug) the
adapter needed 2-3x the turns and wall-clock of base, dropped the `file:line`
citations base gives consistently, and confabulated a path outside the repo in
one run of three.
The base model already handled tool calling and prose style well, so most of the
loss reduction reflects fitting the corpus's phrasing rather than new capability.
## Size
7.9 GB in F32, because `train_mlp=True` puts a LoRA pair on all 256 experts per
layer: 96% of the bytes are expert MLPs, 2% attention. An attention-only variant
is 185 MB but scores worse (12/18 above). Casting to bf16 would roughly halve
this file.
Note the asymmetry: the adapter is 8 GB, but the base it attaches to is 532 GB in
BF16. Serving realistically means a quantized base (`Inkling-Small-NVFP4` at
171 GB) on multi-GPU.