数据集和格式
您的模型的好坏取决于您的数据。以下是如何正确格式化它。支持的文件格式
AITraining 支持多种数据源:| 格式 | 如何加载 | 用例 |
|---|---|---|
| JSONL | pandas.read_json(lines=True) | LLM 训练、对话 |
| CSV | pandas.read_csv() | 分类、表格数据 |
| HF Dataset ID | datasets.load_dataset() | 来自 Hub 的远程数据集 |
| Local HF Dataset | load_from_disk() | 预处理的数据集 |
Parquet 文件通过暴露 Parquet 格式的 HuggingFace 数据集间接支持。
常见格式
CSV(最常见)
简单且通用。适用于分类、回归和基本任务。JSON/JSONL
更适合复杂数据、对话和嵌套结构。图像文件夹
按类别组织图像:数据质量基础
平衡您的类别
不好:- 1000 个积极示例
- 50 个消极示例
- 500 个积极示例
- 500 个消极示例
清理您的数据
删除:- 重复项
- 空值
- 明显错误
- 不一致的格式
大小指南
| 任务类型 | 最少 | 良好 | 优秀 |
|---|---|---|---|
| Text Classification | 100 | 1,000 | 10,000+ |
| Image Classification | 200 | 2,000 | 20,000+ |
| Language Generation | 50 | 500 | 5,000+ |
按训练器要求的列
不同的训练器需要特定的列:| 训练器 | 必需列 | 可选 |
|---|---|---|
sft / default | text(或 messages) | - |
dpo | prompt, chosen, rejected | - |
orpo | prompt, chosen, rejected | - |
reward | text (chosen), rejected | - |
特殊格式
DPO/ORPO(偏好数据)
Token Classification
对话格式
对话期望{role, content} 对象列表:
Tool 角色支持
AITraining 支持tool 角色用于函数调用训练数据:
自动兼容性:对于不原生支持
tool 角色的模型(如 Gemma),AITraining 会自动将 tool 消息转换为带有 [Tool Result] 前缀的 user 消息。具有原生 tool 支持的模型(Llama 3.1+、Qwen 等)使用其原生格式。旧版格式支持:旧版 OpenAI
function 角色(在引入 tool 之前使用)也受支持,处理方式与 tool 角色相同。Tool Calls(函数调用)
AITraining 还支持tool_calls 字段用于训练模型进行函数调用:
智能格式检测:AITraining 会检测您的模型是否原生支持
tool_calls:- Qwen、Llama 3.1+:使用原生
<tool_call>格式 - Gemma、旧模型:将工具调用序列化为内容中的 OpenAI 格式 JSON
Tool Call 格式转换
对于没有原生工具支持的模型,AITraining 将工具调用序列化为 OpenAI 格式 JSON 并附加到助手内容中: 输入(带有 tool_calls 字段的消息):序列化格式保留了完整的 OpenAI 结构,包括
id、type 和 function 字段。这与系统提示中描述的格式一致,有助于模型更好地学习。消息交替处理
某些模型(Gemma、Mistral)要求严格的 user/assistant 交替。AITraining 会自动修复常见问题: 连续相同角色的消息会被合并:这些修复仅在 tokenizer 拒绝原始格式时应用。接受灵活消息顺序的模型会保持原始结构。
自动数据集转换
AITraining 可以自动检测和转换常见的数据集格式。无需手动预处理。支持的格式
| 格式 | 检测 | 示例列 |
|---|---|---|
| Alpaca | 自动 | instruction, input, output |
| ShareGPT | 自动 | conversations 带 from/value |
| Messages | 自动 | messages 带 role/content |
| Q&A | 自动 | question/answer, query/response |
| User/Assistant | 自动 | user, assistant |
| DPO | 自动 | prompt, chosen, rejected |
| Plain Text | 自动 | text |
使用自动转换
Chat Templates
Chat templates 将您的数据格式化为模型预期的对话结构。| 选项 | 描述 |
|---|---|
tokenizer | 使用模型的内置 chat template(SFT/DPO/ORPO 的默认值) |
chatml | 标准 ChatML 格式 |
zephyr | Zephyr/Mistral 格式 |
none | 无模板(纯文本) |
统一渲染器一致地应用模板。为了向后兼容,仍支持旧版模板路径。
对话扩展
将单轮示例合并为多轮对话:处理后数据集输出
处理后,您的数据集将包含:| 列 | 描述 |
|---|---|
text | 应用聊天模板后的格式化训练数据 |
_original_messages | 原始消息列(保留用于检查) |
_original_* | 其他原始列重命名为带前缀 |
原始列被重命名为
_original_*,以防止其他工具自动检测并错误使用未处理的数据。保存处理后的数据
使用--save-processed-data 控制处理后数据的保存位置:
| 选项 | 行为 |
|---|---|
auto | 本地保存;如果源自 Hub 则也推送到 Hub |
local | 仅保存到 {project}/data_processed/ |
hub | 仅作为私有数据集推送到 Hub |
both | 本地保存并推送到 Hub |
none | 不保存处理后的数据 |
快速提示
- 从小开始 - 在扩展之前先用 100 个示例测试
- 尽早验证 - 在收集数千个示例之前检查您的格式是否有效
- 保持一致 - 在整个数据集中使用相同的格式
- 记录一切 - 注意任何预处理或特殊规则
- 使用自动转换 - 让 AITraining 自动检测和转换格式