MindIE FlashGen 是一个面向多模态生成的以训助推(Training-aware Acceleration)加速套件。它通过深度融合步数蒸馏、量化感知训练与可学习稀疏注意力等技术,实现加速效果的叠加。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
完善步数蒸馏文档并调整默认训练模式 Co-authored-by: huangyizhe<huangyizhe22@foxmail.com> # message auto-generated for no-merge-commit merge: !7 merge master into master 完善步数蒸馏文档并调整默认训练模式 Created-by: hyz22 Commit-by: huangyizhe Merged-by: ascend-robot Description: ## 背景 现有步数蒸馏文档缺少完整的训练复现流程,以及 data_latent 和 simulate 两种 rollout 模式的区别说明。本 PR 补充相关文档,并将默认训 练模式调整为 data_latent。 ## 主要改动 ### 配置调整 - 将 flashgen/configs/wan_dmd_npu.yaml 的默认 rollout 模式从 simulate 调整为: yaml method: rollout_mode: data_latent - 默认从训练数据中的真实 VAE latent 加噪后执行 Student rollout。 - 如需使用随机噪声模拟少步推理,可通过命令行切换: bash --method.rollout_mode simulate ### 文档完善 完善 docs/features/step_distill.md,补充: - DMD2 蒸馏原理及 Teacher、Student、Critic 角色说明。 - data_latent 与 simulate 模式的输入、计算流程及数据集用途。 - [1000, 757, 522] 三步 rollout 示例。 - 脱敏后的单机 8 卡完整训练命令。 - Negative Prompt 离线编码及文件检查方法。 - 数据、并行、优化器、精度和 checkpoint 参数说明。 - 有效 Batch Size 计算方法。 - 单卡调试、模型导出和常见问题排查。 - 明确未被训练入口使用的验证集变量不会启用训练中验证。 ## 行为变化 未显式配置 method.rollout_mode 时,训练行为由 simulate 变为 data_latent。 使用默认配置的数据集必须包含预编码的 VAE latent,并保证以下参数与数据规 格一致: - num_frames - num_height - num_width - num_latent_t 仅包含文本条件的数据集需要显式切换到 simulate 模式。 See merge request: Ascend/FlashGen!7 | 3 天前 | |
完善步数蒸馏文档并调整默认训练模式 Co-authored-by: huangyizhe<huangyizhe22@foxmail.com> # message auto-generated for no-merge-commit merge: !7 merge master into master 完善步数蒸馏文档并调整默认训练模式 Created-by: hyz22 Commit-by: huangyizhe Merged-by: ascend-robot Description: ## 背景 现有步数蒸馏文档缺少完整的训练复现流程,以及 data_latent 和 simulate 两种 rollout 模式的区别说明。本 PR 补充相关文档,并将默认训 练模式调整为 data_latent。 ## 主要改动 ### 配置调整 - 将 flashgen/configs/wan_dmd_npu.yaml 的默认 rollout 模式从 simulate 调整为: yaml method: rollout_mode: data_latent - 默认从训练数据中的真实 VAE latent 加噪后执行 Student rollout。 - 如需使用随机噪声模拟少步推理,可通过命令行切换: bash --method.rollout_mode simulate ### 文档完善 完善 docs/features/step_distill.md,补充: - DMD2 蒸馏原理及 Teacher、Student、Critic 角色说明。 - data_latent 与 simulate 模式的输入、计算流程及数据集用途。 - [1000, 757, 522] 三步 rollout 示例。 - 脱敏后的单机 8 卡完整训练命令。 - Negative Prompt 离线编码及文件检查方法。 - 数据、并行、优化器、精度和 checkpoint 参数说明。 - 有效 Batch Size 计算方法。 - 单卡调试、模型导出和常见问题排查。 - 明确未被训练入口使用的验证集变量不会启用训练中验证。 ## 行为变化 未显式配置 method.rollout_mode 时,训练行为由 simulate 变为 data_latent。 使用默认配置的数据集必须包含预编码的 VAE latent,并保证以下参数与数据规 格一致: - num_frames - num_height - num_width - num_latent_t 仅包含文本条件的数据集需要显式切换到 simulate 模式。 See merge request: Ascend/FlashGen!7 | 3 天前 | |
| 14 天前 | ||
| 14 天前 | ||
[Feat] 架构实现及DMD蒸馏流程初始化 Co-authored-by: Zijun Huang<zijunhua@usc.edu> # message auto-generated for no-merge-commit merge: !3 merge master into master [Feat] 架构实现及DMD蒸馏流程初始化 Created-by: Huangzjun Commit-by: Zijun Huang Merged-by: ascend-robot Description: ## Summary FlashGen 是一个面向 **昇腾 Ascend NPU** 的扩散模型蒸馏框架,当前支持在 NPU 上对 **Wan 2.1 T2V 1.3B** 进行 **DMD2(Distribution Matching Distillation)** 多步蒸馏。 本 PR 的核心设计是保持 FlashGen 足够轻量:FlashGen 只实现蒸馏算法、模型适配与配置入口,训练基础设施如 Trainer、分布式、优化器、checkpoint、EMA、pipeline 等均复用已安装的 fastvideo。两者通过 YAML 配置中的 _target_ 字符串在运行时动态连接,FastVideo 无需直接引入 FlashGen 代码。 --- ## Architecture FlashGen 采用分层解耦设计,只保留算法与模型扩展层: text flashgen/ ├── configs/ # 运行配置:YAML + _target_ 动态实例化 ├── networks/ # 模型插件:WanModel,继承上游模型并覆盖 NPU 必需行为 ├── methods/ # 蒸馏算法:DMD2Method,编排 student / teacher / critic ├── datasets/ # 数据格式扩展点,默认复用 FastVideo parquet 数据格式 └── entrypoint # NPU 环境初始化,并委托 FastVideo 训练循环 关键边界: * FlashGen 负责模型与算法逻辑; * FastVideo 负责通用训练基础设施; * 模型、算法和训练组件通过 YAML _target_ 解耦; * 替换模型或蒸馏方法时,原则上只需修改配置,无需改动 FastVideo 主训练框架。 --- ## DMD2 Distillation 当前实现的 DMD2 蒸馏链路包含: * **三角色编排** * frozen teacher:提供真实分布分数; * trainable student:作为少步生成器; * trainable critic:估计 fake score。 * **两类训练损失** * DMD distribution matching loss:用于更新 student; * flow matching loss:用于更新 critic。 * **可配置训练策略** * 支持 student rollout / simulate rollout; * 支持 generator_update_interval 控制 student 与 critic 的交替更新; * 支持 CFG guidance; * 支持自定义少步去噪 schedule。 --- ## Ascend NPU Adaptation 本 PR 针对 Ascend NPU 做了以下适配: * 惰性激活 torch_npu,避免在非 NPU 环境中强绑定; * 注意力后端固定为 Torch SDPA; * 将 CUDA 专用算子路径隔离为可选逻辑; * 修复 NPU 环境下的 checkpoint RNG 保存逻辑; * 支持多卡 NPU 训练中的 EMA、checkpoint 保存与 DCP 导出; * 支持离线 negative prompt 预编码,避免多 rank 在线文本编码带来的同步问题。 --- ## Supporting Utilities * **配置驱动训练**:单份 YAML 声明模型、方法、训练参数与 callback,并支持 CLI 点号覆盖; * **negative prompt 预编码**:提前编码并保存 text embeddings,训练时直接加载; * **checkpoint 导出**:支持将 DCP 训练 checkpoint 转换为 diffusers 标准格式,便于后续推理和集成。 --- ## Test * [x] --dry-run 校验 YAML 配置解析与运行时组件构建; * [x] 多卡 Ascend NPU 端到端训练跑通; * [x] checkpoint 保存与 resume 正常; * [x] DCP checkpoint 可导出为 diffusers 格式; * [x] 导出的 diffusers checkpoint 可加载并完成推理。 See merge request: Ascend/FlashGen!3 | 10 天前 | |
| 14 天前 | ||
| 14 天前 | ||
| 14 天前 | ||
| 14 天前 | ||
| 14 天前 | ||
| 14 天前 | ||
[Feat] 架构实现及DMD蒸馏流程初始化 Co-authored-by: Zijun Huang<zijunhua@usc.edu> # message auto-generated for no-merge-commit merge: !3 merge master into master [Feat] 架构实现及DMD蒸馏流程初始化 Created-by: Huangzjun Commit-by: Zijun Huang Merged-by: ascend-robot Description: ## Summary FlashGen 是一个面向 **昇腾 Ascend NPU** 的扩散模型蒸馏框架,当前支持在 NPU 上对 **Wan 2.1 T2V 1.3B** 进行 **DMD2(Distribution Matching Distillation)** 多步蒸馏。 本 PR 的核心设计是保持 FlashGen 足够轻量:FlashGen 只实现蒸馏算法、模型适配与配置入口,训练基础设施如 Trainer、分布式、优化器、checkpoint、EMA、pipeline 等均复用已安装的 fastvideo。两者通过 YAML 配置中的 _target_ 字符串在运行时动态连接,FastVideo 无需直接引入 FlashGen 代码。 --- ## Architecture FlashGen 采用分层解耦设计,只保留算法与模型扩展层: text flashgen/ ├── configs/ # 运行配置:YAML + _target_ 动态实例化 ├── networks/ # 模型插件:WanModel,继承上游模型并覆盖 NPU 必需行为 ├── methods/ # 蒸馏算法:DMD2Method,编排 student / teacher / critic ├── datasets/ # 数据格式扩展点,默认复用 FastVideo parquet 数据格式 └── entrypoint # NPU 环境初始化,并委托 FastVideo 训练循环 关键边界: * FlashGen 负责模型与算法逻辑; * FastVideo 负责通用训练基础设施; * 模型、算法和训练组件通过 YAML _target_ 解耦; * 替换模型或蒸馏方法时,原则上只需修改配置,无需改动 FastVideo 主训练框架。 --- ## DMD2 Distillation 当前实现的 DMD2 蒸馏链路包含: * **三角色编排** * frozen teacher:提供真实分布分数; * trainable student:作为少步生成器; * trainable critic:估计 fake score。 * **两类训练损失** * DMD distribution matching loss:用于更新 student; * flow matching loss:用于更新 critic。 * **可配置训练策略** * 支持 student rollout / simulate rollout; * 支持 generator_update_interval 控制 student 与 critic 的交替更新; * 支持 CFG guidance; * 支持自定义少步去噪 schedule。 --- ## Ascend NPU Adaptation 本 PR 针对 Ascend NPU 做了以下适配: * 惰性激活 torch_npu,避免在非 NPU 环境中强绑定; * 注意力后端固定为 Torch SDPA; * 将 CUDA 专用算子路径隔离为可选逻辑; * 修复 NPU 环境下的 checkpoint RNG 保存逻辑; * 支持多卡 NPU 训练中的 EMA、checkpoint 保存与 DCP 导出; * 支持离线 negative prompt 预编码,避免多 rank 在线文本编码带来的同步问题。 --- ## Supporting Utilities * **配置驱动训练**:单份 YAML 声明模型、方法、训练参数与 callback,并支持 CLI 点号覆盖; * **negative prompt 预编码**:提前编码并保存 text embeddings,训练时直接加载; * **checkpoint 导出**:支持将 DCP 训练 checkpoint 转换为 diffusers 标准格式,便于后续推理和集成。 --- ## Test * [x] --dry-run 校验 YAML 配置解析与运行时组件构建; * [x] 多卡 Ascend NPU 端到端训练跑通; * [x] checkpoint 保存与 resume 正常; * [x] DCP checkpoint 可导出为 diffusers 格式; * [x] 导出的 diffusers checkpoint 可加载并完成推理。 See merge request: Ascend/FlashGen!3 | 10 天前 | |
| 14 天前 | ||
[Docs]初始化 FlashGen 项目文档 Co-authored-by: blian<lianbin@huawei.com> # message auto-generated for no-merge-commit merge: !5 merge master into master [Docs]初始化 FlashGen 项目文档 Created-by: blian Commit-by: blian Merged-by: ascend-robot Description: ## 概述 为 FlashGen 构建完整的 Sphinx 文档站点,参照 MindIE-SD 的组织结构和 LightX2V 的编写风格,基于现有源码完成以训助推能力的功能文档。 ## 文档结构 docs/ ├── conf.py # Sphinx 配置(myst_parser + rtd 主题) ├── requirements-docs.txt ├── index.md # 首页 ├── installation.md # 安装指南 ├── quick_start.md # 快速开始(7 步骤流程) ├── architecture.md # 架构设计 └── features/ └── step_distill.md # DMD2 步数蒸馏 ## 核心定位:以训助推(Training-aware Acceleration) FlashGen 定位为面向多模态生成的 **以训助推** 加速套件,通过将步数蒸馏、QAT、可学习稀疏注意力融入训练阶段,打破加速手段"各自为政"的局限,实现多技术协同的最优加速效果。 | 能力 | 状态 | |------|:----:| | DMD2 步数蒸馏 | ✅ 已支持 | | QAT 量化感知训练 | 📋 规划中 | | 可学习稀疏注意力 | 📋 规划中 | ## 各页面说明 - **installation.md**:环境要求、FastVideo 特殊安装流程( --no-deps 避免 CUDA 依赖覆盖)、FlashGen 安装与验证 - **quick_start.md**:步骤式编排,覆盖安装 → 模型下载 → Negative Prompt 编码 → 数据准备 → 单卡/多卡训练 → DCP 导出全流程,含关键参数覆盖速查表 - **architecture.md**:以训助推理念与三层能力模型(算法层/网络层/配置层),阐述与 FastVideo 的分工及 NPU 适配机制 - **features/step_distill.md**:DMD2 原理与 Teacher-Student-Critic 三模型架构详解,完整 YAML 配置段参数表(models/method/training/pipeline),使用示例与注意事项 ## 构建方式 ```bash pip install -r docs/requirements-docs.txt sphinx-build -b html docs/ docs/_build/html # 开发模式:sphinx-autobuild docs/ docs/_build/html --port 8000 See merge request: Ascend/FlashGen!5 | 8 天前 | |
[Feat] 架构实现及DMD蒸馏流程初始化 Co-authored-by: Zijun Huang<zijunhua@usc.edu> # message auto-generated for no-merge-commit merge: !3 merge master into master [Feat] 架构实现及DMD蒸馏流程初始化 Created-by: Huangzjun Commit-by: Zijun Huang Merged-by: ascend-robot Description: ## Summary FlashGen 是一个面向 **昇腾 Ascend NPU** 的扩散模型蒸馏框架,当前支持在 NPU 上对 **Wan 2.1 T2V 1.3B** 进行 **DMD2(Distribution Matching Distillation)** 多步蒸馏。 本 PR 的核心设计是保持 FlashGen 足够轻量:FlashGen 只实现蒸馏算法、模型适配与配置入口,训练基础设施如 Trainer、分布式、优化器、checkpoint、EMA、pipeline 等均复用已安装的 fastvideo。两者通过 YAML 配置中的 _target_ 字符串在运行时动态连接,FastVideo 无需直接引入 FlashGen 代码。 --- ## Architecture FlashGen 采用分层解耦设计,只保留算法与模型扩展层: text flashgen/ ├── configs/ # 运行配置:YAML + _target_ 动态实例化 ├── networks/ # 模型插件:WanModel,继承上游模型并覆盖 NPU 必需行为 ├── methods/ # 蒸馏算法:DMD2Method,编排 student / teacher / critic ├── datasets/ # 数据格式扩展点,默认复用 FastVideo parquet 数据格式 └── entrypoint # NPU 环境初始化,并委托 FastVideo 训练循环 关键边界: * FlashGen 负责模型与算法逻辑; * FastVideo 负责通用训练基础设施; * 模型、算法和训练组件通过 YAML _target_ 解耦; * 替换模型或蒸馏方法时,原则上只需修改配置,无需改动 FastVideo 主训练框架。 --- ## DMD2 Distillation 当前实现的 DMD2 蒸馏链路包含: * **三角色编排** * frozen teacher:提供真实分布分数; * trainable student:作为少步生成器; * trainable critic:估计 fake score。 * **两类训练损失** * DMD distribution matching loss:用于更新 student; * flow matching loss:用于更新 critic。 * **可配置训练策略** * 支持 student rollout / simulate rollout; * 支持 generator_update_interval 控制 student 与 critic 的交替更新; * 支持 CFG guidance; * 支持自定义少步去噪 schedule。 --- ## Ascend NPU Adaptation 本 PR 针对 Ascend NPU 做了以下适配: * 惰性激活 torch_npu,避免在非 NPU 环境中强绑定; * 注意力后端固定为 Torch SDPA; * 将 CUDA 专用算子路径隔离为可选逻辑; * 修复 NPU 环境下的 checkpoint RNG 保存逻辑; * 支持多卡 NPU 训练中的 EMA、checkpoint 保存与 DCP 导出; * 支持离线 negative prompt 预编码,避免多 rank 在线文本编码带来的同步问题。 --- ## Supporting Utilities * **配置驱动训练**:单份 YAML 声明模型、方法、训练参数与 callback,并支持 CLI 点号覆盖; * **negative prompt 预编码**:提前编码并保存 text embeddings,训练时直接加载; * **checkpoint 导出**:支持将 DCP 训练 checkpoint 转换为 diffusers 标准格式,便于后续推理和集成。 --- ## Test * [x] --dry-run 校验 YAML 配置解析与运行时组件构建; * [x] 多卡 Ascend NPU 端到端训练跑通; * [x] checkpoint 保存与 resume 正常; * [x] DCP checkpoint 可导出为 diffusers 格式; * [x] 导出的 diffusers checkpoint 可加载并完成推理。 See merge request: Ascend/FlashGen!3 | 10 天前 | |
[Feat] 架构实现及DMD蒸馏流程初始化 Co-authored-by: Zijun Huang<zijunhua@usc.edu> # message auto-generated for no-merge-commit merge: !3 merge master into master [Feat] 架构实现及DMD蒸馏流程初始化 Created-by: Huangzjun Commit-by: Zijun Huang Merged-by: ascend-robot Description: ## Summary FlashGen 是一个面向 **昇腾 Ascend NPU** 的扩散模型蒸馏框架,当前支持在 NPU 上对 **Wan 2.1 T2V 1.3B** 进行 **DMD2(Distribution Matching Distillation)** 多步蒸馏。 本 PR 的核心设计是保持 FlashGen 足够轻量:FlashGen 只实现蒸馏算法、模型适配与配置入口,训练基础设施如 Trainer、分布式、优化器、checkpoint、EMA、pipeline 等均复用已安装的 fastvideo。两者通过 YAML 配置中的 _target_ 字符串在运行时动态连接,FastVideo 无需直接引入 FlashGen 代码。 --- ## Architecture FlashGen 采用分层解耦设计,只保留算法与模型扩展层: text flashgen/ ├── configs/ # 运行配置:YAML + _target_ 动态实例化 ├── networks/ # 模型插件:WanModel,继承上游模型并覆盖 NPU 必需行为 ├── methods/ # 蒸馏算法:DMD2Method,编排 student / teacher / critic ├── datasets/ # 数据格式扩展点,默认复用 FastVideo parquet 数据格式 └── entrypoint # NPU 环境初始化,并委托 FastVideo 训练循环 关键边界: * FlashGen 负责模型与算法逻辑; * FastVideo 负责通用训练基础设施; * 模型、算法和训练组件通过 YAML _target_ 解耦; * 替换模型或蒸馏方法时,原则上只需修改配置,无需改动 FastVideo 主训练框架。 --- ## DMD2 Distillation 当前实现的 DMD2 蒸馏链路包含: * **三角色编排** * frozen teacher:提供真实分布分数; * trainable student:作为少步生成器; * trainable critic:估计 fake score。 * **两类训练损失** * DMD distribution matching loss:用于更新 student; * flow matching loss:用于更新 critic。 * **可配置训练策略** * 支持 student rollout / simulate rollout; * 支持 generator_update_interval 控制 student 与 critic 的交替更新; * 支持 CFG guidance; * 支持自定义少步去噪 schedule。 --- ## Ascend NPU Adaptation 本 PR 针对 Ascend NPU 做了以下适配: * 惰性激活 torch_npu,避免在非 NPU 环境中强绑定; * 注意力后端固定为 Torch SDPA; * 将 CUDA 专用算子路径隔离为可选逻辑; * 修复 NPU 环境下的 checkpoint RNG 保存逻辑; * 支持多卡 NPU 训练中的 EMA、checkpoint 保存与 DCP 导出; * 支持离线 negative prompt 预编码,避免多 rank 在线文本编码带来的同步问题。 --- ## Supporting Utilities * **配置驱动训练**:单份 YAML 声明模型、方法、训练参数与 callback,并支持 CLI 点号覆盖; * **negative prompt 预编码**:提前编码并保存 text embeddings,训练时直接加载; * **checkpoint 导出**:支持将 DCP 训练 checkpoint 转换为 diffusers 标准格式,便于后续推理和集成。 --- ## Test * [x] --dry-run 校验 YAML 配置解析与运行时组件构建; * [x] 多卡 Ascend NPU 端到端训练跑通; * [x] checkpoint 保存与 resume 正常; * [x] DCP checkpoint 可导出为 diffusers 格式; * [x] 导出的 diffusers checkpoint 可加载并完成推理。 See merge request: Ascend/FlashGen!3 | 10 天前 |
FlashGen
FlashGen 是基于昇腾(Ascend)硬件的扩散模型蒸馏加速框架,为昇腾NPU提供多种蒸馏和加速方法。
仓库结构
FlashGen/
├── flashgen/
│ ├── __init__.py
│ ├── configs/
│ ├── datasets/
│ ├── methods/
│ └── networks/
├── scripts/
├── tests/
└── train.py
环境要求
- 昇腾硬件:Atlas 800 训练服务器(Ascend 910B)或更高版本
- CANN:8.5.0 及以上版本
- Python:3.10 及以上
- torch / torch_npu:2.7.1 及以上
- FastVideo:0.2.0
依赖 FastVideo
FlashGen 只实现算法/网络层(flashgen/),训练循环、数据管线等基础设施全部复用 FastVideo。flashgen.entrypoint 在启动时固定 NPU 安全的注意力后端(Torch SDPA),再转发到 fastvideo.train.entrypoint.train。
当前对齐 FastVideo v0.2.0。拉取:
git clone -b v0.2.0 https://github.com/hao-ai-lab/FastVideo.git
cd FastVideo
注意:不能直接 pip install -e .。 FastVideo 的 pyproject.toml 默认会从 CUDA 源拉 torch==2.11.0 和仅限 CUDA 的 fastvideo-kernel,在昇腾环境会覆盖掉 torch_npu 或直接装不上。正确做法是先在 NPU 环境备好 torch / torch_npu,再跳过依赖解析安装:
pip install -e . --no-deps
FastVideo 运行所需的其余依赖(transformers、diffusers、einops 等纯 Python 包)按需手动 pip install,不要让它自动拉 torch / fastvideo-kernel。FlashGen 自身的轻量依赖见 requirements.txt。
安装
git clone <repo-url>
cd FlashGen
pip install -e .
贡献
欢迎贡献!详见 CONTRIBUTING.md。
安全
安全相关须知详见 SECURITY.md。
行为准则
参与本项目即表示您同意遵守 行为准则。
许可证
本项目使用 Mulan PSL v2 许可证。详见 LICENSE。