← 返回首页
复现实验2026-09-27 发布 · 全周期盘点

Kev 复现实验:全周期问题总账(含底座选型期补录)

内部代号 jev_test · 覆盖从最早的模型选型期到交付流程期的 20 条问题:每条含发生/发现时点、根因与状态,此前历次汇总遗漏的早期问题一并补录
复现对象:Kev / Jev 风格决策模型 底座 Qwen3.5-4B 当前 v3 重训中(12,330 步) 问题 20 条 · 已修 16 · 部分或持续 4

〇、背景:Kev 是什么,这次复现在做什么

Kev 是一个 Jev 风格的「决策模型」(decision model)家族:不做逐 token 的自回归生成,而是一次前向传播读入一段状态文本(state)和一组带类型的提问槽位,由一个可训练的指针头(Pointer Head)直接在候选位置上打出概率分数,输出结构化决策。底座冻结,只训 LoRA 和指针头;配套温度校准与 kev.benchmark 冻结评测。详细架构见学习专区《Kev 架构详解(含源码)》。

本次实验(内部代号 jev_test)在 Qwen3.5-4B 上复现这套设计:自建训练与评测数据(贪吃蛇 / 方块两类游戏决策,加上 PII、毒性、求助等业务判断题),LoRA 微调 + 指针头训练 + 温度校准,目标是在线低延迟的结构化决策。项目跑了一个完整周期,踩过的坑不少——这篇把从最早的模型选型期到现在的 20 条问题一次性盘点入账:每条含发生/发现时点、根因、状态,此前历次汇总遗漏的早期问题一并补录。

20
问题全收录(P / D / E / F 四阶段)
16
已修
4
部分修复 / 持续执行
0
未解决
【重大更正 · 本账补录 P-01】关于最早指出的那个问题:项目一开始用的底座是对话版 Qwen3.5-4B(目录里带 chat_template.jinja,实锤),不是 Base。早期询问「是不是 Base」时得到的回答「是」是错的——回答前没有做任何核验(没有检查目录里的 chat_template)。此错误直到 2026-09-27 对照原版仓库时才被发现。v3 已换真正的 Base 并做了核验(models/Qwen3.5-4B-Base 无 chat_template ✓)。此条此前所有问题汇总均未收录,本账补录,编号 P-01。

一、阶段〇:模型选型期(项目最早期)

编号问题根因发现时点状态
P-01底座用错:对话版当 Base 用。v1/v2 两轮训练全部基于对话版 Qwen3.5-4B(带 chat_template.jinja);原版 kev-4b 用的是 Qwen3.5-4B-Base。早期询问时,未核验即回答「是 Base」。 下载模型后未检查模型版本标识;回答凭印象而非实证 2026-09-27 对照原版 adapter_config(base_model = Qwen/Qwen3.5-4B-Base)时 已修 v3 换 Base(魔搭),并实证核验无 chat_template
P-02分隔符用字面文本 [STATE]/[Q]/[OPT]/[DECIDE];原版复用 Qwen 特殊 token 5 枚(embedding 可训练) 复刻时仅依据架构文章描述,未读到原版实现 2026-09-27 对照原版 model.py 部分 v3 暂保留字面(减少变量);v4 改特殊 token
P-03LoRA 目标缺 DeltaNet 5 投影(Qwen3.5 线性注意力层未被适配) 同上,按通用 LoRA 惯例而非原版配置 2026-09-27 对照原版 adapter_config 已修 v3 补全 12 组目标
P-04训练超参偏离:lr 1e-4(原版 2e-5)、batch 32(原版 8)、bf16 权重(原版 fp32 主权重) 未对照原版配方 2026-09-27 已修 lr/batch 已修;fp32 受 16GB 显存限制列 v4
P-05无温度校准机制(原版每 checkpoint 拟合 temperature) 复刻时未实现该卖点 2026-09-27 已修 已实现(fit_temperature.py),v3 训后自动拟合

二、阶段一:数据期

编号问题根因发现时点状态
D-01训练集 870 条泄漏(早期版本)生成器分层不严 第一轮评审已修 全局去重重建
D-02蛇头位置恒定 [(5,6),(4,6),(3,6)]:蛇头左侧格 100% 是蛇身,q_danger_left 标签恒「是」,模型学成常数先验,真实对局即失效(35% 危险错误率)。此为两次游戏录制失败的根因 生成器初始 body 硬编码 2026-09-26 录制诊断(diag_snake_kev) 已修 蛇头全随机 + 3–12 节长满制,分布审计实证
D-03游戏评测集与训练题同源(game_test = train 副本),「73.37%」实为训练集成绩;train.jsonl append 模式有重复注入风险 转换脚本设计缺陷复审 已修 90/10 → 后升级 OOD + iid 双口径;整体重写
D-04方块训练棋盘固定 4–7 行,对局开局空棋盘属分布外(目标列退化 0/4) 生成器分布窄录制日志 已修 0–12 行 / 密度随机
D-05蛇身长 3–8 且 state 只显示 body[:8],对局超 8 节模型失明 设计未考虑对局增长34 项评审 #2 已修 3–12 节长满制 + 完整蛇身展示
D-06业务先验比例(PII 30% / 毒性 30% / 求助 8%)无业务依据 合成数据刻意均衡,未文档化34 项评审 #8 部分 已文档化为限制项;是否对齐真实分布待定

三、阶段二:评测期

编号问题根因状态
E-01「游戏准确率 73.37%」是训练集成绩,当成了评测口径对外汇报 评测集与训练同源已修 作废该口径;换 OOD + iid 双口径
E-02T 网格在 test 上搜索温度(T=1.3「甜点」为自洽污染产物) 搜索集与汇报集未分离已修 重做(val 搜索,T=1.0 即最优)
E-03危险判断错误率 35% 未进评测报告 诊断脚本游离于验收体系外已修 已纳入验收(<10%)

四、阶段三:交付与流程期

编号问题状态
F-01坏数据训出的模型所录两支游戏视频曾作为交付(蛇为引擎辅助、方块 0 消行)已修 更正邮件已单发;视频面板加水印;新视频达标才交付
F-02「0 死亡」依赖引擎过滤,表述不显眼已修 标题水印「引擎辅助」已加;邮件口径已更正
F-03改完 bug 未全链路验证就推进(convert 未同步改等)部分 已建立 verify_kev_encode 全量验证 + 审计前置;持续执行
F-04发现一个修一个,缺系统性体检已修 audit_game_data / audit_data_integrity / verify_kev_encode 三件套落地
F-05进展/问题未及时邮件(多次)部分 电子狗每小时邮件已上线;发车/中检/交付节点邮件已制度化,仍需自律
F-06逐段解读 HTML 文字重叠(阅读问题反馈)已修 后续 HTML 已改单列大字号排版

五、当前状态

v3 重训中:Base 底座 ✓ + DeltaNet LoRA 目标 ✓ + lr 2e-5 / batch 8 ✓ + 温度校准 ✓。12,330 步,预计约 20 小时。训后自动执行:温度拟合 → 业务回归 → 游戏 OOD / iid 评测 → 验收比对 → 达标自动录制 v3 视频。电子狗每小时邮件巡检。

本账为一次性全周期盘点;此后新问题按 P / D / E / F 编号追加,不再遗漏早期项。

华杉的技术博客 · 苏ICP备2026063680号-1
首页