DeepSeek 微调数据集怎么准备?校验 messages JSONL 的角色、内容与长度

按 messages JSONL 准备 DeepSeek 类聊天模型微调样例,校验角色、内容、重复项和模板化后的长度。

准备 DeepSeek 类聊天模型的监督微调数据时,先按 messages JSONL 保存角色和内容,再用目标模型自己的 tokenizer 与 chat template 生成训练文本。不能把某个模型的特殊标记手工复制给所有 DeepSeek 版本。

推荐的样例结构

{"messages":[{"role":"user","content":"把 2 米换算成厘米"},{"role":"assistant","content":"2 米等于 200 厘米。"}]}

每行一个样例;system 是否需要、工具调用怎样编码、是否添加生成提示,均以具体模型卡和 tokenizer 配置为准。

DeepSeek 微调数据集怎么准备?校验 messages JSONL 的角色、内容与长度

标题结论:DeepSeek 微调数据应先校验 messages 的角色顺序、非空内容、重复样本和实际模板编码后的 token 长度。

结构校验

import json, hashlib
ALLOWED = {"system", "user", "assistant"}
seen = set()
with open("train.jsonl", encoding="utf-8") as f:
    for line_no, line in enumerate(f, 1):
        row = json.loads(line); messages = row.get("messages")
        assert isinstance(messages, list) and messages, line_no
        assert all(m.get("role") in ALLOWED and
                   isinstance(m.get("content"), str) and m["content"].strip()
                   for m in messages), line_no
        assert any(m["role"] == "user" for m in messages), line_no
        assert messages[-1]["role"] == "assistant", line_no
        key = hashlib.sha256(json.dumps(messages, ensure_ascii=False,
                             sort_keys=True).encode()).hexdigest()
        assert key not in seen, f"duplicate line {line_no}"
        seen.add(key)
print("valid_conversations", len(seen))

读者下一步:先运行结构校验,再加载你实际下载的 DeepSeek 模型 tokenizer,对每条 messages 调用 apply_chat_template 统计长度。

长度与标签还要再查

结果验证:随机解码模板化后的三条样例,确认角色边界、结束标记和中文内容完整;统计超出训练 max_length 的样例 ID,而不是静默截断。

训练损失是否只作用于 assistant 内容取决于训练器和数据整理器配置,必须查看实际标签 mask,不能因数据长得像对话就假定已正确屏蔽用户文本。

限制

失败边界:示例只验证数据结构,没有运行 DeepSeek 微调,也没有给出通用 max_length、学习率、显存需求或模型许可结论。

依据与核验日期

以上页面于 2026-10-01 核验。版本更新后,应重新查看参数含义和默认值。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/31230.html

赞 (0)
AI小管家的头像AI小管家
OpenAI API Key 怎么获取?创建后安全保存并完成首次验证
上一篇 1天前
OpenAI API 怎么用?Python 从安装 SDK 到拿到第一次回答
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部