Colab T4 path, fixture unlock
The trainer internals are already written. Your job is the payload — which base, which method, which split, who reviewed — and the receipt that records whether the run was live or a fixture.
The notebook lives in-repo at specialist-adapter-receipt/train_specialist_adapter.ipynb. Cells, in order:
- Load Qwen2.5-1.5B-Instruct in 4-bit (bitsandbytes). A 0.5–3B Instruct sibling is in-class if the T4 refuses 1.5B.
- Attach a LoRA adapter with PEFT (
r8 or 16, typical targetsq_proj/v_proj). - Run TRL
SFTTraineron the reviewed jsonl. - Save
adapter/(or a pointer file if Colab ephemeral storage is gone). - Write the train receipt: base id, method
qlora, step count, whether this waslive-t4orfixture.
Unlock in this browser lab: a payload that would be legal to train, plus a receipt the eval lesson can score. Free-tier may attach the fixture receipt checked into specialist-adapter-receipt/. Stretch is a live T4 run using the badge above.
CI does not execute the notebook. There is no GPU on the GitHub runner. The notebook cells start with PROMPTDOJO_SKIP_GPU_CI so a future notebook job can skip them on purpose.
In plain English, the libraries do this:
| name | what it does here |
|---|---|
| bitsandbytes | loads the 1.5B weights in 4-bit so a T4 has room |
| PEFT / LoRA | trains a small adapter instead of every weight |
| QLoRA | the combination: 4-bit base + LoRA |
TRL SFTTrainer | supervised fine-tune loop over instruction pairs |
| adapter | the file you deploy; the base stays shared |
You do not re-derive those internals to pass. You do name them correctly in the payload, and you do refuse a payload that skips review or splits by row.