axolotl-ota-sft-integration
收藏资源简介:
该数据集是一个用于科学推理任务的对话数据集,采用规范化的对话格式,包含role和content字段,并遵循Llama-3的对话结构。它整合了特殊的推理标记(如<|start_think|>、<|end_think|>)和工具调用标记,主要用于验证Axolotl框架中delphi聊天模板对用户/系统回合进行正确掩码、同时对助手回合和推理内容进行训练的能力。该数据集是监督微调(SFT)和强化学习(RL)流程中的核心验证数据集。
This dataset is a dialogue dataset for scientific reasoning tasks, using a canonical dialogue format with role and content fields, and following the Llama-3 dialogue structure. It incorporates special reasoning tokens (e.g., <|start_think|>, <|end_think|>) and tool-calling tokens, primarily used to validate the ability of the delphi chat template in the Axolotl framework to correctly mask user/system turns while training assistant turns and reasoning content. It serves as a core validation dataset in the supervised fine-tuning (SFT) and reinforcement learning (RL) pipeline.
Axolotl ⇄ OpenThoughts-Agent SFT-backend Integration
项目概述
该项目完成了将 axolotl 作为 OpenThoughts-Agent 的 SFT 训练后端集成,实现 --sft_backend axolotl 作为 LLaMA-Factory 的即插即用替代方案。项目在 TACC Vista (GH200, aarch64) 环境下运行,状态为 COMPLETE 并已合并至 penfever/working 分支。
实施内容
第一阶段 — 创建 marin axolotl 分支并移植3个特性
创建了 marin-community/axolotl @ feuer/marin-fork-3feature-port(版本 0.17.0.dev0),包含:
- delphi.jinja 聊天模板(自动全局匹配)— 支持 Llama-3 格式及推理/工具token(
<|start_think|>/<|end_think|>/<|tool_call|>/<|tool_result|>) - template_integrity 插件 — 保存时的防故障机制,确保每次检查点保存时在
tokenizer_config.json中嵌入chat_template - mfu 插件(MFU 日志记录)+ supabase_registry 插件(可选训练结束模型注册)
第二阶段 — 将 axolotl 作为 SFT 后端接入 hpc.launch
- 支持
--sft_backend {llamafactory,axolotl}参数切换(LLaMA-Factory 为默认) - 子模块
sft/axolotl固定在3c206072 - 实现运行器调度(
-m axolotl.cli.train)、LF 参数到 axolotl YAML 的转换器(hpc/axolotl_config_utils.py)、配置资产(sft/axolotl_configs/)和验证门控(sft/axolotl_gates/)
验证门控结果
| 门控阶段 | 结论 | 证据 |
|---|---|---|
| Stage 3 — 端到端冒烟测试 | ✅ 通过 | job 801458; 损失 2.272→0.951 (6步); SDPA; 检查点嵌入了 delphi 模板 |
| Stage 4 — 启动器防故障测试 | ✅ 通过 | 嵌入的 chat_template 与标准 delphi.jinja 字节一致 |
| Stage 6 — LF vs axolotl 损失匹配 | ❌ 未通过(已理解原因) | axolotl 1.567→1.549,LF 1.334→0.702(各30步);120%差距为框架层面在非标准 guanaco/llama3 数据集上的模板掩码差异 |
| Delphi 掩码验证(关键检查) | ✅ 通过 | job 802053; 损失 2.628→2.532(20步);`< |
Delphi 掩码验证详情
通过 axolotl.cli.preprocess --debug 验证4个样本:
| 断言 | 结果 |
|---|---|
| `< | start_think |
| 助手回答训练 | The(791,791) answer(4320,4320) is(374,374)… 已训练 |
| 用户轮次掩码 | user(-100,882) + 内容 (-100,…) 已掩码 |
| 系统轮次掩码 | `< |
| 助手角色掩码(仅内容训练) | assistant(-100,78191) 已掩码 |
| Llama-3 结构分割 | `< |
| "最后轮次不可训练,跳过" | 0次发生 |
每个样本可训练token比例:86%, 96%, 88%, 73%
损失序列:
axolotl_parity_llama3_ckpt30.json— 30步,1.5667→1.5490lf_parity_llama3_ckpt30.json— 30步,1.3342→0.7020delphi_canary_ckpt20.json— 20步,2.6280→2.5315axolotl_smoke_ckpt6.json— 6步,2.2722→0.9505
同步修复内容
Axolotl 后端/启动器(7项): 子模块 + --sft_backend 选择器;运行器调度;LF→axolotl 配置转换器;CLI global_batch_size 整数转换;短任务作用域 TMPDIR(AF_UNIX 108字节 sun_path 修复);expandable_segments 分配器;torchao==0.17.0 aarch64 环境修复
LLaMA-Factory transformers-5.x(4项,额外修复): LF 分支 d20b8666 的 add_special_tokens 签名保护;启动器 report_to=none;TMPDIR + expandable_segments 泛化;LF 固定版本从 6617a420 更新至 d20b8666
启动命令示例
axolotl SFT — Delphi 掩码验证(TACC Vista, aarch64)
bash python sft/delphi/prepare_delphi_tokenizer.py --model laion/delphi-3e18-p33m67-k0p20-lr83-a003 --output $SCRATCH/delphi-canary-tok
WANDB_MODE=disabled python -m hpc.launch --job_type sft --sft_backend axolotl --train_config_path sft/axolotl_configs/delphi_canary.yaml --model_path $SCRATCH/delphi-canary-tok --conda_env sft-axolotl --dataset laion/llama-nemotron-science-reasoning-on-le3000tok-100k-canonical-think --messages messages --role_tag role --content_tag content --partition gh-dev --num_nodes 1 --gpus_per_node 1 --time_limit 01:00:00
掩码转储验证(决定性掩码检查)
bash python -m axolotl.cli.preprocess sft/axolotl_configs/delphi_canary.yaml --base_model $SCRATCH/delphi-canary-tok --debug
axolotl vs LLaMA-Factory SFT(后端切换)
bash
axolotl 后端
python -m hpc.launch --job_type sft --sft_backend axolotl --conda_env sft-axolotl --train_config_path sft/axolotl_configs/<cfg>.yaml --dataset <ds> --messages messages --role_tag role --content_tag content --num_nodes 1 --gpus_per_node 1 --time_limit 02:00:00
llamafactory 后端(默认)
python -m hpc.launch --job_type sft --sft_backend llamafactory --conda_env otagent --train_config_path sft/lf_configs/<family>/<cfg>.yaml --dataset <ds> --role_tag role --user_tag user --assistant_tag assistant --content_tag content --num_nodes 1 --gpus_per_node 1 --time_limit 02:00:00
目录结构指南
OVERVIEW.md— 当前文件agent_logs/— 两个周期的完整执行日志notes/cycle1_*,notes/cycle2_*— 阶段性设计计划和范围configs/— axolotl 配置文件(delphi_canary.yaml、smoke.yaml、axolotl_parity_llama3.yaml、marin_delphi_all3.yaml)及 LF 对比配置、验证脚本results/trainer_states/— 损失序列(JSON格式)results/rendered_configs/— 启动器渲染的 axolotl 训练配置results/run_logs/— 训练输出日志
关键参考(代码库内)
- 后端接线:
hpc/sft_launch_utils.py、hpc/axolotl_config_utils.py、hpc/arguments.py - 配置/门控:
sft/axolotl_configs/、sft/axolotl_gates/、sft/delphi/prepare_delphi_tokenizer.py、sft/delphi/dataset_info.json - 依赖说明:
.claude/projects/axolotl/axolotl.md - 技能文件:
.claude/skills/sft-launch/ - 分支:
marin-community/axolotl @ feuer/marin-fork-3feature-port(3c206072)




