--- base_model: openbmb/MiniCPM5-2B library_name: peft license: apache-2.0 pipeline_tag: text-generation tags: - lora - peft - open-jev - classification - logprob - minicpm - adapters datasets: - ZefanCai/Open-Jev-v1.1 --- # Open-Jev Phase-1 LoRA — MiniCPM5-2B PEFT LoRA adapter for [openbmb/MiniCPM5-2B](https://huggingface.co/openbmb/MiniCPM5-2B), fine-tuned for **closed-set first-token scoring** on Open-Jev Choice / Noul / Score fields (Bev/Jev-style: one forward pass, candidate-token logits; not free-form generation). ## Results (frozen panel, never in train) | Slice | Metric | Zero-shot | This LoRA | Δ | |-------|--------|-----------|-----------|---| | Test n=900 | overall accuracy | 0.467 | **0.702** | +23.6 pp | | Test | Noul recall | 0.118 | **0.735** | +61.8 pp | | OOD n=300 | overall accuracy | 0.473 | **0.710** | +23.7 pp | Scorekeeper planted gold; see local `results/openjev-phase1/RUN_CARD.md` for full tables. ## Recipe - **Base:** `openbmb/MiniCPM5-2B` - **Train:** stratified Open-Jev subset, n=6000 (2000 Choice / 2000 Noul / 2000 Score); dataset rev `10ad6888333fa97f8c948192797bad3de3040802` - **Objective:** causal LM loss **only** on the gold index-surrogate token after `Answer: ` - **LoRA:** r=16, α=32, dropout=0.05; targets `q/k/v/o/gate/up/down_proj` - **Train:** 1 epoch, lr=2e-4, effective batch 16, max length 2048, bfloat16 - **Hardware:** Modal A10G (~59.5 min wall, ~15.2 GB peak VRAM) - **Seed:** 20260924 ## Load ```python from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel base_id = "openbmb/MiniCPM5-2B" adapter_id = "nicolasembleton/openjev-minicpm5-2b-lora-phase1" tok = AutoTokenizer.from_pretrained(base_id, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(base_id, trust_remote_code=True, torch_dtype="auto") model = PeftModel.from_pretrained(model, adapter_id) ``` For Open-Jev TypeSafe-compatible scoring, point `OPENJEV_ADAPTER_PATH` at this adapter (or a local checkout) on top of the same base. ## Browser / WebGPU note This repo is the **PEFT adapter only**. In-browser Transformers.js needs a **merged** weights export (and ideally quantized ONNX). That path is separate from this Hub upload. ## Intended use Research and demos of closed-set Choice / Noul / Score scoring on Open-Jev-style prompts. Not a general chat model. Do not treat closed-menu argmax as ground truth without an external scorekeeper. ## License Adapter weights follow the base model license terms for derivatives of MiniCPM5-2B (Apache-2.0 style redistribution where permitted by the base). Training data: Open-Jev v1.1.