SauravMahalik/MiniCPM5-2B-Claude-Fable5
MiniCPM5-2B-Claude-Fable5
Agent-style chat model obtained by LoRA fine-tuning openbmb/MiniCPM5-2B (2.57B parameters, Llama architecture, 130,560-token vocabulary) on agent traces from saidutta69/fable-5-premium-v2 (openai_chat config), distilled from Claude Fable-5 and other frontier models. LoRA adapters (50.2M parameters, 1.96%) are merged into fp16 weights below, so the model loads and serves like any standard causal LM - no PEFT code required.
The chat template is Qwen3-style (<|im_start|>/<|im_end|>, with an empty <think></think> block on assistant turns) and ships with the tokenizer.
Intended uses and limitations
Intended for research and prototyping of tool-using conversational agents: multi-step instruction following, function/tool calling, and agentic dialogue in English and Chinese.
Out of scope: high-stakes decisions (medical, legal, financial), unsupervised autonomous actions, and any use as a source of factual truth - like all models distilled from frontier traces, it can hallucinate tools, arguments, and facts. Training saw truncated contexts (see below), so very long agentic episodes exceed what was trained. Safety alignment is inherited from the base model and the distilled data only; no dedicated red-teaming was performed.
Training data
- Source:
saidutta69/fable-5-premium-v2,openai_chatconfig only (agent_tracesholds the same traces and was excluded to avoid double-training). - Selection: quality-tiered by
quality_scores.overall(>= 0.98 first, then >= 0.9), token-budgeted to ~34M training tokens: 50,241 train / 347 validation conversations. - Preprocessing: OpenAI
tool_callswith stringargumentsnormalized to dicts; malformed rows dropped; a trailing system message renders as user. - Loss is computed on assistant turns only (user/system/tool tokens masked); long traces are prefix-truncated to 2048 tokens at segment boundaries.
Training procedure
Evaluation
Held-out validation loss (347 conversations, assistant tokens only):
Loss falls monotonically with no sign of overfitting. No downstream benchmarks were run; the numbers above are the complete evaluation record for this release.
Usage
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained('SauravMahalik/MiniCPM5-2B-Claude-Fable5')
model = AutoModelForCausalLM.from_pretrained(
'SauravMahalik/MiniCPM5-2B-Claude-Fable5', torch_dtype='auto', device_map='auto')
messages = [{'role': 'user', 'content': 'Write a haiku about GPUs.'}]
ids = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors='pt').to(model.device)
out = model.generate(ids, max_new_tokens=256)
print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=False))Provenance
- Base weights:
openbmb/MiniCPM5-2B(see its model page for license/terms). - Fine-tuning data:
saidutta69/fable-5-premium-v2. - Trained in a single Kaggle 2xT4 session; run log verified: 2,542 steps, both weight shards SHA-256-checked on upload.
