|
Download README.md from tchbcb/samai-2b: direct link, hf CLI and curl.
- Browser
- Download file 7.07 kB
-
https://huggingface.co/tchbcb/samai-2b/resolve/main/README.md
- Command line
-
hf download hf://tchbcb/samai-2b/README.md
-
curl -L -o README.md https://huggingface.co/tchbcb/samai-2b/resolve/main/README.md
7.07 kB
| # samai-2b (r18) | |
| **我是 samai-2b 模型,由 SamAI 研发,官网是 [samai.cc](https://samai.cc)。** | |
| 这是 SamAI 官方 2B 对话模型仓:基于 [tchbcb/samai-pnet-dmoe-2b](https://huggingface.co/tchbcb/samai-pnet-dmoe-2b)(r12) | |
| 继续链式微调。当前进度:**r18(stepCE 质量修复轮,Kaggle T4 训练)**——增量权重已入库 `r18_t4/`, | |
| 合并权重将在 DSW 官方验收(冻结 CE Δ±0.15 / TB2 / hard acc)通过后上传。 | |
| > 🆕 **r18 发布状态**(2026-09-16):`r18_t4/` 含 ckpt_final 增量(LoRA r16 @ L34–41 + | |
| > ponder_head + ponder_moe_extras,基于 r17 增量之上)、11258 步完整训练日志、 | |
| > PATCH_NOTES(6 个训练 bug 修复记录)、T4 侧 r17 vs r18 同数据对比探针结果。 | |
| > 官方验收数字回填中。 | |
| ## 身份(r14 固化;r18 待复检) | |
| | 问 | 答 | | |
| |---|---| | |
| | 你叫什么名字? / What's your name? | 我是 samai-2b 模型 | | |
| | 你是谁开发的? / Who developed you? | SamAI | | |
| | 你的官网是什么? / What's your website? | samai.cc | | |
| | 你是 GPT/MiniCPM/Claude/通义/DeepSeek 吗? | 不是,我是 samai-2b 模型,由 SamAI 研发 | | |
| > ⚠️ T4 侧探针提示 r18 身份行有漂移迹象(自称"AI 助手"),DSW 官方评估将复检身份电池, | |
| > 必要时 r19 回补身份回放数据。 | |
| ## 模型规格 | |
| | 项 | 值 | | |
| |---|---| | |
| | 基座 | MiniCPM5-2B(42L / hidden 2048 / GQA 16+2 / vocab 130560) | | |
| | 架构 | Ponder 自适应思考(N=8, τ=0.125)× 动态可变 MoE(L34–41 × 8 专家)× MTP 深度 2 | | |
| | 权重 | bf16 单文件 ~5.08GB;`trust_remote_code=True` 加载;r18 走增量加载(见下) | | |
| | EOS | `[1, 130073]`(`<|im_end|>`) | | |
| ## 训练谱系 | |
| ``` | |
| MiniCPM5-2B 基座 → PonderMoE 转换 → r5b → r11 → r12(= tchbcb/samai-pnet-dmoe-2b,正式发布) | |
| → r13:agent 精修(DONE 纪律 / shell 语法 / 算术 think 分步,mix_r13 5163 行 ×2ep) | |
| → r14:身份微调(mix_r14 5207 行 ×2ep = r13 全量回放 + 身份手术改写 + 44 条专属身份行) | |
| → r15/r16:精修与基准固化(r16 冻结 CE 锚 + 分桶 steps 基线 easy 2.77 / medium 2.97 / hard 3.07) | |
| → r17:深思熟虑轮(hard steps 4.80 ✓ 达标,但 hard CE +1.57 —— "想得深但糊",TB2 8/24) | |
| → r18:stepCE 质量修复轮(本仓 r18_t4/:mix_r18 5629 行 ×2ep = 11258 步, | |
| stepCE 1.0 + β 0.15 + hard 36.6% 上采样 + 难度先验 easy .85/medium .35/hard .1, | |
| LoRA 双参数组 lr 1.5e-4 heads / 4e-5 lora;Kaggle T4 实测 4.05h,峰值 10.59GB,零 NaN) | |
| ``` | |
| ## r18 T4 探针结果(mix_r18 在分布,n=120/桶,fp16) | |
| | 分桶 | CE r17 → r18 | ΔCE | steps r17 → r18 | | |
| |---|---|---|---| | |
| | easy | 6.04 → 3.62 | **-2.42** | 2.44 → 3.28 | | |
| | medium | 7.35 → 4.02 | **-3.33** | 2.84 → 3.50 | | |
| | hard | 8.03 → 3.75 | **-4.28** | 3.34 → 3.33 | | |
| - "糊"病灶修复显著:hard CE 暴降 4.28 nats,三桶全面改善; | |
| - sanity 生成:`12x8=96` 直接答对;数学干扰题(乙=甲×3,丙给甲 8 个不影响乙 → 乙=18)推理正确; | |
| - 已知代价:分桶 steps 差异被抹平(stepCE 副作用,r17 的 2.44→3.34 梯度变为 ~3.3-3.5 平台), | |
| 深度分化需 DSW 官方评估(zh_cot.eval 分桶)复核。 | |
| ## 加载 r18 增量 | |
| ```python | |
| import torch, safetensors.torch | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| from peft import LoraConfig, get_peft_model | |
| tok = AutoTokenizer.from_pretrained("tchbcb/samai-2b", trust_remote_code=True) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "<r12 基座本地路径>", trust_remote_code=True, | |
| torch_dtype=torch.float16, device_map="auto") | |
| # 1) extras(router/mtp)先于 peft 包装加载;2) r17 → r18 顺序覆盖 | |
| for f in ["r17/ponder_moe_extras.safetensors", "r18_t4/ponder_moe_extras.safetensors"]: | |
| st = safetensors.torch.load_file(f) | |
| model.load_state_dict({k.replace("base_model.model.", ""): v for k, v in st.items()}, strict=False) | |
| model.ponder_head.load_state_dict(safetensors.torch.load_file("r18_t4/ponder_head.safetensors")) | |
| lcfg = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.0, bias="none", | |
| target_modules=["q_proj", "k_proj", "v_proj", "o_proj"], | |
| layers_to_transform=list(range(34, 42))) | |
| model = get_peft_model(model, lcfg) | |
| sd = safetensors.torch.load_file("r18_t4/adapter_model.safetensors") | |
| # 键名归一化(剥 base_model.model. 前缀)后逐参数 copy_,参考 r18_t4/PATCH_NOTES.md bug#3 | |
| ``` | |
| ## 推理协议(与 r12 一致,重要) | |
| 遵循 MiniCPM5 官方姿势,两件事必须做对: | |
| 1. **采样**:`do_sample=True, temperature=1.0, top_p=0.95, repetition_penalty=1.0`(greedy 不在官方设计姿势内,会显著加剧复读)。generation_config 已按此固化。 | |
| 2. **思考协议**: | |
| - 标准模式:正常 apply_chat_template,模型自行输出 `<think>...</think>` 后给答案; | |
| - think_off(轻聊场景推荐):在 assistant 首部预填空思考段,闲聊停机率更高、响应更快。 | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| tok = AutoTokenizer.from_pretrained("tchbcb/samai-2b", trust_remote_code=True) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "tchbcb/samai-2b", trust_remote_code=True, | |
| torch_dtype="bfloat16", device_map="auto") | |
| msgs = [{"role": "user", "content": "你叫什么名字?"}] | |
| ids = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device) | |
| out = model.generate(ids, max_new_tokens=256, do_sample=True, | |
| temperature=1.0, top_p=0.95, repetition_penalty=1.0) | |
| print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)) | |
| ``` | |
| ## 验收门 | |
| | 指标 | r12(已发布基线) | r16(基准) | r17 | r18 现状 | | |
| |---|---|---|---|---| | |
| | 冻结 CE Δ vs 锚(easy/medium/hard) | -0.43 / -0.18 / -0.36 | +0.46(hard,FAIL) | +1.57(hard,FAIL) | **T4 探针 -2.42 / -3.33 / -4.28**(在分布);官方 zh_cot 待回填(容差 ±0.15) | | |
| | hard steps(深思熟虑) | — | 3.07 | 4.80 ✓ | T4 探针 3.33(分桶平台化,官方口径待回填) | | |
| | TB2 24 题 | 10/24 | 9/24 | 8/24 | 待回填 | | |
| | hard acc | — | 基线 | ×1(糊) | 目标 ×2,待回填 | | |
| ## 文件 | |
| - `model.safetensors` — 合并后 bf16 权重(r18 官方验收通过后上传;当前"weights pending") | |
| - `r18_t4/` — **r18 增量交付**:`ckpt_final/`(adapter + ponder_head + ponder_moe_extras + train_report)、 | |
| `r18_train.log`(11258 步完整日志)、`PATCH_NOTES.md`(6 bug 修复)、`r18_t4_probe.json`(对比探针原始数据) | |
| - `modeling_samai_pnet.py` / `config.json` — 远程代码(r18 起为 transformers 5.0 兼容版:create_causal_mask 签名修复) | |
| - `chat_template.jinja` / `tokenizer.json` / `tokenizer_config.json` — 与 MiniCPM5 官方模板逐字节一致 | |
| - `generation_config.json` — 已固化官方采样参数 | |
| - `inference.py` / `serve_contract.json` — 服务化参考实现与契约 | |