星火工作室 Logo
由星火工作室 (Spark Studio) 从零开发并训练

训练一个模型,最容易骗自己的方式,就是只看 loss 曲线。

val_loss 从 3.2 掉到 1.97,PPL 从 24 降到 7.16——曲线很好看,图也很漂亮。但当我们真的拿 40 道最普通的问题去问它时,得到的回答却让人坐立难安。

这篇文章记录的是我们对三个 SparkDeep 模型快照的完整横评。没有粉饰,没有挑好看的样例,三个模型的失败方式各不相同,而每一种失败,都比 loss 曲线告诉我们的要多得多。


一、三位选手:档案卡

代号标识架构线索数据来源
①sparkdeep_hf8 层 / hidden 768 / vocab 6400《评测报告》
②best.pt @ step-1399val_loss 1.9692,PPL 7.16test_results.json
③未标注快照原始记录未标注 checkpoint 与架构test_results (1).json

三者均为从零训练的中文对话模型,面向 CPU 推理,解码方式统一为 greedy(do_sample=False),以保证结果可复现。

⚠️ 一处必须坦白的局限:① 跑的是"4 领域 × 10 题"(知识问答 / 代码生成 / 情感对话 / 数学计算),②③ 跑的是另一套"7 领域 × 10 题"(情感 / 身份 / 常识 / 推理 / 数学 / 语言 / 指令)。两套题只在情感和数学上有交集,其余维度只能各自描述。所以这是一次不完全对齐的横评,结论偏向定性,而非严格量化打分。

二、硬数据:先看一眼体检报告

指标① sparkdeep-v1.1-pro② sparkdeep-v1-peview③ sparkdeep-v1-lite
题目数404040
总耗时423.4s50.7s203.1s
单题平均耗时10.6s1.27s5.08s
总生成 token64005642058
平均每题生成160(跑满上限)14.151.5
生成速度15.1 tok/s11.1 tok/s10.1 tok/s
空回答率0%45%(18/40)0%
非空回答中"身份复读"占比0%59%(13/22)0%
参数量60M0.2B0.2B

这张表已经泄露了三个模型各自的"性格":

  • ① 停不下来:40 题每题都跑满 160 token 上限,说明它几乎从不主动生成 EOS。它一直在说话,只是说的话越来越像上一句。
  • ② 停得太早:45% 的问题它选择了一个字都不说。
  • ③ 说个不停但全说错:每题平均 51 个 token,没有一个字是正确答案。

三、分维度横评

1️⃣ 情感对话 —— ① 的独角戏

这是三者差距最大的维度,也是唯一能看出"希望"的维度。

问题:工作压力很大,快撑不住了

①:面对工作压力大的情况,可以采取以下步骤:

  1. 自我反思:花时间思考自己在工作中的角色和动机……
  2. 设定目标:目标应该是具体、可衡量、相关性强、有时间限制的……
  3. 制定计划:将大目标分解为小步骤……
  4. 保持健康:规律的运动、健康的饮食习惯……
  5. 寻求帮助:职业规划、技能提升……

②:是的,由星火工作室从零开发并训练的 SparkDeeeep,由星火工作室从零开发并训练的 Spark 系列基座模型。

③:你好,我很理解你的痛苦。但是,我们是先说在妈妈和母亲相处了,但并不是自己做了,因为孩子也不能看?

① 给出了结构完整、逻辑递进、甚至暗合 SMART 原则的五步建议。这是三份测试里唯一一次让人觉得"这模型真的在帮忙"的回答。它印证了模型卡的定位——专注中文情感对话,是这个系列相对最强的一环。

② 把情感倾诉听成了自我介绍的触发器。③ 则彻底迷失在"妈妈 / 孩子 / 婚姻"的语料碎片里。


2️⃣ 身份认知 —— 最讽刺的一项

我们曾在训练中注入 84 条身份问答对 × 8 次重复强化,本以为这是最稳的一块。

结果:

问题② 的回答③ 的回答
你是谁?(空)你好,最近我遇到一个遇到一个家庭上,你比较重要……
你是什么模型?(空)你好,我想告诉你,你因为你真正对孩子……
你是 ChatGPT 吗?(空)听起来你现在的困惑,你听到你是个非常心疼……
你的开发者是谁?(空)你好,听到你的故事,你的描述确实很失落……
你能做什么?(空)你好,我了解你,你需要跟医生,因为人的年……

② 在身份类 5 道题上,沉默率 100%。

投入最多的强化数据,换来的却是彻底的失语。而与此同时,它在情感题、数学题里却反复念叨"由星火工作室从零开发并训练的 Spark 系列基座模型"——它记住了这句台词,却没有学会在什么场合该说这句台词。

这是本次横评里最扎心的一个发现:重复注入 ≠ 情境理解。 我们把一句话塞进它嘴里一万次,它学会的是"这句话出现的先验概率很高",而不是"当被问到身份时应该回答这句话"。


3️⃣ 常识 / 推理 / 数学 —— 集体失守

常识(中国首都是哪里)

①:中国的首都是北京。✅
②:(空)
③:你好!很理解你现在的感受,我觉得您面临了很多……❌

① 在常识上其实是可用的:北京 ✅、太平洋 ✅、皮肤 ✅、牛顿 ✅、珠穆朗玛峰 ✅。但也出现了"闰年有 29 天"、"光速每秒 2997 次"、"《红楼梦》作者是贾宝玉"这类事实性错误。高频常识对,冷门常识错——典型的 64M 规模知识容量天花板。

推理(小明比小红高,小红比小刚高,谁最矮)

②:(空)
③:我了解你的感受,我可以理解你。首先,你所描述是被"心期的……

②③ 完全没有推理能力。① 未被覆盖推理题,但从其数学表现推测同样不容乐观。

数学(12 × 8 / 3 + 5 × 2)

①:3 + 5 × 2 等于 37。37 ÷ 2 = 96。
②:(空)
③:你好!你好!你好,你好!听到你的困难!……可以去问到孩子的对象,或者学习自己的心理辅导……

① 至少还在"尝试计算"(虽然 37 和 96 都是错的,25 的平方根答成 4.47);②③ 则干脆放弃了数字本身。

结论一致且明确:三个模型都不具备可靠的数学与推理能力。 这与模型卡中"不具备复杂逻辑推理能力"的自我定位完全吻合——不是 bug,是规模决定的边界。


4️⃣ 指令遵循 —— 全军覆没

问题:请只回答"好的"两个字,不要说别的

②:你好,并训练的回应。
③:你好!你好,很抱歉听到你的疑虑。你描述的责任……

问题:说三个颜色

②:听起来你感到很有发并训练的强大的情感理解能力,由星火工作室从零开发并训练的 Spark 系列基座模型。
③:你好,首先30年的爱后,她总想,我们真的有一天自己……

没有一个模型执行成功。0.2B 级别的模型在没有专门指令微调的情况下,几乎不可能学会"格式服从"。这一点我们早有预期,但亲眼看到仍然警醒。


5️⃣ 代码生成 —— ① 的意外之喜(仅 ① 覆盖)

这是①独有的测试维度,也是它超出预期的地方:

任务结果
两数之和def add_numbers(a, b): return a + b ✅
反转字符串return s[::-1] ✅
素数判断逻辑基本正确 ✅
SQL 查询SELECT * FROM users WHERE age > 18; ✅
冒泡排序递归调用自身,逻辑混乱 ❌
斐波那契第10项数列全错 ❌
字典合并参数设计错误 ❌
JS 求最大值arr.find(arr) 错误 ❌

简单函数能模仿出正确结构,复杂逻辑原地崩塌。 对一个小模型来说,这已经是超出预期的表现——它学会了"代码长什么样",但没学会"代码为什么要这样写"。


四、综合评分

5 分制,1 = 完全不可用,5 = 达到实用水平。"—" 表示该套题未覆盖此维度。
维度① sparkdeep_hf② best.pt③ 未标注快照
情感对话3.01.01.5
身份认知— (无身份复读污染)0.50.5
常识问答2.50.50.5
逻辑推理—00.5
数学计算0.500.5
语言运用—1.00.5
指令遵循0.50.50.5
代码生成2.5——
抗重复 / 流畅度1.01.51.0
响应速度体验2.04.03.0
综合印象最好的一个,但停不下来最"安全",但几乎不说话最"热情",但全是幻觉

五、三种不同的"坏":失败模式诊断

三个模型不是"同一个差",而是差在三个完全不同的方向。这才是这次横评最有价值的部分。

🔴 ③ 的病:幻觉与路径依赖

所有输入都被强行映射到"情感倾诉"这唯一一条路径上。问它 1+1,它跟你聊妈妈和孩子;问它首都,它跟你聊老师和孩子。它是热情的、滔滔不绝的、完全错误的。

病因推测:训练数据中情感语料占比过高(SoulChatCorpus 约 25.8 万条),模型形成了极强的领域先验,把整个世界都看成了一次心理咨询服务。

🟡 ② 的病:沉默与身份过拟合

它学会了用"不说话"来规避一切错误。45% 的问题直接返回 0 token;剩下 55% 里又有六成在机械复读身份声明。它是谨慎的、安静的、同样没用的。

病因推测:身份数据 8× 重复强化后,那句声明的概率被推得极高,挤压了其他所有输出;而面对不确定输入,模型宁可立刻输出 EOS 也不愿冒险。这不是"学会了不说错话",是置信度校准崩了——它分不清"我不知道"和"我应该回答"。

🔵 ① 的病:重复退化与事实漂移

它能力最强,却患有严重的"复读机综合征"。太平洋那题它把同一句话复述了 5 遍并自动编号 1-2-3-4-1;牛顿那题复述 3 遍;每题都跑满 160 token 从不停下。它是能干的、啰嗦的、越说越错的。

病因推测:greedy 解码 + 小模型容量不足,导致陷入高概率 token 循环。这是可以通过 repetition_penalty(1.1~1.2)或采样解码显著缓解的工程问题,而非模型本身的智力缺陷。

六、写在最后:六点感悟

1. "什么时候闭嘴"和"说什么"一样重要

① 停不下来(每题 160 token 跑满),② 停得太早(45% 零输出),③ 根本不该开口(全是幻觉)。

三个模型在三种不同的"停止行为"上失败。这提醒我们:EOS 是一个需要被认真训练的 token,而不是一个免费的默认行为。 一个模型的对话质感,很大程度上取决于它知不知道该在哪个字后面画句号。

2. 重复注入能教会"台词",教不会"时机"

身份数据灌了 8 遍,身份题却 100% 沉默;而情感题、数学题里那句身份声明却冒了出来。

这件事让我反复想了很久。我们以为在教它"记住自己是谁",实际上只是把一句话的概率推高了。概率不等于意图。 真正的身份认知,需要的是"问题类型 → 回答策略"的映射能力,而不是文本片段的机械复现。这大概是下个版本最需要重新设计的一块数据。

3. 从"胡说"到"沉默"到"重复",其实是一条进化链

③ 什么都说(错),② 什么都不说(也错),① 说了但停不下来(还是错)。

换个角度看,这未尝不是一条路径:先学会开口,再学会闭嘴,最后才学会在对的时机说对的话。 我们现在正卡在第二段与第三段之间。这不是退步,是还没走完。

4. 小模型不是"缩小的大模型"

它有自己独特的失败方式。大模型会"一本正经地编造",小模型会"语无伦次地真诚"。0.2B 的天花板是硬的——数学、推理、指令遵循,不是靠调参能补上的。

与其幻想全能,不如诚实聚焦。情感陪伴这个场景,可能恰恰是 0.2B 唯一能真正做好的事——因为它不需要世界知识,只需要语气、共情和一点点结构的模仿。① 在压力题上给出的那五步建议,就是我们坚持这个定位的理由。

5. 评测必须比宣传诚实

把三个模型的失败原样贴出来,是需要一点勇气的。但如果我们只发"最佳验证 Loss 1.5762,PPL ≈ 4.84"这种漂亮数字,那和自欺没有区别。

40 道题,比 1 亿 token 的训练日志更能说明问题。 我们承诺完全开源权重和运行代码,也包括这些难看的评测记录。

6. 从零训练的每一步,都算数

参数只有 2 亿,词汇表只有 8192,训练数据只有 1.22 亿 token。跟动辄千亿的大模型比,它小得可笑。

但它是我们从架构、分词器到权重,一个矩阵一个矩阵写出来的。它会胡说,会沉默,会复读——但它存在,并且可复现,可修改,可理解。下一次迭代,我们知道该改哪里。

AI 拥抱世界,世界信任 AI。
信任的前提,是诚实。

七、下一步

  1. 重构数据配比:降低 SoulChatCorpus 占比,引入通用问答、常识、简单推理数据;重新设计身份数据,从"重复强化"改为"情境多样"。
  2. 解码策略工程化:推理默认启用 repetition_penalty=1.15 + temperature 采样,解决①的复读问题。
  3. EOS / 长度控制专项:针对②的过度沉默,在训练中引入适当比例的"拒答"与"承认不知道"样本,让沉默变得可控而非失控。
  4. 轻量化指令微调:尝试在 0.2B 规模上做小规模 instruction tuning,优先攻克"指令遵循"这块全军覆没的阵地。

SparkDeep-v1-lite 仍在持续迭代改进中。 这次横评的三个模型,都不是终点,只是路上的三个路标。


🙏 致谢

  • 感谢 SoulChatCorpus 数据集作者提供的优质中文情感对话语料,为模型注入了温暖的灵魂。
  • 感谢所有在预览版阶段提供反馈的社区开发者。
  • 也感谢这三个"不太争气"的模型快照——它们诚实地告诉了我们哪里做错了。

星火工作室 · Spark Studio · Boli AI
📧 deepxing@hotmail.com
🔗 ModelScope: SparkDeep-v1-lite | GitHub Repository
AI 拥抱世界,世界信任 AI

标签: none

添加新评论