| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[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 天前 | |
完善步数蒸馏文档并调整默认训练模式 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 天前 | |
[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 | 11 天前 | |
[Feature]增加dmd2算法 Co-authored-by: huangyizhe<huangyizhe22@foxmail.com> # message auto-generated for no-merge-commit merge: !4 merge master into master [Feature]增加dmd2算法 Created-by: hyz22 Commit-by: huangyizhe Merged-by: ascend-robot Description: ## 概述 本 PR 新增/完善 flashgen.methods.dmd2.DMD2Method,实现 DMD2 蒸馏训练 方法的算法层逻辑。该方法基于 ModelBase 抽象组织 student、teacher、 critic 三类角色模型,支持 generator 与 fake score critic 的交替/间隔更 新,并将 DMD loss 与 critic flow matching loss 集成到统一训练流程中。 ## 主要改动 - 实现 DMD2 角色模型校验: - student 必须可训练 - teacher 必须冻结 - critic 必须可训练 - 增加 DMD2 专用配置解析: - rollout_mode: 支持 simulate 与 data_latent - cfg_uncond: 支持 text 等条件通道的 unconditional 策略 - dmd_denoising_steps - warp_denoising_step - generator_update_interval - real_score_guidance_scale - critic optimizer 相关配置 - 分离 student 与 critic 的 optimizer / scheduler: - student 使用全局 optimizer 配置 - critic 使用 fake_score_learning_rate、fake_score_betas、 fake_score_lr_scheduler - 实现 DMD2 核心训练损失: - generator 侧 DMD loss - critic 侧 fake score flow matching loss - 支持两种 student rollout 路径: - data_latent: 基于真实 latent 加噪后预测 x0 - simulate: 从噪声出发按 denoising step 模拟 rollout - 优化训练显存占用: - 在 single_train_step 内对 student loss 和 critic loss 分阶段 eager backward - 释放 student graph 后再构建 critic graph - 避免 generator-update step 中 student 与 critic 计算图同时驻留导致 峰值显存过高 - 适配 Trainer 的 backward 流程: - single_train_step 内部已执行 backward 时,通过 _fv_backward.already_applied 标记 - backward() 在正常路径下 no-op,保留 defensive fallback ## 配置要求 DMD2 方法需要在 method config 中显式配置以下关键字段: ```yaml method: rollout_mode: simulate # or data_latent dmd_denoising_steps: [...] fake_score_learning_rate: ... fake_score_betas: [0.0, 0.999] fake_score_lr_scheduler: constant 可选字段包括: method: generator_update_interval: 1 real_score_guidance_scale: 1.0 warp_denoising_step: false cfg_uncond: on_missing: error text: negative_prompt ## 风险与注意事项 - simulate rollout 会多次调用 student 进行去噪模拟,训练开销高于 data_latent。 - DMD loss 依赖 teacher、critic 对同一 noisy latent 的预测结果,相关模 型接口需要正确实现 predict_x0 / predict_noise / add_noise。 - 当前实现假设 Trainer 允许 method 在 single_train_step 内提前执行 backward。 ## 验证建议 - 使用最小 DMD2 配置跑通单步训练。 - 验证 generator_update_interval > 1 时 student optimizer/scheduler 只 在指定 iteration 更新。 - 对比 eager backward 前后的峰值显存,确认 generator-update step 的显存 占用下降。 - 分别验证 simulate 与 data_latent rollout 模式。 See merge request: Ascend/FlashGen!4 | 9 天前 | |
[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 | 11 天前 | |
| 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 | 11 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 天前 | ||
| 3 天前 | ||
| 11 天前 | ||
| 9 天前 | ||
| 11 天前 | ||
| 14 天前 | ||
| 11 天前 |