Contribution Tasks
thu-ml/TurboDiffusion 项目核心是视频扩散模型的极致推理加速,深度依赖 CUDA/CUTLASS 和 Triton 算子。虽然候选人目前没有高端 GPU,但凭借深厚的 PyTorch 内核、分布式训练和算子编译经验,完全可以通过修复构建系统、重构纯 Python 推理管线、排查分布式训练逻辑 bug 以及参与核心算子 PR 的 Code Review,在 CPU/Mac 和免费 T4 环境下产生高价值贡献。
当前方向: 项目正处于早期快速迭代阶段,重点在于集成 LTX-2 模型、优化 FSDP 分布式训练鲁棒性、以及探索更极端的少步数蒸馏(rCM)。同时,社区正在尝试将其适配到更多硬件(如 RTX 5090 FP8、AMD、旧架构 GPU)。
★ 3762 Fork 277 5 个候选任务 Gemini:gemini-3.1-pro-preview
更新于 2026-10-08T07:37:23+00:00 · 本次生成失败,展示上次结果 · 打开仓库 ↗
一、项目定位 TurboDiffusion 是清华大学机器学习组(THU-ML)开源的端到端视频扩散模型(DiT)推理加速框架。其核心目标是通过算法与系统协同设计,在单张消费级或数据中心 GPU 上实现 100-200 倍的生成加速,同时保持视频质量。项目目前处于早期快速迭代阶段(README 明确指出“checkpoints and paper are not finalized”)。
从架构上看,该项目并非通用的深度学习编译器,而是深度绑定特定模型(如 Wan2.1/2.2、LTX-2)的深度优化方案。其加速管线由三部分构成:1) 算法层:基于 rCM(一致性模型)的步数蒸馏,将采样步数压缩至 1-4 步;2) 注意力层:集成 SageAttention 和 SLA(Sparse-Linear Attention)以缓解长序列(如高分辨率多帧视频)的 Attention 瓶颈;3) 算子层:深度定制的 CUDA/CUTLASS Kernel,包括量化、RMSNorm、LayerNorm 和 GEMM。
针对你的硬约束(仅有 Mac + Colab T4)的切入警告 :
这是一个重度依赖高算力 GPU 的项目。根据 setup.py,其自定义 CUDA 扩展 turbo_diffusion_ops 强依赖 CUTLASS,且硬编码了编译目标为 sm_80 到 sm_120a(A100 到 RTX 5090/Blackwell)。这意味着:
1. 你的 Mac 无法编译和运行其核心算子。
2. 你的 Colab T4(Turing 架构,sm_75)默认无法编译该项目 。你必须先修改 setup.py 增加 sm_75 的支持,且由于 CUTLASS 某些新特性可能不支持 Turing,你可能需要降级或修改 Kernel 代码才能在 T4 上跑通。
3. 项目依赖 triton>=3.3.0 和 flash-attn,在 Apple Silicon 上极难原生运行。
切入建议 :发挥你的 PyTorch 融合与分布式经验。在 Mac 上,你可以通过 Mock 掉 turbo_diffusion_ops 模块,专注于 turbodiffusion/rcm(蒸馏逻辑)、turbodiffusion/inference(推理管线)的纯 Python 逻辑重构,或者研究其最近提交的 FSDP 训练代码。Kernel 级别的优化(如 DiT 算子融合)只能盲写,依赖 CI 或极短的 T4 时间验证。
解决什么问题、给谁用 解决高分辨率(480p/720p)视频扩散模型(如 Wan2.1/2.2)在端到端生成时极度缓慢(如 4549秒)以及显存占用过高的问题。通过步数蒸馏(rCM)、稀疏注意力(SLA)和底层算子量化(Quant Linear),使得在单张 24GB/32GB 显存的消费级 GPU(如 RTX 4090/5090)上实现秒级(如 1.9秒)生成成为可能。
AI 视频生成领域的研究人员、AIGC 应用开发者、以及需要在有限算力(单卡)下部署实时/准实时视频生成服务的模型部署工程师。
同类项目与差别 TensorRT / TensorRT-LLM :TRT 是通用的底层推理引擎,而 TurboDiffusion 是针对特定 DiT 模型(Wan系列)的端到端框架,包含了模型层的算法修改(rCM 蒸馏、SLA 稀疏注意力),并非纯粹的计算图编译。FlashAttention / SageAttention :TurboDiffusion 是这些底层 Attention 算子库的消费者。它将 SageAttention 包装进其 SLA 模块中,结合自身的量化和 Norm 算子,形成完整的 DiT 加速管线。DeepSpeed / Megatron-LM :传统框架侧重于大规模集群训练,而 TurboDiffusion 当前的核心亮点是单卡极致推理加速(尽管近期 commit 显示正在加入 FSDP 训练支持)。
核心能力 能力 在哪 成熟度 Wan2.1 T2V (Text-to-Video) 推理 turbodiffusion/inference/wan2.1_t2v_infer.py 成熟 Wan2.2 I2V (Image-to-Video) 推理 turbodiffusion/inference/wan2.2_i2v_infer.py 成熟 基于 CUTLASS 的自定义 CUDA 算子 (GEMM, Quant, Norm) turbodiffusion/ops/ (setup.py) 成熟 rCM (一致性模型) 步数蒸馏采样 turbodiffusion/rcm/ 活跃迭代中 (近期 commit: add discrete-time CM) SLA / SageSLA 稀疏线性注意力 turbodiffusion/inference/ (通过命令行参数 --attention_type 触发) 成熟 线性层量化 (Quant Linear) turbodiffusion/ops/quant/quant.cu 成熟 终端交互式推理服务 (TUI) turbodiffusion/serve/tui.py (pyproject.toml 中的 turbodiffusion-serve) 成熟 LTX-2 模型支持 (TurboT2AV) turbot2va/LTX-2/ 实验 (近期 commit 刚引入 vendored 实现,且为提交热点) FSDP 分布式训练支持 源码路径需验证 (基于 commit: improve FSDP robustness) 实验
阶段: 早期/实验阶段 (Early / WIP)。README 明确声明 "The checkpoints and paper are not finalized, and will be updated later",且近期有大量关于引入新模型 (TurboT2AV/LTX-2) 和修复核心逻辑的提交。
技术栈: Python >= 3.9;PyTorch >= 2.7.0;Triton >= 3.3.0;CUDA C++17;CUTLASS;Ninja / Setuptools (构建系统);flash-attn;einops
规模: 包含 2 个主要模块目录(turbodiffusion 157 个文件,turbot2va 139 个文件)。近期提交极其活跃,LTX-2 相关目录有 58 次提交热点,rcm 目录有 15 次。目前 Release 数量为 0。CUDA 算子硬编码支持 5 种架构(sm_80, sm_89, sm_90, sm_100, sm_120a)。
二、架构与代码地图 TurboDiffusion 的架构设计并非一个通用的大模型推理框架(如 vLLM 或 TensorRT-LLM),而是一个深度绑定特定视频生成模型(Wan2.1/2.2, LTX-2)的算法-系统协同优化(Algorithm-System Co-design) 工程。对于只有 Mac 和极短 T4 验证时间的你来说,理解其分层逻辑至关重要,因为你必须避开底层强依赖高算力 GPU 的 C++ 扩展,将精力集中在纯 Python 逻辑、Triton 算子以及分布式训练调度的重构上。
从上至下,项目可划分为四个核心层:
1. 接入与推理层 (Inference & Serving Layer) :包含 turbodiffusion/inference 和 turbodiffusion/serve,以及 turbot2va 下的 pipeline。这里是端到端生成的入口,负责解析用户 Prompt、加载 VAE/Text Encoder、初始化 DiT 模型,并执行 1-4 步的极速采样循环。此层完全是纯 Python 逻辑,是你在 Mac 上进行重构、API 封装或端侧部署(如导出 ONNX/CoreML)的绝佳切入点。
2. 算法与模型层 (Algorithm & Model Layer) :包含 turbodiffusion/rcm 和 turbot2va/LTX-2/packages/ltx-core。这是项目的核心价值所在。算法上,它实现了基于 rCM(一致性模型)的步数蒸馏(Distillation);模型上,它硬编码了 Wan2.1/2.2 和 LTX-2 的网络结构。最近的提交热点(FSDP 鲁棒性优化、离散时间 CM)都在这里。你可以在 Mac 上阅读并优化其 PyTorch 算子融合逻辑,或研究其 JVP(雅可比向量乘积)的实现。
3. 算子与硬件加速层 (Operator & Hardware Layer) :包含 turbodiffusion/ops(CUDA/CUTLASS)和 turbodiffusion/SLA(稀疏线性注意力),以及散落在各处的 Triton kernels(如 fast_norm_kernels.py)。这是你的硬约束红线区 。ops 目录下的量化 GEMM 和 Norm 算子硬编码了 sm_80 到 sm_120a,在 Mac 和 T4 上均无法直接编译。你的策略应该是:在 Mac 上通过 Python Mock 掉 turbodiffusion.ops,或者专注于优化那些对硬件要求较低的 Triton 算子(T4 可跑)。
4. 基础设施层 (Infrastructure Layer) :包含 turbodiffusion/imaginaire。这是一个从 NVIDIA 借用/魔改的底层库,负责分布式训练状态管理(FSDP/DDP)、Hydra 懒加载配置解析(LazyConfig)、Checkpoint 读写和回调机制(Callbacks)。
接入与推理层 算法与模型层 算子与硬件层 基础设施层 InferencePipeline → Wan_Networks:加载模型与采样 加载模型与采样 InferencePipeline → TurboOps:替换量化算子 替换量化算子 Wan_Networks → SLA_Attention:调用稀疏注意力 调用稀疏注意力 Wan_Networks → TurboOps:执行GEMM/Nor 执行GEMM/Nor RCM_Distillation → Wan_Networks:前向与JVP计算 RCM_Distillation → Triton_Kernels:调用JVP算子 调用JVP算子 RCM_Distillation → Imaginaire_Infra:FSDP与状态管理 FSDP与状态管理 LTX2_Distillation → LTX2_Core:包装与蒸馏 包装与蒸馏 InferencePipeline InferencePipeline RCM_Distillation RCM_Distillation Wan_Networks Wan_Networks LTX2_Core LTX2_Core LTX2_Distillation LTX2_Distillation Triton_Kernels Triton_Kernels SLA_Attention SLA_Attention TurboOps TurboOps Imaginaire_Infra Imaginaire_Infra TurboDiffusion 架构图:推理入口向下调用模型网络,网络层在计算密集处分发给底层 CUDA/Triton 算子,训练过程由基础设施层支撑。
模块 / 路径 职责 · 入口 · 依赖 InferencePipeline turbodiffusion/inference10+ 端到端推理入口,负责模型加载、量化算子替换、采样循环调度。入口:wan2.1_t2v_infer.py, wan2.2_i2v_infer.py 依赖:Wan_Networks, TurboOps, SLA_Attention 纯 Python 逻辑,Mac 上可直接阅读。包含 --quant_linear 和 --attention_type 的路由逻辑。 RCM_Distillation turbodiffusion/rcm50+ 一致性模型蒸馏与训练核心,包含采样器、FSDP 训练器、JVP 计算。入口:trainers/trainer_distillation.py, samplers/euler.py 依赖:Imaginaire_Infra, Wan_Networks 包含大量 PyTorch 分布式训练逻辑(FSDP, Context Parallel),是训练性能优化的主战场。 TurboOps turbodiffusion/ops10+ 深度定制的 CUDA/CUTLASS 算子,用于 W8A8 量化 GEMM、RMSNorm 和 LayerNorm。入口:core.py, bindings.cpp, gemm/gemm.cu 依赖:CUTLASS (外部依赖) 硬约束警告:Mac 无法编译,T4 默认不支持(需改 setup.py 且可能不兼容)。建议在 Mac 上 Mock 此模块。 SLA_Attention turbodiffusion/SLA10- Sparse-Linear Attention 实现,用于缓解长视频序列的 Attention 显存与计算瓶颈。入口:core.py, kernel.py 依赖:SpargeAttn (外部依赖) 推理加速的关键组件之一,依赖特定的 CUDA 扩展。 Imaginaire_Infra turbodiffusion/imaginaire50+ 底层基础设施,提供配置解析、分布式状态管理、IO 与回调系统。入口:trainer.py, lazy_config/lazy.py, utils/distributed.py 依赖:PyTorch Distributed 高度抽象的工程代码,类似 Detectron2 的 LazyConfig 设计。 Wan_Networks turbodiffusion/rcm/networks10- Wan2.1 和 Wan2.2 的网络结构定义,适配了蒸馏和 JVP 逻辑。入口:wan2pt1.py, wan2pt1_jvp.py 依赖:RCM_Distillation 模型结构的硬编码区,若要引入新模型需在此处添加。 LTX2_Core turbot2va/LTX-2/packages/ltx-core50+ LTX-2 视频生成模型的原生实现(Vendored),包含 Transformer 和 VAE。入口:model/transformer/transformer.py, model/audio_vae/audio_vae.py 依赖:PyTorch 近期提交热点,项目正在快速集成 LTX-2 的音视频双向生成能力。 LTX2_Distillation turbot2va/LTX-2/packages/ltx-distillation20+ LTX-2 的蒸馏逻辑与 Triton 加速算子。入口:fast_norm_kernels.py, inference/bidirectional_pipeline.py 依赖:LTX2_Core, Triton 包含大量 Triton 算子(如 fast_rms_norm),这是你在 Mac 上盲写、在 T4 上验证的绝佳目标。 Triton_Kernels turbodiffusion/rcm/utils10- 基于 Triton 实现的 Flash Attention v2 (支持 JVP) 等融合算子。入口:flash_attention_jvp_triton.py 依赖:Triton, flash-attn 算法层面的核心加速点,用于训练阶段的雅可比向量乘积计算。
目录树(按文件数) turbodiffusion/ 157 个文件 SLA, __init__.py, imaginaire, inference, ops, rcm, scripts, serve turbot2va/ 139 个文件 .gitignore, LTX-2, README.md, assets, docs assets/ 71 个文件 TurboDiffusion_Logo.png, TurboDiffusion_speedup.png, acceleration_decomposition.png, i2v_inputs, t2v_inputs, videos scripts/ 3 个文件 inference_wan2.1_t2v.sh, inference_wan2.2_i2v.sh, quantize.sh .gitignore/ 1 个文件 .gitmodules/ 1 个文件 LICENSE/ 1 个文件 MANIFEST.in/ 1 个文件 README.md/ 1 个文件 pyproject.toml/ 1 个文件 setup.py/ 1 个文件
一次调用怎么流过这些模块 以一次典型的 Wan2.1 T2V 推理请求(wan2.1_t2v_infer.py)为例,数据流穿透了从 Python 调度到底层 CUDA 算子的全过程。由于你只有 Mac,理解这个流程有助于你找到可以剥离或 Mock 的环节。
1. 环境与配置初始化 :脚本启动后,首先解析命令行参数(如 --resolution, --num_steps, --quant_linear)。如果启用了量化,系统会通过 turbodiffusion/inference/modify_model.py(需验证具体路径,通常伴随模型加载)或直接在模型初始化时,将标准的 torch.nn.Linear 替换为 turbodiffusion.ops 中的自定义量化算子。
2. 模型加载与文本编码 :系统加载 Wan2.1 的 VAE 和 umT5 Text Encoder。用户输入的 Prompt 经过 umT5 编码,生成高维的文本条件特征(Conditional Embeddings)。
3. 噪声初始化与采样循环 (核心加速区) :
- 根据设定的分辨率和帧数,在 GPU 上初始化纯噪声 Latent Tensor。
- 进入 rCM(一致性模型)的极速采样循环(通常只需 1-4 步,由 --num_steps 控制)。
- 在每一步中,Latent Tensor 和文本特征被送入 Wan_Networks(如 wan2pt1.py)定义的 DiT Block 中。
4. 注意力机制路由 (Attention Dispatch) :
- 在 DiT Block 内部,当执行到 Attention 层时,数据流会根据 --attention_type 发生分叉。
- 如果是 original,调用 turbodiffusion/rcm/utils/attention.py,该模块会根据 GPU 架构(SM80/90/100)动态路由到 Flash Attention 3、SDPA 或 xformers。
- 如果是 sla 或 sagesla,数据流进入 turbodiffusion/SLA 模块,执行稀疏线性注意力计算,大幅降低长视频序列的显存占用。
5. 底层算子执行 (Mac 阻断区) :
- 在前向传播中,所有的 Linear 层计算会下沉到 turbodiffusion/ops/gemm/gemm.cu(CUTLASS W8A8 GEMM)。
- 所有的 Norm 操作下沉到 rmsnorm.cu 或 layernorm.cu。
- 注意 :在 Mac 上,这一步会因为缺少 turbo_diffusion_ops 扩展而崩溃。你必须在第 1 步拦截量化替换逻辑,强制使用原生 PyTorch 算子才能跑通纯逻辑。
6. VAE 解码与输出 :经过 1-4 步去噪后,最终的 Latent Tensor 被送入 VAE Decoder,还原为像素级的视频帧,最后通过 imageio 或 ffmpeg 保存为 MP4 文件。
1 解析参数 InferencePipeline · turbodiffusion/inference/wan2.1_t2v_infer.py 2 加载权重 Imaginaire_Infra · 需验证 3 文本编码 Wan_Networks · turbodiffusion/rcm/tokenizers/wan2pt1.py 4 采样循环 RCM_Distillation · turbodiffusion/rcm/samplers/euler.py 5 注意力路由 SLA_Attention · turbodiffusion/rcm/utils/attention.py 6 算子执行 TurboOps · turbodiffusion/ops/core.py 7 VAE解码 Wan_Networks · 需验证
关键类型与函数 名称 路径 用途 BidirectionalAVInferencePipeline turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/inference/bidirectional_pipeline.py LTX-2 的音视频双向推理管线,负责调度 few-step 降噪过程。 GradClip turbodiffusion/rcm/callbacks/grad_clip.py 训练回调函数,用于梯度裁剪,并区分图像和视频 batch 记录梯度范数到 wandb。 TeroPolyScheduler turbodiffusion/rcm/utils/lr_scheduler.py 多项式学习率调度器,支持 warmup 和 rampdown,基于处理的图像数量(Mimg)进行调度。 LTX2Scheduler turbot2va/LTX-2/packages/ltx-core/src/ltx_core/components/schedulers.py LTX-2 专用的 Sigma 调度器,支持基于 token 数量的 shift 和 stretch 操作。 AttnBlock turbot2va/LTX-2/packages/ltx-core/src/ltx_core/model/audio_vae/attention.py 音频 VAE 中的标准注意力块实现,使用纯 PyTorch 算子(bmm)。 _flash_bwd turbodiffusion/rcm/utils/flash_attention_jvp_triton.py 封装官方 Flash Attention 的反向传播函数,用于 Triton JVP 前向计算中的梯度/雅可比矩阵推导。 fast_rms_norm turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py 基于 Triton 实现的高效 RMSNorm,包含 fallback 机制(适合在 Mac 上触发 fallback)。 fused_add_round_kernel turbot2va/LTX-2/packages/ltx-core/src/ltx_core/loader/kernels.py Triton 算子,用于将 8bit 量化权重通过随机舍入(stochastic rounding)上采样至 bfloat16 并与 LoRA delta 相加。
扩展点 turbodiffusion/rcm/networks/ :新增模型:在此目录下新建模型定义文件(如 new_model.py),实现 DiT 结构,并在 turbodiffusion/rcm/configs/ 中注册对应的 Hydra 配置文件。turbodiffusion/rcm/utils/attention.py :新增 Attention 后端:修改 _get_sdpa_config 函数,根据 device_cc (Compute Capability) 增加新的路由逻辑(如接入新的 Triton Attention 实现)。turbodiffusion/rcm/callbacks/ :新增训练调度策略/监控:继承 imaginaire.utils.callback.Callback,实现 on_training_step_start 等钩子,并在配置中注册。turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py :新增 Triton Kernel:在此处编写 @triton.jit 函数,并务必在 Python 包装函数中提供纯 PyTorch 的 fallback 路径,以保证跨平台兼容性。
最近在动的地方 turbot2va/LTX-2 :高达 58 次近期提交,表明团队正在全力集成和优化 LTX-2(音视频双向生成模型),这是目前最活跃的开发分支。turbodiffusion/rcm :15 次提交,涉及离散时间 CM(discrete-time CM)的引入和 FSDP 鲁棒性的优化,是算法迭代的核心区。turbodiffusion/rcm/utils/fsdp_helper.py :对应提交 'improve FSDP robustness',说明分布式训练的显存/通信调度是当前的痛点。turbodiffusion/rcm/samplers/ :对应提交 'simplify timestep sampler',采样逻辑正在被重构以适应更极端的少步数(1-4步)生成。README.md :频繁更新加速指标和模型链接,反映出项目处于早期快速迭代、频繁发版的阶段。
建议阅读顺序 README.md setup.py turbodiffusion/inference/wan2.1_t2v_infer.py turbodiffusion/rcm/utils/attention.py turbodiffusion/rcm/utils/flash_attention_jvp_triton.py turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py turbodiffusion/ops/core.py turbodiffusion/rcm/trainers/trainer_distillation.py 三、本地跑起来(没有 GPU 的 Mac) 安装 git clone https://github.com/thu-ml/TurboDiffusion.gitcd TurboDiffusiongit submodule update --init --recursivesed -i '' 's/ext_modules=ext_modules/ext_modules=\[\]/g' setup.pysed -i '' '/triton>=3.3.0/d' pyproject.tomlsed -i '' '/flash-attn/d' pyproject.tomlconda create -n turbodiffusion python=3.12conda activate turbodiffusionpip install -e . --no-build-isolation
哪些路径能真跑 在 Mac (CPU/MPS) 上真正可执行的路径包括:1) turbodiffusion/inference/ 和 turbodiffusion/serve/ 下的纯 Python 推理管线与 TUI 交互逻辑;2) turbodiffusion/rcm/ 下的配置解析(Hydra)、调度器(如 lr_scheduler.py)和纯 PyTorch 模型结构定义;3) turbot2va/LTX-2/packages/ltx-core/src/ltx_core/components/schedulers.py 等纯数学张量计算。只能读代码或依赖 Colab T4 验证的路径包括:1) turbodiffusion/ops/ 下的所有 CUDA/CUTLASS 算子(量化 GEMM、RMSNorm);2) turbodiffusion/rcm/utils/flash_attention_jvp_triton.py 等 Triton 算子;3) turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py(虽有 fallback 逻辑,但强依赖 GPU 环境)。
最小可运行 export PYTHONPATH=turbodiffusionturbodiffusion-serve --helpwget https://huggingface.co/TurboDiffusion/TurboWan2.1-T2V-1.3B-480P/resolve/main/TurboWan2.1-T2V-1.3B-480P.pthpython turbodiffusion/inference/wan2.1_t2v_infer.py --model Wan2.1-1.3B --dit_path TurboWan2.1-T2V-1.3B-480P.pth --resolution 480p --prompt "A test video" --num_samples 1 --num_steps 1 --attention_type original --default_norm
测试 项目未在根目录提供统一的测试入口,但存在局部测试目录,如 turbot2va/LTX-2/packages/ltx-core/tests/ 和 turbot2va/LTX-2/packages/ltx-distillation/tests/。推测使用 pytest 作为测试框架。在 Mac 上,可以通过 pytest turbot2va/LTX-2/packages/ltx-core/tests/ 只运行不依赖 GPU 的纯逻辑子集(如 test_transformer_fusion_helpers.py),大概耗时在几秒到十几秒内(需验证)。
调试 日志开关:项目依赖 loguru(见 pyproject.toml),可通过设置环境变量 LOGURU_LEVEL=DEBUG 开启底层详细日志。 断点建议:在 Mac 上重构时,建议在 turbodiffusion/inference/wan2.1_t2v_infer.py 的 Pipeline 初始化处打断点,观察模型结构和权重加载逻辑。 Profiling 入口:项目内置了 turbodiffusion/imaginaire/utils/profiling.py,可用于追踪 PyTorch 算子耗时。 环境变量:执行任何脚本前,必须设置 export PYTHONPATH=turbodiffusion,否则会报模块找不到的错误(README 明确要求)。 CI 仓库目录树中未见 .github/workflows/ 目录,说明目前开源版本没有配置公开的 GitHub Actions CI(需验证是否在内部 GitLab 运行)。PR 提交目前主要依赖人工 Review,不会被自动化的 Lint 或单元测试卡住。
坑 CUDA 架构硬编码:setup.py 中的 cc_flag 写死了 sm_80 到 sm_120a。在 Colab T4 上编译会直接报错,必须手动修改 setup.py 添加 -gencode arch=compute_75,code=sm_75。 量化算子硬件限制:README 明确指出量化权重(-quant)适用于 RTX 4090/5090。在 T4 上强行使用 --quant_linear 会因 CUTLASS 算子不兼容而崩溃,必须下载未量化权重并移除该参数。 Triton 依赖与 Fallback 陷阱:虽然 fast_norm_kernels.py 写了 if not x.is_cuda ... return fallback,但在 Mac 上直接 import triton 就会抛出异常,必须在代码层面 Mock 掉 Triton 的导入逻辑。 Attention 后端回退 Bug:turbodiffusion/rcm/utils/attention.py 会根据 get_device_cc 分发后端,若无 flash_attn 会回退到 PyTorch SDPA。在 Mac MPS 上,SDPA 对 bfloat16 的支持可能存在缺陷,可能需要强制降级到 float32 或纯 CPU 运行。 四、维护者与社区 目前无正式 Release(releases 列表为空)。提交频率呈脉冲式,集中在特定功能开发期(如 2026年3月和8月有密集提交)。README 明确指出 'checkpoints and paper are not finalized',属于典型的早期学术开源项目节奏。
谁 角色 依据 Jintao Zhang 核心作者与维护者 pyproject.toml authors 列表第一位,论文第一作者。 Kaiwen Zheng 核心作者与维护者 pyproject.toml authors 列表第二位,论文第二作者。 Kai Jiang 核心作者与维护者 pyproject.toml authors 列表第三位。 Haoxu Wang 核心作者与维护者 pyproject.toml authors 列表第四位。
流程与 Review 风格 缺乏正式的工程化贡献流程。仓库中没有 CONTRIBUTING.md、CLA/DCO 声明或 pre-commit 配置。贡献者通常直接提交 Issue 或发起 PR(如 PR #133 提交 Triton 算子融合,PR #66 提交 AMD 适配)。
偏向学术团队的实用主义风格。对技术探讨(如 Issue #99 loss 异常、Issue #126 rCM 策略)响应较快(有多次回复);但对非核心路线图的工程需求(如 Issue #128 多卡并行、Issue #127 NPU 支持)往往暂不响应(0 comments)。(需验证具体 PR Review 细节)
渠道 https://github.com/thu-ml/TurboDiffusion https://huggingface.co/TurboDiffusion 这里的规矩 使用中文或英文交流均可(Issue 列表中存在大量中文提问与讨论)。 提问或报 Bug 前需明确硬件环境与模型版本的匹配关系(README 强调 H100 需用非量化版,RTX 5090 需用量化版及 --quant_linear 参数)。 维护者现在最想要的帮助 多卡并行推理与分布式支持(社区在 Issue #5 和 #128 中多次求助,这正是你擅长的分布式训练性能方向,且可在 Mac 上重构纯 Python 调度逻辑)。 Triton 算子融合与优化(社区已提交 PR #133 融合 LayerNorm,你可以利用 Colab T4 验证更多 Triton 级别的算子融合,避开无法编译的 CUTLASS 扩展)。 LoRA 微调与训练管线完善(Issue #93 和 #92 提及,契合你的训练性能背景)。 跨硬件平台适配(社区在尝试 AMD PR #66 和 NPU Issue #127 适配,虽然你受限于 Mac,但可以关注纯 Python 层的解耦)。 七、任务卡 任务 1 优先 · medium · Colab T4 · 1-2 个晚上
修复 setup.py 编译参数,支持 Turing/Ampere 等旧架构 Issue #80 · 报错 nvcc fatal : Unsupported gpu architecture 'compute_120a' ↗
无人认领 1 条评论 更新 2026-01-22
用到的专长: CUDA 编译体系与构建系统
目标: 修改 setup.py 和 ops/cutlass/CMakeLists.txt,使其能够根据环境变量或当前 GPU 动态设置编译架构,或者 fallback 到支持 sm_75/sm_80/sm_86/sm_89。
为什么值得长期做: 构建系统是开源项目的基础。解除对最新架构的硬编码限制,能极大降低社区参与门槛,是你在 T4 上开展后续工作的前置条件。
怎么介入: 直接认领并提交 PR。第一个 PR 的边界: 仅修改构建脚本,不涉及业务逻辑。
第一步: 检查 setup.py 中的 nvcc 编译参数,移除硬编码的 compute_120a,改为动态获取。
本机怎么复现 / 验证: 在 Colab T4 上克隆代码,运行 pip install -e . --no-build-isolation,观察是否报错。
认领留言(英文,可直接贴到 Issue) Hi, I can help fix this. The issue is caused by hardcoded compute capabilities (like compute_120a) in setup.py and CMake files. I will update the build scripts to dynamically detect the target GPU architecture or respect TORCH_CUDA_ARCH_LIST, allowing it to compile on older GPUs like A10 (sm_86) or T4 (sm_75). I'll test the compilation on a T4 instance and submit a PR within 2 days. 复制留言
大致实施方案 在 setup.py 中引入 torch.utils.cpp_extension.CUDAExtension 时,动态获取当前设备的 compute capability。 如果环境变量 TORCH_CUDA_ARCH_LIST 存在,则优先使用该环境变量。 检查 ops/cutlass/CMakeLists.txt,将硬编码的架构列表改为可配置,或包含更广泛的架构(如 75, 80, 86, 89, 90)。 在 Colab T4 上测试编译是否通过,处理可能出现的 CUTLASS 兼容性问题。 可能涉及的目录或文件 setup.py ops/cutlass/CMakeLists.txt
验收方式 在 Colab T4 上运行 pip install -e . --no-build-isolation,确认编译成功且无 Unsupported gpu architecture 报错。 开工前问题与风险 向维护者确认 是否需要保留对 sm_120a 的默认支持,还是完全依赖用户的环境检测? 风险 CUTLASS 某些新特性可能不支持 sm_75,可能需要降级 CUTLASS 版本或添加宏隔离。 任务 2 优先 · low · Mac · 1 个晚上
修复使用 original attention 时加载权重的 Unexpected key 错误 Issue #122 · net.load_state_dict(state_dict, assign=True) 失败 ↗
无人认领 1 条评论 更新 2026-03-09
用到的专长: PyTorch 模型结构与权重管理
目标: 在推理脚本中,当 --attention_type original 时,正确过滤 state_dict 中的 local_attn 等 SLA 特有权重,避免加载失败。
为什么值得长期做: 权重加载是推理管线的入口,修复此问题能让用户顺利回退到原生 attention 进行对比测试,提升框架的鲁棒性。
怎么介入: 直接认领并提交 PR。第一个 PR 的边界: 仅修改推理脚本中的权重加载逻辑。
第一步: 定位 turbodiffusion/inference/wan2.2_i2v_infer.py 中的 load_state_dict 逻辑。
本机怎么复现 / 验证: 在 Mac 上运行 python turbodiffusion/inference/wan2.2_i2v_infer.py --attention_type original ...,观察是否抛出 Unexpected key 异常。
认领留言(英文,可直接贴到 Issue) Hi, I can fix this. The issue occurs because the checkpoint contains SLA-specific weights (like local_attn.proj_l), but the model instantiated with --attention_type original doesn't have these modules. I will add a filtering logic to safely remove these keys from the state_dict before loading when original attention is selected. I'll submit a PR shortly. 复制留言
大致实施方案 检查 state_dict 中的 key,发现包含 local_attn.proj_l 等 SLA 特有的权重。 在 wan2.2_i2v_infer.py 和 wan2.1_t2v_infer.py 中,当 attention_type == 'original' 时,在调用 load_state_dict 前,遍历并 pop 掉这些不需要的 key。 确保模型在 original 模式下能成功初始化,不抛出 Unexpected key 异常。 可能涉及的目录或文件 turbodiffusion/inference/wan2.2_i2v_infer.py turbodiffusion/inference/wan2.1_t2v_infer.py
验收方式 在 Mac 上运行推理脚本,指定 --attention_type original,确认模型权重加载成功(可 mock 掉 CUDA 依赖)。 开工前问题与风险 向维护者确认 original 模式下是否应该直接忽略这些 SLA 权重,还是需要做某种转换? 风险 如果使用 strict=False 可能会掩盖其他真正的权重缺失问题,建议显式过滤特定的 key。 任务 3 可选 · low · Mac · 1 个晚上
调查并修复 14B 480p 模型 local_attn 权重为 0 的问题 Issue #109 · Sparse Linear Layer weights are 0 for 14B 480p model ↗
无人认领 0 条评论 更新 2026-01-27
用到的专长: 模型权重分析与张量操作
目标: 验证 14B 480p 模型的权重是否真的为 0,如果是,排查导出逻辑或提供诊断报告。
为什么值得长期做: 确保开源模型权重的正确性是维护者最关心的问题之一,这能直接提升用户体验。
怎么介入: 认领调查任务,提供诊断结果。第一个 PR 的边界: 提供诊断脚本或修复合并逻辑。
第一步: 下载 14B 480p 模型的部分权重,检查 local_attn 相关的 key。
本机怎么复现 / 验证: 在 Mac 上下载权重文件,运行 python -c "import torch; ckpt=torch.load('...', map_location='cpu'); print(ckpt['...local_attn...'].abs().sum())"。
认领留言(英文,可直接贴到 Issue) Hi, I can help investigate this. I will write a script to inspect the downloaded 14B 480p checkpoint and verify if the local_attn weights are exactly zero. If they are, I'll check the model merging/export scripts to see if there's a bug causing this, or if it's an issue with the uploaded checkpoint itself. I'll report back with my findings shortly. 复制留言
大致实施方案 编写一个 Python 脚本,使用 torch.load(..., map_location='cpu') 加载权重文件。 遍历所有包含 local_attn 的 key,计算其绝对值之和,检查非零元素的比例。 如果确实为 0,检查 turbodiffusion/scripts/merge_models.py,分析是否是因为合并逻辑有误导致权重被清零。 在 Issue 中回复调查结果。如果发现是代码 bug,提交 PR 修复;如果是官方权重问题,提醒维护者重新上传。 可能涉及的目录或文件 turbodiffusion/scripts/merge_models.py
验收方式 脚本输出权重统计信息,明确指出哪些层的权重为 0。 开工前问题与风险 向维护者确认 14B 480p 模型的 SLA 部分是否经过了完整的训练?还是直接使用了初始化的 0 权重? 风险 如果是官方上传的权重有问题,候选人只能提供诊断脚本,无法直接修复权重文件。 任务 4 可选 · medium · Mac · 1-2 个晚上
修复 t2v_model_distill_rcm.py 中的 NotImplementedError Issue #97 · NotImplementedError ↗
无人认领 2 条评论 更新 2026-01-23
用到的专长: PyTorch 训练框架与调试
目标: 修复 t2v_model_distill_rcm.py 中调用 net 时抛出的 NotImplementedError。
为什么值得长期做: 深入分布式训练逻辑,解决模型前向传播中的基础 bug,是参与核心算法迭代的必经之路。
怎么介入: 直接认领并提交 PR。第一个 PR 的边界: 修复模型调用逻辑。
第一步: 检查 t2v_model_distill_rcm.py 的 denoise 方法,确认 net 的类型和初始化方式。
本机怎么复现 / 验证: 编写一个极简脚本,实例化 t2v_model_distill_rcm.py 中的模型,传入随机张量调用 denoise 方法。
认领留言(英文,可直接贴到 Issue) Hi, I can look into this. The NotImplementedError usually happens when a PyTorch nn.Module is called but its forward method is missing, which might be caused by incorrect model wrapping (e.g., FSDP) or passing a dict instead of the module itself. I will trace the net initialization in t2v_model_distill_rcm.py and provide a fix. I'll submit a PR within a few days. 复制留言
大致实施方案 错误堆栈显示在 net_output_B_C_T_H_W = net(...) 时抛出 NotImplementedError,这通常是因为 net 是一个 nn.Module 但没有实现 forward 方法,或者被错误地包装(如 FSDP 包装后调用方式不对)。 检查 net 的初始化逻辑,确认它是否是 WanModel 或其包装类。 如果 net 是一个字典或包含了多个子模块,确保调用的是正确的子模块的 forward。 编写一个极简的 CPU 测试脚本,实例化该模型并传入 dummy data,复现并修复该问题。 可能涉及的目录或文件 turbodiffusion/rcm/models/t2v_model_distill_rcm.py
验收方式 在 Mac 上运行单步前向传播测试,不再抛出 NotImplementedError。 开工前问题与风险 向维护者确认 训练时使用的具体模型配置是什么?是否启用了 FSDP? 风险 可能依赖特定的分布式环境,需要在 Mac 上 mock 分布式环境或使用 gloo 后端。 任务 5 可选 · high · Mac · 2-3 个晚上
Review RTX 5090 平台 FP8 推理优化代码 Issue #131 · 请求新增 RTX 5090 平台 FP8 推理优化分支 ↗
无人认领 0 条评论 更新 2026-06-10
用到的专长: CUDA 算子融合与量化(FP8)
目标: 审阅用户提交的 FP8 优化代码,检查算子融合、量化逻辑的正确性,并提供专业反馈。
为什么值得长期做: 参与核心算子和量化逻辑的 Code Review,是发挥你资深 GPU kernel 工程师专长、建立技术权威和信任的最佳途径。
怎么介入: 这是一个用户请求 review 的 Issue,直接回复提供 review 帮助。第一个 PR 的边界: 无 PR,仅提供 review。
第一步: 在 Issue 中回复,表示愿意帮忙 review 代码,并请求对方提供 fork 链接或开启 Draft PR。
本机怎么复现 / 验证: 纯代码阅读,无需复现。
认领留言(英文,可直接贴到 Issue) Hi, thanks for the great contribution! I'm a GPU kernel engineer experienced in quantization and operator fusion. Although I don't have a 5090 at hand to test the performance, I'd be happy to help review the code logic, especially the FP8 row-wise quantization, GELU fusion, and memory management parts. Could you please open a Draft PR or share the link to your fork? I can leave my review comments there. 复制留言
大致实施方案 获取用户的分支代码。 重点 review FP8 Linear/FFN 算子实现,检查 row-wise quant 的缩放因子计算是否正确。 检查 GELU + FP8 quant 融合路径的数值稳定性。 检查 Q/K/V FP8 量化复用是否会引入精度下降。 在 Issue 或 PR 中给出详细的 review 意见,指出潜在的显存泄漏或计算错误。 可能涉及的目录或文件
验收方式 开工前问题与风险 向维护者确认 能否提供包含这些改动的 fork 仓库链接或直接开启一个 Draft PR? 风险 无法在真机上验证性能,只能从逻辑和数值计算角度进行 review。