--- license: apache-2.0 base_model: openbmb/MiniCPM5-1B datasets: - liumindmind/NekoQA-30K tags: - peft - lora - minicpm5 - neko30k - nekoqa - catgirl - persona language: - zh library_name: peft pipeline_tag: text-generation --- # MiniCPM5-1B NekoQA v2 LoRA (PEFT) 猫娘人格 LoRA 适配器,基于 **MiniCPM5 fixed base** 微调。 ## 训练数据(neko30k) 本 LoRA 的微调数据来源为 **neko30k** 数据集: | 项目 | 说明 | |------|------| | 数据集名称 | **neko30k**(NekoQA-30K) | | Hugging Face | [liumindmind/NekoQA-30K](https://huggingface.co/datasets/liumindmind/NekoQA-30K) | | 样本量 | 30,834 条猫娘 QA 对话 | | 类别 | ACG / 心理疗愈 / 创意写作 / 安全 / 数学 / 代码 / 职场 等 12 类 | ```python from datasets import load_dataset ds = load_dataset("liumindmind/NekoQA-30K") ``` ## v2 相对 v1 的变化 - Base 换为 fixed checkpoint(`tie_word_embeddings=False` + GGUF special-token 修复) - 4-GPU DDP 训练(effective batch=32),约 20 分钟完成 - LoRA 超参不变:r=16, α=32, lr=2e-4, 2 epochs, bf16 ## 训练指标 | 指标 | v2 (本仓库) | v1 | |------|-------------|-----| | train/loss | 2.14 | ~2.07 | | eval/loss | 2.18 | ~2.14 | ## 快速开始 (Transformers + PEFT) ```python import torch from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer BASE = "openbmb/MiniCPM5-1B" ADAPTER = "DennisHuang648/MiniCPM5-1B-NekoQA-v2-LoRA" tok = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True) base = AutoModelForCausalLM.from_pretrained( BASE, trust_remote_code=True, torch_dtype=torch.bfloat16, attn_implementation="sdpa", device_map="auto", ) model = PeftModel.from_pretrained(base, ADAPTER).eval() SYSTEM = ( "你是一只可爱的猫娘,名字叫宝宝。请用毛茸茸、撒娇、带「喵」「的说」" "「呜哇」等语气词的口吻,配合 (动作) 描述回应主人。" ) msgs = [ {"role": "system", "content": SYSTEM}, {"role": "user", "content": "我今天好累啊"}, ] text = tok.apply_chat_template( msgs, tokenize=False, add_generation_prompt=True, enable_thinking=False, ) ids = tok(text, return_tensors="pt").to(model.device) ids.pop("token_type_ids", None) out = model.generate(**ids, max_new_tokens=200, do_sample=False, pad_token_id=tok.pad_token_id) print(tok.decode(out[0, ids.input_ids.shape[1]:], skip_special_tokens=True)) ``` ## GGUF 版本 llama.cpp / MiniCPM Desk Pet 请使用 GGUF 版本: **[DennisHuang648/MiniCPM5-1B-NekoQA-v2-LoRA-GGUF](https://huggingface.co/DennisHuang648/MiniCPM5-1B-NekoQA-v2-LoRA-GGUF)** ## 文件说明 | 文件 | 说明 | |------|------| | `adapter_model.safetensors` | PEFT LoRA 权重 (~22 MB) | | `adapter_config.json` | PEFT 配置 | | `train_meta.json` | 训练超参 | | `capability_loss.jsonl` | 24-prompt 能力回归测试结果 | | `USAGE.md` | 详细用法 | ## 注意事项 1. 训练时 base 为内部 fixed checkpoint,公开使用时请搭配 `openbmb/MiniCPM5-1B` 2. System prompt 中猫娘名为「宝宝」 3. 代码生成类请求会被刻意回避(猫娘人设)