omni / docs /training /index.md
chenbhao's picture
reorganize configs into subdirs lm/vlm/vam, remove runs/, add interview docs for pretrain & full_sft
d58698c
|
Raw
History Blame Contribute Delete
2.4 kB

training/ · 训练

训练相关的数据集、训练脚本、配置工具。

数据集(Dataset)

dataset/每类数据集一个文件(已去掉 _dataset 后缀),公共辅助函数在 common.py

文件 数据集 用途
pretrain.py PretrainDataset 预训练(纯文本)
sft.py SFTDataset 全量 SFT(chat 模板 + loss mask)
dpo.py DPODataset DPO 偏好数据
rlaif.py RLAIFDataset RLHF/RLAIF prompt 采样
agent_rl.py AgentRLDataset Agent 强化学习轨迹
vlm.py VLMDataset 图文对(parquet)
vam.py VAMDataset 全模态(图文 + 音频,parquet)

共同模式

  • 都继承 torch.utils.data.Dataset,实现 __len__ / __getitem__
  • 文本类通过 tokenizer.apply_chat_template 渲染对话;用 bos_id/eos_idgenerate_labels只对 assistant 回复计算损失(prompt 部分 label=-100)。
  • 多模态(vlm/vam)额外加载图像/音频,并产出 (input_ids, labels, 视觉/音频特征) 元组。

训练脚本(Trainers)

按模态组织的训练入口,每个脚本暴露 main(default_config=None)(通过 python -m trainers.<mod> 调用)。

  • trainers/lm/:pretrain / full_sft / lora / dpo / distillation / ppo / grpo / agent / rollout_engine / train_tokenizer
  • trainers/vlm/:pretrain / full_sft
  • trainers/vam/:full_sft

详见:trainers.md — 各 trainer 模块概览与通用训练循环

工具(Utils)

配置与命令行

YAML 配置驱动训练、apply_config 机制、tokenizer 训练、启动示例。

详见:config-and-cli.md

面试要点

  • loss mask 为什么只标 assistant? 让模型只学习生成回复,不拟合用户输入/系统提示,避免「学用户说话」。
  • 多模态数据常用 parquet + HFDataset.from_parquet,便于大批量流式读取。
  • pre_processing_chat 随机插入 system prompt,post_processing_chat 随机去掉空 think 段,做数据增广。
  • 配置系统优先级CLI 参数 > YAML 默认值 > 代码默认apply_config 把 YAML 扁平化注入 argparse 默认值。
  • 续训怎么保证精确SkipBatchSampler 在分布式下跳过已训 step;from_resumecheckpoint/ 恢复 optimizer/scheduler 状态。