SuperAPI AI 工具集

360-LLaMA-Factory

360-LLaMA-Factory 是基于 LLaMA-Factory 的衍生开源项目,核心创新是引入序列并行(Sequence Parallelism),具体采用 zigzag-ring-attention,以支持长上下文的大模型后训练。该项目在 LLaMA-Factory 基础上以最小代码改动实现高度模块化的序列并行,支持大多数后训练方法,包括 SFT 和 DPO(及其变体)。已测试并添加 DeepSpeed Ulysses 支持,并扩展至 Qwen3 和 Qwen-VL 模型。它旨在解决多模态大模型处理长序列时的训练难题,可作为 LLaMA-Factory 的直接替代,未启用序列并行时行为与原版一致。

访问官网

工具介绍

用途

360-LLaMA-Factory 是由 360 智脑团队开发的开源项目,基于广泛使用的 LLM 后训练框架 LLaMA-Factory,加入了序列并行(Sequence Parallelism,简称 SP),特别是 zigzag-ring-attention,以支持长上下文训练。其目的是解决多模态 LLM 处理更长 token 序列时的训练瓶颈。项目是 LLaMA-Factory 的直接替代品,在未启用 SP 时行为与原版完全一致。

主要能力

  • 支持大多数后训练方法,包括 SFT 和 DPO(及其变体)。
  • 已支持 Qwen3 的序列并行(目前仅默认 zigzag-ring)。
  • 已支持 Qwen-VL 模型(Qwen-2/2.5-VL)的序列并行(目前仅默认 zigzag-ring)。
  • 已添加并测试 DeepSpeed Ulysses,正确性和速度经过验证。
  • 提供全参数后训练长度基准:在 8 x A800 使用 SP、zero3-offload 和梯度检查点(无其他优化)下,全参数 SFT 最大长度可达 210k(7B)和 128k(72B);全参数 DPO 可达 84k(7B)和 46k(72B)。
  • 通过对比中间值和损失曲线(SP=1 与 SP=2)验证了正确性,SFT 和 DPO 损失曲线高度重叠。
  • 速度测试:7B 模型 28k 序列长度下,DeepSpeed Ulysses 与 zigzag ring 训练速度几乎相同,约 15 分钟 64 步。

使用方式

  • 安装:可使用全新 Python 环境安装,或在已有较新 LLaMA-Factory 环境中安装最多两个额外依赖并切换至此代码库。
  • 序列并行程度由参数 sequence_parallel_size 控制,表示处理一个训练数据序列所需的 GPU 数量,默认 1(不启用 SP)。需设置为大于 1 的整数,通常为 2、4、8 或 16,且需整除总 GPU 数。
  • 参数 cutoff_len 现严格表示训练序列长度,可设为数据最大长度;数据会自动填充并预处理以适配 SP。
  • 可在配置 YAML 文件中设置这两个参数,也可在命令行设置。参考 360-example.sh 查看 SFT 和 DPO 示例脚本。
  • 支持多节点训练,可使用 DeepSpeed 启动。

适用场景

  • 需要对长序列数据进行后训练(SFT、DPO 等)的大模型研究与开发。
  • 多模态大模型的长上下文训练。
  • 希望以参数化方式方便地结合 unsloth 或 liger-kernel 等优化工具。

限制

  • 因 Ring Flash Attention 限制,序列并行下暂不支持 attention_dropout 参数;若启用序列并行时该参数非零,会被重置为零。
  • 目前 Qwen3 和 Qwen-VL 的 SP 仅支持默认 zigzag-ring 模式。
  • 未启用 SP 时与原版 LLaMA-Factory 行为一致。
  • 其他 SP 模式(如 llama3 风格)仍在计划中。
  • 损失计算中 zigzag ring attention 首次前向传播存在数值不稳定性,已通过覆盖 training_step() 执行一次无效果的空前向解决。
  • 当前部分优化项(如预计算参考模型 logits、logits.float()/contiguous() 优化、与 unsloth/liger kernel 全面兼容、train/pt、rm、kto 的 SP 支持等)仍在待办列表中。