← 所有项目

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)。

★ 3762Fork 2775 个候选任务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 应用开发者、以及需要在有限算力(单卡)下部署实时/准实时视频生成服务的模型部署工程师。

同类项目与差别

核心能力

能力在哪成熟度
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/NorRCM_Distillation → Wan_Networks:前向与JVP计算RCM_Distillation → Triton_Kernels:调用JVP算子调用JVP算子RCM_Distillation → Imaginaire_Infra:FSDP与状态管理FSDP与状态管理LTX2_Distillation → LTX2_Core:包装与蒸馏包装与蒸馏InferencePipelineInferencePipelineRCM_DistillationRCM_DistillationWan_NetworksWan_NetworksLTX2_CoreLTX2_CoreLTX2_DistillationLTX2_DistillationTriton_KernelsTriton_KernelsSLA_AttentionSLA_AttentionTurboOpsTurboOpsImaginaire_InfraImaginaire_Infra
TurboDiffusion 架构图:推理入口向下调用模型网络,网络层在计算密集处分发给底层 CUDA/Triton 算子,训练过程由基础设施层支撑。
模块 / 路径职责 · 入口 · 依赖
InferencePipeline
turbodiffusion/inference
10+
端到端推理入口,负责模型加载、量化算子替换、采样循环调度。
入口:wan2.1_t2v_infer.py, wan2.2_i2v_infer.py
依赖:Wan_Networks, TurboOps, SLA_Attention
纯 Python 逻辑,Mac 上可直接阅读。包含 --quant_linear 和 --attention_type 的路由逻辑。
RCM_Distillation
turbodiffusion/rcm
50+
一致性模型蒸馏与训练核心,包含采样器、FSDP 训练器、JVP 计算。
入口:trainers/trainer_distillation.py, samplers/euler.py
依赖:Imaginaire_Infra, Wan_Networks
包含大量 PyTorch 分布式训练逻辑(FSDP, Context Parallel),是训练性能优化的主战场。
TurboOps
turbodiffusion/ops
10+
深度定制的 CUDA/CUTLASS 算子,用于 W8A8 量化 GEMM、RMSNorm 和 LayerNorm。
入口:core.py, bindings.cpp, gemm/gemm.cu
依赖:CUTLASS (外部依赖)
硬约束警告:Mac 无法编译,T4 默认不支持(需改 setup.py 且可能不兼容)。建议在 Mac 上 Mock 此模块。
SLA_Attention
turbodiffusion/SLA
10-
Sparse-Linear Attention 实现,用于缓解长视频序列的 Attention 显存与计算瓶颈。
入口:core.py, kernel.py
依赖:SpargeAttn (外部依赖)
推理加速的关键组件之一,依赖特定的 CUDA 扩展。
Imaginaire_Infra
turbodiffusion/imaginaire
50+
底层基础设施,提供配置解析、分布式状态管理、IO 与回调系统。
入口:trainer.py, lazy_config/lazy.py, utils/distributed.py
依赖:PyTorch Distributed
高度抽象的工程代码,类似 Detectron2 的 LazyConfig 设计。
Wan_Networks
turbodiffusion/rcm/networks
10-
Wan2.1 和 Wan2.2 的网络结构定义,适配了蒸馏和 JVP 逻辑。
入口:wan2pt1.py, wan2pt1_jvp.py
依赖:RCM_Distillation
模型结构的硬编码区,若要引入新模型需在此处添加。
LTX2_Core
turbot2va/LTX-2/packages/ltx-core
50+
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-distillation
20+
LTX-2 的蒸馏逻辑与 Triton 加速算子。
入口:fast_norm_kernels.py, inference/bidirectional_pipeline.py
依赖:LTX2_Core, Triton
包含大量 Triton 算子(如 fast_rms_norm),这是你在 Mac 上盲写、在 T4 上验证的绝佳目标。
Triton_Kernels
turbodiffusion/rcm/utils
10-
基于 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.py2加载权重Imaginaire_Infra · 需验证3文本编码Wan_Networks · turbodiffusion/rcm/tokenizers/wan2pt1.py4采样循环RCM_Distillation · turbodiffusion/rcm/samplers/euler.py5注意力路由SLA_Attention · turbodiffusion/rcm/utils/attention.py6算子执行TurboOps · turbodiffusion/ops/core.py7VAE解码Wan_Networks · 需验证

关键类型与函数

名称路径用途
BidirectionalAVInferencePipelineturbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/inference/bidirectional_pipeline.pyLTX-2 的音视频双向推理管线,负责调度 few-step 降噪过程。
GradClipturbodiffusion/rcm/callbacks/grad_clip.py训练回调函数,用于梯度裁剪,并区分图像和视频 batch 记录梯度范数到 wandb。
TeroPolySchedulerturbodiffusion/rcm/utils/lr_scheduler.py多项式学习率调度器,支持 warmup 和 rampdown,基于处理的图像数量(Mimg)进行调度。
LTX2Schedulerturbot2va/LTX-2/packages/ltx-core/src/ltx_core/components/schedulers.pyLTX-2 专用的 Sigma 调度器,支持基于 token 数量的 shift 和 stretch 操作。
AttnBlockturbot2va/LTX-2/packages/ltx-core/src/ltx_core/model/audio_vae/attention.py音频 VAE 中的标准注意力块实现,使用纯 PyTorch 算子(bmm)。
_flash_bwdturbodiffusion/rcm/utils/flash_attention_jvp_triton.py封装官方 Flash Attention 的反向传播函数,用于 Triton JVP 前向计算中的梯度/雅可比矩阵推导。
fast_rms_normturbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py基于 Triton 实现的高效 RMSNorm,包含 fallback 机制(适合在 Mac 上触发 fallback)。
fused_add_round_kernelturbot2va/LTX-2/packages/ltx-core/src/ltx_core/loader/kernels.pyTriton 算子,用于将 8bit 量化权重通过随机舍入(stochastic rounding)上采样至 bfloat16 并与 LoRA delta 相加。

扩展点

最近在动的地方

建议阅读顺序

  1. README.md
  2. setup.py
  3. turbodiffusion/inference/wan2.1_t2v_infer.py
  4. turbodiffusion/rcm/utils/attention.py
  5. turbodiffusion/rcm/utils/flash_attention_jvp_triton.py
  6. turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py
  7. turbodiffusion/ops/core.py
  8. turbodiffusion/rcm/trainers/trainer_distillation.py

三、本地跑起来(没有 GPU 的 Mac)

安装

  1. git clone https://github.com/thu-ml/TurboDiffusion.git
  2. cd TurboDiffusion
  3. git submodule update --init --recursive
  4. sed -i '' 's/ext_modules=ext_modules/ext_modules=\[\]/g' setup.py
  5. sed -i '' '/triton>=3.3.0/d' pyproject.toml
  6. sed -i '' '/flash-attn/d' pyproject.toml
  7. conda create -n turbodiffusion python=3.12
  8. conda activate turbodiffusion
  9. pip 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 环境)。

最小可运行

  1. export PYTHONPATH=turbodiffusion
  2. turbodiffusion-serve --help
  3. wget https://huggingface.co/TurboDiffusion/TurboWan2.1-T2V-1.3B-480P/resolve/main/TurboWan2.1-T2V-1.3B-480P.pth
  4. python 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),大概耗时在几秒到十几秒内(需验证)。

调试

CI

仓库目录树中未见 .github/workflows/ 目录,说明目前开源版本没有配置公开的 GitHub Actions CI(需验证是否在内部 GitLab 运行)。PR 提交目前主要依赖人工 Review,不会被自动化的 Lint 或单元测试卡住。

坑

四、维护者与社区

目前无正式 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 细节)

渠道

这里的规矩

维护者现在最想要的帮助

五、切入方案

建议长期负责:分布式训练调度 (FSDP) 与硬件无关推理管线 (Hardware-Agnostic Inference)
完美避开你没有高端 GPU 的硬约束。FSDP 逻辑完全是纯 Python 和 PyTorch 分布式 API,可以在 Mac 上用 gloo 后端进行多进程模拟调试;硬件无关推理管线则能发挥你的工程架构能力,通过 Mock 和 SDPA 降级,让项目在 Mac 上跑通端到端 Graph,这不仅是你切入的刚需,也是开源社区扩大受众的刚需。

它现在缺什么(你无 GPU 也能补)

缺口依据为什么是你
缺乏针对非高端 GPU (如 Mac/CPU) 的推理 Fallback 机制。setup.py 强制编译 sm_80 以上的 CUDA 扩展,导致在 Mac 上直接 import 报错。你可以通过 Python Mock 技术和 PyTorch 原生算子替换,打通 Mac 上的纯 Python 推理管线,方便无 GPU 开发者阅读和调试代码。
缺乏对 Turing 架构 (T4) 的编译支持。setup.py 中的 cc_flag 最低仅支持 sm_80 (A100),Colab T4 (sm_75) 无法编译。你熟悉 CUDA 编译体系,只需修改 setup.py 并处理少量 CUTLASS 兼容性问题,即可让项目在免费 T4 上跑通基础验证。
分布式训练 (FSDP) 调度逻辑缺乏单元测试与 CPU 验证机制。存在 turbodiffusion/rcm/utils/fsdp_helper.py 且近期有 improve FSDP robustness 提交,但无测试用例。你是分布式训练性能专家,可以在 Mac 上使用 gloo 后端模拟多进程环境,重构并测试 FSDP 调度逻辑。
Attention 模块在非 CUDA 环境下缺乏优雅降级。turbodiffusion/rcm/utils/attention.py 强依赖 CUDA compute capability 判断,在 Mac (MPS) 上会报错或回退到低效实现。你熟悉 PyTorch 内核,可以完善 SDPA 在 MPS 上的调度逻辑,提升端侧调试体验。
Triton 算子缺乏针对旧架构的调优。turbot2va/LTX-2/packages/ltx-distillation/src/ltx_distillation/fast_norm_kernels.py 中的 num_warps 写死为 16 或 8,未针对 T4 等小显存/少 SM 架构优化。你精通 Triton,可以在 Colab T4 上通过极短的时间完成 block size 和 warps 的 tuning。
缺乏端侧部署 (TensorRT/ONNX) 的导出管线。scripts/ 目录下只有 inference 和 quantize 脚本,没有任何 export 逻辑。你擅长端侧部署和 TensorRT,可以在 Mac 上完成 PyTorch 到 ONNX 的纯 CPU 导出逻辑编写。

第 1–30 天:看懂并露面

第 31–60 天:稳定产出

第 61–90 天:接管一块

第一批 PR

题目范围为什么安全
build: Support Turing architecture (sm_75) in setup.pysetup.py仅修改编译参数列表,不改变任何业务逻辑,是你在 T4 上开展后续工作的前置条件。
test: Add unit tests for learning rate and diffusion schedulersturbodiffusion/rcm/utils/lr_scheduler.py, turbot2va/LTX-2/packages/ltx-core/src/ltx_core/components/schedulers.py纯数学逻辑测试,完全不依赖 GPU,能显著提升项目的工程质量,极易被学术团队接受。
feat: Add graceful degradation for non-CUDA devices in attention dispatcherturbodiffusion/rcm/utils/attention.py原代码强依赖 torch.cuda.get_device_capability,修改后仅在非 CUDA 环境下生效,不影响原有的 H100/RTX5090 核心路径。
fix: Add mock fallback for turbodiffusion.ops on CPU/MPSturbodiffusion/ops/__init__.py通过 try-except 捕获 ImportError,在非 GPU 环境下提供警告并 fallback 到原生 PyTorch,不影响 GPU 用户的正常使用。

怎么知道自己站住了

风险与对策
  • 学术团队可能认为支持 Mac/CPU 或旧 GPU (T4) 超出了项目极致加速的初衷,从而拒绝 PR。:在 PR 描述中明确强调这是为了提升开发者体验 (DX) 和扩大社区贡献者基数,而非用于生产环境推理。
  • Colab T4 的免费时长极短,可能在编译 CUTLASS 扩展时超时。:在 T4 上仅编译你正在调试的特定 .cu 文件,或者在 GitHub Actions 中配置免费的 CPU 交叉编译流程生成 wheel 包。
  • 纯 Python 的 FSDP 逻辑在 Mac 上模拟时可能无法复现真实的 NCCL 通信死锁。:专注于 FSDP 的 API 封装、显存分配逻辑和 Checkpoint 读写鲁棒性,避免深入底层的通信原语调试。
  • 项目处于早期快速迭代期,底层模型结构 (Wan2.1/LTX-2) 可能频繁变动导致你的 Mock 代码失效。:将你的 Mock 逻辑做成松耦合的 Decorator 或 Context Manager,避免直接侵入核心业务代码。

六、怎么介入这个项目

建议顺序

成为长期维护者的路径
  • 打通项目的跨硬件编译与运行基建(如支持 T4/Mac fallback)
  • 深入分布式训练(FSDP)与模型权重加载的纯逻辑层,修复核心 bug
  • 通过高质量的 Code Review 参与核心算子(FP8/量化)的演进,建立技术信任

七、任务卡

任务 1优先 · medium · Colab T4 · 1-2 个晚上

修复 setup.py 编译参数,支持 Turing/Ampere 等旧架构

无人认领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 错误

无人认领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 的问题

无人认领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

无人认领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 推理优化代码

无人认领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。