--- license: apache-2.0 tasks: - text-generation frameworks: - PyTorch --- # Sophia Sophia 是一个 ~1B 参数的中文对话模型,在单张 RTX 5090(32GB)上从零训练完成:随机初始化预训练 20B tokens → SFT → DPO。完整谱系、评测证据与训练报告随包附带。 ## 规格 | | | |---|---| | 参数量 | 1,012,630,480 | | 架构 | 28 层 dense Hybrid decoder:`[KDA, KDA, KDA, Gated-MLA] × 7`,NoPE | | 上下文 | 4,096 | | 预训练 | 20B tokens,15,259 步,seed 42,BF16 + Muon/AdamW | | 硬件 | 单张 NVIDIA RTX 5090 32GB | ## 特性 - **自适应思考**:`…` 推理草稿是否生成由模型逐轮自行决定(自发率 ~5%)。1B 尺度下 think 在 math/code 上反而扣分(见 `REPORT.md` §3),模型自己学会了什么时候不想 - **人格宪法**:行为规范收敛为独立文件 `configs/sft/sophia_persona.md`——不说"我没有感情"、确定问题第一句给答案、约束逐轮登记 - **诚实评测**:所有结论基于 powered 判定(134 题 × 16 采样 × 配对 t 检验,SE ±1.1);零结果实验(RFT/GRPO/DPO-2)同样如实记录在 `REPORT.md` ## 快速开始 **HuggingFace / transformers**(本仓根目录即 HF remote-code 导出): ```python from transformers import AutoModelForCausalLM, AutoTokenizer tok = AutoTokenizer.from_pretrained("Arain119/sophia", trust_remote_code=True) m = AutoModelForCausalLM.from_pretrained( "Arain119/sophia", dtype="bfloat16", device_map="cuda", trust_remote_code=True ) ids = tok.apply_chat_template( [{"role": "user", "content": "你好"}], add_generation_prompt=True, return_tensors="pt" ).to("cuda") out = m.generate(ids, max_new_tokens=200, temperature=0.7, top_p=0.92, do_sample=True) print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True)) ``` GPU 上建议 `pip install flash-linear-attention>=0.5.2` 启用 KDA 融合内核;未安装时 `kda_backend="auto"` 自动回退 reference 路径(可用,较慢)。`sophia.pt` 与该 safetensors 权重逐位一致。 **原生运行时**(`chat.py` 依赖源码仓 `ml` 包):先取源码(GitHub `Arain119/Sophia` 或 `git clone sophia-1.0.0.bundle`),把本包放进仓库根目录,然后从仓库根目录运行: ```bash python -m ml.cli.chat --checkpoint sophia/sophia.pt # 默认 T=0.7, top-p 0.92 # sophia.json 与 configs/model/sophia.json 相同,默认 --model-spec 已可用 ``` **llama.cpp / GGUF**(本仓 `gguf/` 目录,CPU 即可运行): ```bash # 需要打过 sophia pre-tokenizer 补丁的 llama.cpp(源码仓 tools/gguf/llama_cpp_sophia.patch,约 15 行) llama-cli -m sophia-Q4_K_M.gguf -st -t 8 # 685MB 量化版,自动应用内嵌 chat 模板 llama-server -m sophia-bf16.gguf -c 4096 -t 8 # 2.1GB BF16 版 ``` 与 HF 参考实现的 parity 证据:tokenizer 逐 ID 精确一致(151/151)、teacher-forced logits argmax 一致率 96.7%(全部分歧为 BF16 噪声带内的 near-tie)、chat 模板输出逐字一致。详见 `gguf/README.md` 与源码仓 `docs/gguf_llamacpp.md`。 ## 评测速览 - powered n16 探针(claude-haiku-4-5 判官):judge_mean **51.37**,pass_70 0.352,hit_eos 0.975,distinct4 0.928;相对 SFT 父模型 **+2.10**(t=+3.71, p<0.001),失败模式 flag 全面下降 - 同档对照(同一管线、同一数据、同一判分,无官方公布值混入):SophiaBenchmark 134 题判官分 51.25,高于 Llama3.2-1B(48.09)与 Qwen2.5-0.5B(50.35),同档第 4 - 已知限度:IFEval 12.2%(系统性落后同档基线)、NIAH 62.5% 且随深度衰减、深多轮 judge_mean 27.93 为最弱段、MC 基准(MMLU/CMMLU 似然法)贴近随机——1B 模型对 ABCD 符号有位置先验 - 完整数字、失败样本与机制分析见 `REPORT.md`;逐题明细在源码仓 `ops/eval/public_benchmarks/` ## 训练谱系 ``` pretrain(20B, 契约跑满) → sft(88,267 行 × 3ep, epoch3 选中) → dpo(1,953 对, β=0.1, 500 步) = sophia.pt ├─ rft(104 步, 零结果) 未发布 └─ grpo+dpo2(链式实验, 未过门) 未发布 ``` `lineage.json` 含各阶段 run、checkpoint、数据与种子的完整指针;sha256 见随包 `.sha256` 文件。 ## 文件 - `sophia.pt` + `.sha256` — 交付权重(DPO 后) - `sophia_sft.pt` + `.sha256` — SFT 父基线(备查/回滚) - `sophia_base.pt` + `.sha256` — 预训练末态(20B tokens,15,259 步),供自行 SFT/对齐 - `sophia.json` — 模型配置(semantic hash `c605697c…`) - `chat.py` — 本地对话入口(依赖仓库 `ml` 包) - `REPORT.md` — 训练/评测/限制全记录 - `lineage.json` — pretrain → sft → dpo 完整谱系 - `eval/` — powered 探针逐样本判分(134 题 × 16 样本 × 2 模型)与 30 段 6 轮真实对话样本包 - `sophia-1.0.0.bundle` — 源码单提交导出,`git clone sophia-1.0.0.bundle` 即可取回全部代码 ## 获取渠道 - 源码:GitHub `Arain119/Sophia`,或随包 `sophia-1.0.0.bundle` - 权重:ModelScope `Arain119/sophia`(本仓)或 sophia.org.cn/download/ - 训练数据:ModelScope `Arain119/Sophia-dataset`(`pretrain/` token 分片 + `corpus/` SFT 语料) ## 运行环境 Python 3.12 + PyTorch(见源码仓 `requirements.txt`)。GPU 上走 FLA 后端;纯 CPU 也可推理(`load_policy(device="cpu")`,慢)。 ## 许可证 模型权重与代码 Apache License 2.0。训练数据见 `Arain119/Sophia-dataset`:`corpus/` 为 Apache-2.0;`pretrain/` 上游含非商用研究来源,使用限制以其 `lineage/` 与 README 为准。 `` 输出为生成文本,不保证忠实反映内部推理过程。