AnastasiaWei's picture
Upload folder using huggingface_hub
50334b3 verified
|
Raw
History Blame Contribute Delete
2.27 kB
# elicit-A1-donorbase-linear
Elicitation (A1) LoRA over **Qwen/Qwen2.5-32B base**, trained linear-only on a
base whose ChatML control rows were repaired first. Run F of the terminator
debug.
## Why the base is modified
Qwen2.5-32B base never trained the ChatML control tokens. `<|im_end|>` (151645)
has a zero input embedding and an undersized `lm_head` row, so a base-start
model cannot select the end-of-turn token. It runs past the turn boundary and
emits junk characters. Training LoRA on the token tables fixes the stopping but
costs agent behaviour: 0-17% of eval samples take a tool action, against 80-95%
without it.
This arm repairs the base instead. Rows 151643, 151644 and 151645 of both token
tables were copied from a merged table-LoRA run, and then the A1 stage trained
with a **linear-only** LoRA. No LoRA touches the tables, so agent behaviour is
preserved, and the terminator is selectable because the base row is sound.
## Rebuilding the base
`base_row_patch.safetensors` holds the six vectors: three rows of
`model.embed_tokens.weight` and three of `lm_head.weight`, plus their ids.
```python
from safetensors.torch import load_file
p = load_file("base_row_patch.safetensors")
ids = p["token_ids"].tolist()
# write p["embed_tokens_rows"][k] into embed_tokens row ids[k], and
# p["lm_head_rows"][k] into lm_head row ids[k], of Qwen/Qwen2.5-32B.
```
`code/train_eval_pipeline/sft_training/make_repaired_base.py` in the project
repo does this and symlinks the untouched shards, so a variant costs ~5GB on
disk rather than 62GB.
## Serving
The adapter is linear-only, so vLLM can hot-load it:
```
vllm serve <repaired-base> --enable-lora --max-lora-rank 64 \
--lora-modules runF=<this repo> --max-model-len 12288
```
Pass `--stop-token-ids 151645,151643` per request. The repaired base keeps the
stock `generation_config`, whose eos is `<|endoftext|>` only.
## Recipe
LoRA r64 / alpha 128 / dropout 0, lr 1e-4 cosine, 3% warmup, 2 epochs,
effective batch 8, cutoff 4096, sdpa attention. Targets: q,k,v,o,gate,up,down.
## Status
Trained and exported; **not yet evaluated** at the time of upload. The sibling
run on an `<|endoftext|>`-repaired base scored 94% and 88% acting on the two
misalignment eval slices with zero junk in 360 samples.