← 所有项目

Contribution Tasks

RightNow-AI/autokernel

该项目是一个 GPU 算子自动优化 AI 代理框架,核心闭环强依赖 GPU。但其调度层、Profiler 分析层、生态导出工具以及 CUDA/Triton 模板的编写完全可以在无 GPU 的 Mac 上进行。候选人作为资深 Kernel 工程师,可以离线编写高阶算子模板(如 DiT 相关的 AdaLN),并在 Colab T4 上做单次验证;同时可以重构纯 Python 的 Profiler 和调度逻辑,完美避开本地无 GPU 的硬约束,发挥在算子融合和性能建模上的专长。

当前方向:项目正从早期的 Triton 验证阶段,快速向追求极致性能的 CUDA C++ 落地(大量引入 Tensor Core 和 Shared Memory 优化)以及 HuggingFace 生态整合方向演进。

★ 1564Fork 1644 个候选任务Gemini:gemini-3.1-pro-preview

更新于 2026-10-08T07:37:23+00:00 · 本次生成失败,展示上次结果 · 打开仓库 ↗

一、项目定位

AutoKernel 是一个受 Karpathy autoresearch 启发的 GPU 算子自动优化 AI 代理框架。它的核心理念是:给定任意 PyTorch 模型,AI Agent 会自动分析瓶颈、提取算子,并在一个无限循环中(修改代码 -> 编译运行 -> 验证正确性与性能 -> 保留或回滚)不断迭代优化 Triton 或 CUDA C++ 算子。对于你这样资深的 Kernel 工程师,这个项目并不是一个底层的算子库(如 CUTLASS),而是一个「算子研发自动化流水线」。 项目目前处于快速迭代期(从 pyproject.toml 的 1.0.0 到 Changelog 的 v1.3.0),近期提交热点高度集中在 kernels/cuda(13次提交)和 HuggingFace 算子导出(export_hf.py)。这表明项目正在从纯 Triton 验证阶段,向追求极致性能的 CUDA C++ 落地以及生态整合方向演进。 针对你的硬件约束(仅有 Mac + 免费 Colab T4)的切入建议: 由于该项目的核心闭环 bench.py 强依赖 NVIDIA GPU(甚至 README 标明在 H100/A100/4090 上测试)进行真实的 TFLOPS 和内存带宽测试,你在 Mac 上无法完整运行 Agent 迭代。但你的资深背景依然可以发挥巨大价值: 1. 离线模板与 Prompt 优化:你可以纯文本审查和优化 kernels/cuda/ 下的 C++ 模板,或者修改 program.md(Agent 的 System Prompt),将你对 CuTe/CUTLASS、Warp Specialization、Tensor Core wmma 的深刻理解注入给 LLM,指导它写出更优的代码。 2. 调度与工程架构:在 Mac 上开发和测试 orchestrate.py(基于 Amdahl 定律的调度逻辑)、profile.py(基于 CPU 模拟或离线 trace 的分析)以及 kernelbench/ 的集成逻辑。 3. 云端验证:利用 Colab T4 运行单次 uv run bench.py 或 uv run kernelbench/bench_kb.py 来验证你注入的高阶 CUDA 技巧是否被 LLM 正确采纳并编译通过。

解决什么问题、给谁用

解决深度学习模型中自定义算子(Triton/CUDA)开发门槛高、手工调优耗时长、且 LLM 一次性生成算子正确率和性能低下的问题。通过引入类似强化学习的「编辑-测试-反馈」闭环,让 AI 代理在无人值守的情况下(Overnight)暴力搜索并验证算子优化空间。

目标用户为 AI 基础设施工程师、模型研究员以及需要针对特定硬件(如 RightNow Enterprise 提及的企业级 GPU 优化)榨取极致性能的团队。典型场景包括:新模型架构的快速算子收敛、KernelBench 刷榜验证、以及将优化好的算子一键导出至 HuggingFace Hub 供社区使用。

同类项目与差别

核心能力

能力在哪成熟度
模型 Profiling 与瓶颈提取profile.py, extract.py成熟
基于 Amdahl 定律的多算子调度orchestrate.py成熟
Triton 算子基线与生成kernels/ (如 matmul.py, flash_attention.py 等 9 种)成熟
CUDA C++ 算子基线与生成kernels/cuda/成熟
五阶段正确性与性能基准测试bench.py成熟
端到端模型验证与加速比报告verify.py成熟
KernelBench 自动化刷榜集成kernelbench/ (bridge.py, bench_kb.py, scorer.py)成熟
HuggingFace 算子导出export_hf.py, examples/hf_kernels_test成熟
AMD ROCm 硬件支持CHANGELOG.md (v1.3.0)实验(需验证具体代码实现)

阶段:早期到中期快速发展阶段(核心闭环已跑通,正在横向扩展生态如 HF 导出和 AMD ROCm 支持)。

技术栈:Python >= 3.10;PyTorch >= 2.4.0 (torch-cu128);Triton >= 3.3.0;CUDA C++ (通过 ninja >= 1.11.0 构建);uv (包管理与环境隔离);HuggingFace 生态 (transformers, datasets, huggingface-hub);HolisticTraceAnalysis (HTA 性能分析)

规模:支持 9 种核心算子类型;内置 5 个独立模型定义(GPT-2, LLaMA 等);单次实验耗时约 90 秒(一晚可跑 ~320 次);支持 KernelBench 的 250+ 个标准化问题;近期在 kernels/cuda 目录有 13 次密集提交;pyproject.toml 标定版本为 1.0.0,Changelog 最新记录为 v1.3.0。

二、架构与代码地图

AutoKernel 的架构设计并非传统的「底层算子库」,而是一条高度自动化的「算子研发流水线」。对于只有 Mac 环境的资深 Kernel 工程师而言,理解这种分层至关重要,因为你的主战场将集中在无需 GPU 即可开发的「调度层」与「模板层」。 1. 入口与调度层 (Entry & Orchestration Layer):包含 profile.py、extract.py 和 orchestrate.py。这一层负责将任意 PyTorch 模型解构为独立的算子问题。profile.py 利用 torch.profiler 寻找耗时瓶颈,orchestrate.py 则基于阿姆达尔定律(Amdahl's law)决定下一个该优化的算子。切入点:这部分纯 Python 逻辑完全可以在 Mac 上开发,你可以引入更复杂的 CPU 模拟调度策略或离线 Trace 分析。 2. Agent 交互层 (Agent Interaction Layer):由 program.md(System Prompt)和 kernel.py(Agent 唯一修改的文件)组成。这是 AI 与代码库的接口。切入点:你可以纯文本审查和优化 program.md,将你对 Warp Specialization、寄存器压力控制的理解注入 Prompt,指导 LLM 避开常见的 CUDA 陷阱。 3. 执行与评测层 (Execution & Evaluation Layer):核心是 bench.py、verify.py 和 kernels/cuda/_compile.py。这里执行严格的 5 阶段正确性检查(冒烟、形状扫描、数值稳定性、确定性、边界情况)和 Roofline 性能测试。_compile.py 实现了带缓存的 CUDA C++ JIT 编译(基于 load_inline)。切入点:这是强依赖 GPU 的一层,你在 Mac 上无法运行,但可以通过 Colab T4 运行单次 uv run bench.py 来验证编译和基础逻辑。 4. 模板与生态层 (Templates & Ecosystem Layer):包含 kernels/(Triton)、kernels/cuda/(CUDA C++)以及 export_hf.py。这里存放了 9 大核心算子的初始模板(如 FlashAttention、SwiGLU)。近期提交热点高度集中于此。切入点:这是你发挥核心价值的地方。你可以离线编写极致优化的 CUDA C++ 模板(如利用 nvcuda::wmma、Double-buffered Shared Memory),作为 Agent 的起点;同时参与 export_hf.py 的开发,将优化好的算子推向 HuggingFace 生态。

调度与入口层Agent 交互层评测与执行层模板与生态层Profiler → Extractor:瓶颈报告Extractor → TargetKernel:初始模板初始模板Orchestrator → TargetKernel:切换目标切换目标AgentPrompt → TargetKernel:修改指令TargetKernel → Benchmark:待测源码待测源码Benchmark → CUDACompiler:JIT编译JIT编译Benchmark → Orchestrator:性能反馈性能反馈Orchestrator → Verifier:触发验证触发验证TargetKernel → HFExporter:导出发布导出发布CUDATemplates → Extractor:提供模板提供模板ProfilerProfilerExtractorExtractorOrchestratorOrchestratorAgentPromptAgentPromptTargetKernelTargetKernelBenchmarkBenchmarkVerifierVerifierCUDACompilerCUDACompilerCUDATemplatesCUDATemplatesHFExporterHFExporterKernelBenchKernelBench
AutoKernel 自动化算子研发流水线架构图
模块 / 路径职责 · 入口 · 依赖
Profiler
profile.py
百行级
模型剖析器。运行 PyTorch 模型,利用 torch.profiler 捕获算子耗时,并根据规则分类为特定 Kernel 类型。
入口:_KERNEL_CLASSIFICATION, _fallback_detect_gpu
依赖:models/
包含硬件探测逻辑 (GPUSpec),可在 Mac 上扩展 CPU/MPS 的 fallback 逻辑以便本地调试。
Extractor
extract.py
百行级
算子提取器。读取 Profiler 报告,将 Top-N 瓶颈算子对应的模板代码拷贝到 workspace 准备优化。
入口:需验证
依赖:profile.py, kernels/
连接模型分析与单算子优化的桥梁。
Orchestrator
orchestrate.py
百行级
多算子调度器。基于阿姆达尔定律决定当前应该把算力(Agent API Token)投资在哪个算子上收益最大。
入口:需验证
依赖:bench.py
纯逻辑层,非常适合在 Mac 上进行算法迭代和单元测试。
AgentPrompt
program.md
文档
AI 代理的「大脑」与操作手册。包含 6 层优化剧本、决策框架和崩溃处理指南。
入口:program.md
依赖:无
注入资深 Kernel 工程师经验的最佳文本载体。
TargetKernel
kernel.py
百行级
Agent 唯一被允许修改的文件。包含当前正在优化的 Triton 或 CUDA C++ 源码。
入口:kernel_fn
依赖:kernels/cuda/_compile.py
动态生成和修改,是整个闭环的中心数据结构。
Benchmark
bench.py
数百行
固定基准测试台。执行 5 阶段正确性验证和 TFLOPS/带宽性能测试,输出 results.tsv。
入口:需验证
依赖:kernel.py, reference.py
强依赖 NVIDIA GPU,Mac 用户需借助 Colab 运行。
CUDACompiler
kernels/cuda/_compile.py
百行级
CUDA C++ JIT 编译器。处理源码哈希缓存、架构自动探测(-gencode)和 pybind11 包装。
入口:compile_cuda, _hash_source, _get_arch_flags
依赖:torch.utils.cpp_extension
将构建时间从 30s 缩短到 5s 的关键,支持线程安全锁。
CUDATemplates
kernels/cuda/
十几个文件
CUDA C++ 算子初始模板库。包含 FlashAttention、Matmul、LayerNorm 等 9 种算子的高性能起点。
入口:CUDA_SRC, KERNEL_TYPE
依赖:kernels/cuda/_compile.py
近期提交热点(13次)。大量使用了 wmma、__shfl_down_sync 等底层 intrinsic。
Verifier
verify.py
百行级
端到端验证器。将优化后的所有算子插回原 PyTorch 模型,验证最终输出正确性并报告总加速比。
入口:需验证
依赖:models/, workspace/
闭环的最后一步,确保局部优化不会破坏全局语义。
HFExporter
export_hf.py
百行级
生态导出工具。自动检测后端(Triton/CUDA),提取源码并打包为 HuggingFace Kernels 格式。
入口:detect_backend, extract_cuda_source
依赖:kernel.py
项目向生态整合演进的标志,近期有 3 次提交。
KernelBench
kernelbench/
5个文件
标准评测集集成。用于在 250+ 标准 GPU 算子问题上评估 AutoKernel 的迭代优化能力。
入口:bench_kb.py, scorer.py, bridge.py
依赖:datasets
引入了 fast_p 指标,Agent 指令由 program_kb.md 独立控制。
目录树(按文件数)
  • kernels/ 21 个文件
    __init__.py, cross_entropy.py, cuda, flash_attention.py, fused_mlp.py, layernorm.py, matmul.py, reduce.py, rmsnorm.py, rotary_embedding.py, softmax.py
  • examples/ 5 个文件
    hf_kernels_test
  • kernelbench/ 5 个文件
    __init__.py, bench_kb.py, bridge.py, program_kb.md, scorer.py
  • models/ 5 个文件
    __init__.py, bert_base.py, custom.py, gpt2.py, llama_7b.py
  • .gitignore/ 1 个文件
  • .python-version/ 1 个文件
  • CHANGELOG.md/ 1 个文件
  • LICENSE/ 1 个文件
  • README.md/ 1 个文件
  • analysis.py/ 1 个文件
  • bench.py/ 1 个文件
  • export_hf.py/ 1 个文件
  • extract.py/ 1 个文件
  • kernel.py/ 1 个文件
  • orchestrate.py/ 1 个文件
  • prepare.py/ 1 个文件

一次调用怎么流过这些模块

AutoKernel 的数据流是一个典型的「分析 -> 提取 -> 迭代优化 -> 验证」的强化学习式闭环。一次完整的模型优化路径如下: 1. 入口剖析 (Profiling):用户运行 uv run profile.py 传入模型(如 models/llama_7b.py)。系统使用 torch.profiler 捕获前向传播,通过 _KERNEL_CLASSIFICATION 规则(如匹配 flash、gemm)将底层算子映射为 9 大支持的 KERNEL_TYPE。输出关键数据结构 profile_report.json,记录各算子的 GPU 耗时占比。 2. 算子提取 (Extraction):extract.py 读取报告,按耗时降序(Top-N)将对应的初始模板(优先从 kernels/cuda/,其次 kernels/)拷贝到 workspace/ 目录下,准备进行独立优化。 3. 调度决策 (Orchestration):orchestrate.py 介入,基于阿姆达尔定律计算当前哪个算子的理论全局收益最大,将其选定为当前目标,并将其代码复制为 kernel.py。 4. AI 迭代闭环 (Agent Loop): - Agent 读取 program.md 和当前的 kernel.py。 - Agent 修改 kernel.py 中的 CUDA_SRC 或 Triton 代码。 - 触发 bench.py。如果是 CUDA 后端,kernels/cuda/_compile.py 会提取 CUDA_SRC,计算哈希,动态生成 pybind11 包装并调用 load_inline 进行 JIT 编译。 - bench.py 执行 5 阶段正确性检查(对比 reference.py),若通过则测试 TFLOPS/带宽,结果追加到 results.tsv。 - Agent 读取测试结果,决定保留 (Keep) 或回滚 (Revert) 代码,进入下一次循环。 5. 端到端验证与导出 (Verification & Export):所有算子优化达到阈值后,verify.py 将它们替换回原模型进行端到端测试。最终,用户可通过 export_hf.py 解析 kernel.py,提取源码并发布到 HuggingFace Hub。 针对 Mac 用户的调度点:上述流程中,步骤 1-3 和 5 的控制流完全可以在 CPU 上模拟或执行。你可以通过伪造 profile_report.json 和 results.tsv,在 Mac 上专注开发 orchestrate.py 的调度算法或 export_hf.py 的解析逻辑,仅在需要真实编译时将 kernel.py 丢到 Colab T4 验证。

1剖析模型Profiler · profile.py2提取算子Extractor · extract.py3调度决策Orchestrator · orchestrate.py4AI修改代码TargetKernel · kernel.py5JIT编译CUDACompiler · kernels/cuda/_compile.py6基准测试Benchmark · bench.py7端到端验证Verifier · verify.py

关键类型与函数

名称路径用途
_KERNEL_CLASSIFICATIONprofile.pyList[Tuple[List[str], str]],定义了从 PyTorch 底层算子名(如 'fmha', 'cublas')到 AutoKernel 标准算子类型(如 'flash_attention', 'matmul')的映射规则。
GPUSpecprofile.pyDataclass,存储当前 GPU 的硬件规格(SM 数量、显存、峰值 TFLOPS、带宽、计算能力),用于 Roofline 性能评估。
compile_cudakernels/cuda/_compile.py核心 JIT 编译函数。接收 CUDA C++ 字符串,处理哈希缓存、架构 flag 生成,并返回编译好的 PyTorch C++ 扩展模块。
CUDA_SRCkernels/cuda/*.py全局字符串变量,包含原生的 CUDA C++ 设备代码和内核启动逻辑,是 Agent 实际阅读和修改的文本载体。
WelfordStatekernels/cuda/layernorm.pyC++ Struct,用于在 LayerNorm 中实现 Welford 在线算法,保证单次 pass 计算均值和方差的数值稳定性。
wmma::fragmentkernels/cuda/matmul.pyCUDA nvcuda 命名空间下的模板类,用于直接调用 Tensor Core 进行 16x16x16 矩阵乘加运算。
kernel_fnkernels/cuda/reduce.pyPython 函数,作为 bench.py 调用的统一入口,负责处理 Tensor 的 dtype/shape 转换并调用底层编译好的 C++ 模块。
ModelNewkernelbench/program_kb.mdKernelBench 模式下的目标类名,Agent 需要编写此类的 Triton/CUDA 实现以替换原始的 PyTorch Model。

扩展点

最近在动的地方

建议阅读顺序

  1. README.md
  2. program.md
  3. profile.py
  4. kernels/cuda/_compile.py
  5. kernels/cuda/matmul.py
  6. bench.py
  7. orchestrate.py
  8. export_hf.py

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

安装

  1. git clone https://github.com/RightNow-AI/autokernel.git
  2. cd autokernel
  3. sed -i '' '/pytorch-cu128/d' pyproject.toml
  4. sed -i '' '/tool.uv.sources/d' pyproject.toml
  5. sed -i '' '/tool.uv.index/d' pyproject.toml
  6. sed -i '' '/"triton>=3.3.0",/d' pyproject.toml
  7. uv sync --extra models --extra hf-kernels --extra kernelbench

哪些路径能真跑

完全可在 Mac (CPU/MPS) 上执行的路径: 1. 调度与分析层:profile.py(支持 CPU Profiling,源码中的 _fallback_detect_gpu 在无 CUDA 时会安全返回空 GPUSpec)、extract.py、orchestrate.py(基于 Amdahl 定律的纯 Python 调度逻辑)。 2. 生态导出层:export_hf.py(基于纯文本正则和 AST 解析提取 CUDA_SRC,完全不依赖 GPU)。 3. KernelBench 桥接:kernelbench/bridge.py(从 HuggingFace 下载并缓存题目)。 必须依赖 GPU(需用 Colab T4 验证)的路径: 1. 编译与执行:kernels/cuda/_compile.py(强依赖 nvcc 和 torch.utils.cpp_extension.load_inline)、bench.py(5 阶段正确性与 Roofline 性能测试)、verify.py。 2. KernelBench 评测:kernelbench/bench_kb.py 和 kernelbench/scorer.py。

最小可运行

  1. uv run prepare.py
  2. uv run profile.py --model models/llama_7b.py --class-name LlamaModel --input-shape 1,512
  3. uv run extract.py --top 5
  4. uv run export_hf.py --name my_matmul --kernel kernels/cuda/matmul.py
  5. uv run kernelbench/bridge.py fetch --source hf --level 1

测试

项目没有传统的 pytest 测试套件(目录树中无 tests/ 目录)。测试即「基准测试与验证」,核心是 bench.py(针对单个算子的 5 阶段正确性检查:冒烟、形状扫描、数值稳定性、确定性、边界情况)和 verify.py(端到端验证)。根据 README,单次 bench.py 实验耗时约 90 秒。在 Mac 上无法运行这些测试,你必须将修改后的 kernels/cuda/*.py 复制到 Colab T4 上,通过 uv run bench.py 进行单点验证。

调试

CI

目录树中未发现 .github/workflows/ 或其他 CI 配置文件(需验证是否在内部私有仓库运行)。目前开源版本的 PR 极大概率依赖维护者手工拉取并在本地 A100/4090 上运行 uv run bench.py 和 uv run verify.py。因此,提交 PR 前务必在 Colab T4 上确保你的 CUDA C++ 代码能通过 bench.py 的 5 阶段正确性检查,否则会被直接打回。

坑

四、维护者与社区

项目处于极速迭代期。从 2026 年 3 月 11 日到 19 日的短短几天内,密集提交了 12 次核心更新(涉及 CUDA 模板、HuggingFace 导出、Bug 修复等)。目前仓库没有发布正式的 GitHub Release,但通过 CHANGELOG.md 记录了 v1.3.0 的演进,而 pyproject.toml 仍标为 1.0.0,这表明项目正处于早期快速验证与功能扩张阶段。

谁角色依据
RightNow-AI核心维护组织仓库所属的官方组织,主导了 README 的编写、核心架构设计(如 bench.py 和 orchestrate.py)以及商业化导流(RightNow Enterprise)。
@andyluo7核心贡献者 (AMD ROCm 生态)在 README 的 v1.3.0 Changelog 中被特别感谢,提交了 PR #6 增加了 AMD MI300X 的 Agent 优化支持与 HIP 兼容性。

流程与 Review 风格

目前没有正式的 CONTRIBUTING.md、CLA 或 DCO 要求。贡献流程属于典型的早期开源项目:直接通过 Issue 提出需求或报告 Bug(如 Issue #9 提出解析失败),然后提交 PR 修复(如 PR #10 修复 extract.py)。由于项目强依赖 uv 进行依赖管理,本地开发需使用 uv sync 和 uv run 进行测试。对于你来说,可以在 Mac 上用 uv 搭建纯 CPU 的调度层开发环境。

响应迅速且务实,对外部贡献持开放态度。Issue #1 和 #2 在提出后很快有了多次互动评论,且社区成员提交的 PR(如 PR #13 修复 orchestrate.py 时间预算,PR #10 修复 shape 解析)能迅速被跟进。维护者非常欢迎生态集成(如 HuggingFace kernels 的导出功能就是在近期密集提交中完成的)。

渠道

这里的规矩

维护者现在最想要的帮助

五、切入方案

建议长期负责:CUDA 模板架构师与 Agent 优化策略(Prompt)负责人
AutoKernel 的核心壁垒不是底层的 C++ 编译脚本,而是「提供给 LLM 的初始模板质量」以及「指导 LLM 迭代的 Prompt 规则」。这两个方向高度依赖资深 Kernel 工程师的 Domain Knowledge(领域知识),且表现形式为纯文本(C++ 源码字符串、Markdown 指令)。这使得你可以完全在 Mac 上进行架构设计与代码编写,仅在需要验证编译通过率时使用免费的 Colab T4。通过掌控 kernels/cuda/ 和 program.md,你将直接决定该项目生成的算子性能上限,是通向核心维护者最快、最契合你硬件约束的路径。

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

缺口依据为什么是你
缺乏基于 CuTe/CUTLASS 的高阶 CUDA 模板源码片段显示 kernels/cuda/matmul.py 目前使用的是原生的 nvcuda::wmma API,且注释提到 16x16x16 tiles 和双缓冲,这属于较基础的 Tensor Core 用法,尚未引入更现代的 CuTe 布局抽象。你作为资深 Kernel 工程师,对 CuTe/CUTLASS 有深刻理解。你可以纯离线编写这些高阶模板,只需在 Colab T4 上做最终编译验证,完美避开无本地 GPU 的限制。
Agent Prompt 缺乏针对高阶 CUDA 优化的系统性指导项目依赖 program.md 指导 LLM,但目前 LLM 容易在寄存器溢出(Register Spilling)、Warp Specialization 等高级技巧上犯错(提交热点显示 kernels/cuda 频繁修改)。你可以将你脑海中的「CUDA 避坑指南」和「性能调优启发式规则」转化为纯文本,注入到 program.md 中,这完全不需要 GPU 即可完成。
缺少针对扩散模型(DiT/视频生成)的核心算子模板目录树 kernels/ 下目前只有 flash_attention.py, fused_mlp.py, rmsnorm.py 等标准大语言模型(LLM)算子,缺乏 AdaLN、3D RoPE 等 DiT 专属算子。你擅长扩散模型推理加速,可以直接贡献这些新兴算子的初始模板,拓宽 AutoKernel 的适用场景。
HuggingFace 导出工具的鲁棒性有待提升export_hf.py 依赖正则表达式和 AST 解析来提取 CUDA_SRC(如 extract_cuda_source 函数),面对 LLM 生成的复杂或不规范的 C++ 宏定义时容易失效。这是一个纯 Python 的字符串与 AST 处理任务,完全可以在 Mac CPU 上开发和编写单元测试。
调度层(Orchestrator)缺乏基于关键路径的复杂分析README 提到 orchestrate.py 仅基于基础的阿姆达尔定律(Amdahl's law)进行调度,可能无法处理复杂的算子融合(Fusion)收益评估。你拥有丰富的 PyTorch 算子融合经验,可以在 Mac 上重构调度逻辑,引入更智能的离线算子图分析。
无 GPU 环境下的 Profiler 降级体验较弱profile.py 中存在 _fallback_detect_gpu,在无 CUDA 时返回空的 GPUSpec,但无法进行离线的 Roofline 模拟分析。你可以引入基于硬件规格字典的离线 Roofline 模拟器,让开发者在 Mac 上也能跑通 profile.py 的分析流程。

第 1–30 天:看懂并露面

第 31–60 天:稳定产出

第 61–90 天:接管一块

第一批 PR

题目范围为什么安全
feat(export): enhance CUDA_SRC regex extraction in export_hf.pyexport_hf.py这是一个纯 Python 的字符串处理任务。当前的正则可能无法完美处理带有复杂注释或多行宏定义的 C++ 代码。在 Mac 上编写并使用 pytest(或简单的 assert 脚本)即可完全验证,不依赖任何 GPU 环境。
feat(templates): add AdaLN (Adaptive LayerNorm) CUDA template for DiT modelskernels/cuda/adaln.py, kernels/adaln.py, profile.py新增算子模板不会破坏现有的 LLM 迭代循环。你可以离线编写 CUDA C++ 代码,在 Colab T4 上单次运行 bench.py 验证编译和正确性,这能直接发挥你在扩散模型领域的专长。
docs(prompt): inject warp specialization and register pressure guidelinesprogram.md纯文本修改。通过优化 System Prompt,指导 LLM 在生成代码时主动使用 __launch_bounds__ 或避免过度展开循环。这不需要跑测试,但能显著提升 Agent 生成代码的质量。
feat(profiler): add offline Roofline simulation for CPU-only environmentsprofile.py增强现有的 _fallback_detect_gpu 函数,允许用户通过环境变量或参数指定目标 GPU(如 --simulate-gpu H100),从而在 Mac 上也能生成完整的 profile_report.json。纯 Python 逻辑,完全本地可测。

怎么知道自己站住了

风险与对策
  • 盲写 CUDA C++ 代码导致在真实 GPU 上编译失败或出现隐蔽的并发 Bug(如 Race Condition)。:严格遵守「Mac 上编写 + Colab T4 上验证」的闭环。在提交 PR 前,务必在 Colab 中运行 uv run bench.py 通过 5 阶段正确性检查。
  • LLM Agent 无法理解或正确使用你引入的复杂 CuTe/CUTLASS 模板,导致生成的代码性能反而下降。:在引入高阶模板的同时,必须同步更新 program.md,给出具体的代码示例和修改边界(告诉 LLM 哪些部分可以改,哪些部分是 CuTe 核心逻辑不能动)。
  • 项目维护者更倾向于保持模板的简单性(如裸 wmma),拒绝引入学习曲线陡峭的 CuTe。:在提交代码前先开 Issue 讨论。可以提议将高阶模板作为可选的 Backend(例如新增 kernels/cute/ 目录),而不是直接覆盖现有的基础模板。
  • Colab T4 算力较老(Turing 架构,sm_75),无法验证针对 Hopper (sm_90) 的 TMA 或 TMA Multicast 优化。:在代码中使用宏定义(如 #if __CUDA_ARCH__ >= 900)隔离高阶特性。对于无法测试的 sm_90 代码,在 PR 中明确标注「需拥有 H100 的维护者协助验证」。

六、怎么介入这个项目

社区入口:img.shields.io/badge/Discord-Join%20us-5 · discord.gg/UfEyc72t

建议顺序

成为长期维护者的路径
  • CUDA 模板架构师
  • Agent 优化策略(Prompt)负责人
  • 性能分析与调度层核心维护者

七、任务卡

任务 1优先 · easy · Colab T4 · 1个晚上

修复 fused_mlp.py 中 Triton math.tanh 编译报错

无人认领0 条评论更新 2026-08-16

用到的专长:Triton 算子开发与调试

目标:修复 kernels/fused_mlp.py 中 tl.math.tanh 导致的 AttributeError,使提供的复现脚本能成功编译。

为什么值得长期做:解决基础算子的编译错误是维护算子库稳定性的第一步,能快速向维护者展示你对 Triton 底层 API 的熟悉程度,建立信任。

怎么介入:Issue 无人认领,直接留言认领。
第一个 PR 的边界:仅修改 kernels/fused_mlp.py 中的 tanh 调用。
第一步:调查 Triton 当前版本对 tanh 的支持路径(如是否应使用 tl.math.libdevice.tanh 或 tl.extra.cuda.libdevice.tanh)。
本机怎么复现 / 验证:在 Mac 上安装 triton(可能需要特定版本),保存 Issue 中的代码为 repro.py 并运行 python repro.py 观察编译报错。
认领留言(英文,可直接贴到 Issue)
I can take this. I'll check the Triton version compatibility for tanh (likely needing tl.extra.cuda.libdevice.tanh or similar depending on the version) and fix kernels/fused_mlp.py. I can test it with the provided script and run the benchmark suite. Expect a PR in a day or two.
大致实施方案
  • 在本地或 Colab 运行 Issue 提供的复现脚本,确认报错。
  • 修改 kernels/fused_mlp.py,将 tl.math.tanh 替换为当前 Triton 版本兼容的调用方式。
  • 在 Colab T4 上运行 uv run bench.py 验证 fused_mlp 算子的正确性。
可能涉及的目录或文件
  • kernels/fused_mlp.py
验收方式
  • 运行 Issue 中的复现脚本不再报错。
  • 在 Colab T4 上运行 uv run bench.py 针对 fused_mlp 通过正确性测试。
开工前问题与风险

向维护者确认

  • 项目目前主要针对哪个版本的 Triton 进行测试?

风险

  • 不同 Triton 版本 API 可能有差异,需确保兼容项目 pyproject.toml 中的版本要求。
任务 2优先 · medium · Colab T4 · 2-3个晚上

添加 DiT 模型所需的 Modulated LayerNorm (AdaLN) 算子模板

无人认领0 条评论更新 2026-07-29

用到的专长:扩散模型推理加速、CUDA/Triton 算子开发

目标:添加 modulated_layernorm (AdaLN) 的 PyTorch 参考实现和初始 Triton/CUDA 模板。

为什么值得长期做:扩展 AutoKernel 的适用场景至当前热门的扩散模型,直接展现你在前沿模型架构和算子融合上的深厚积累。

怎么介入:Issue 提问者表示愿意贡献,但目前无 assignee 且无 PR。可以留言提议合作或先提供基础模板。
第一个 PR 的边界:新增 modulated_layernorm 算子类型及其参考实现和基础模板。
第一步:在 reference.py 中实现 modulated_layernorm 的 PyTorch 版本。
本机怎么复现 / 验证:在 Mac 上编写代码,使用 python -m pytest 或直接运行 reference.py 验证 PyTorch 逻辑;最终编译需在 Colab 运行 uv run bench.py。
认领留言(英文,可直接贴到 Issue)
I'm very interested in this for DiT models. I can start by contributing the base modulated_layernorm (AdaLN) kernel types (PyTorch reference, Triton, and CUDA C++ templates) and wiring them into bench.py. We can iterate on the generic custom-kernel interface later. Does this sound like a good first step?
大致实施方案
  • 在 reference.py 中添加 modulated_layernorm(x, scale, shift, weight, bias, eps)。
  • 在 kernels/ 和 kernels/cuda/ 下分别创建 modulated_layernorm.py,提供基础的 Triton 和 CUDA C++ 实现。
  • 在 bench.py 中注册该算子类型,并配置相应的输入 shape 生成逻辑。
  • 在 Colab T4 上运行 uv run bench.py 验证正确性。
可能涉及的目录或文件
  • reference.py
  • kernels/modulated_layernorm.py
  • kernels/cuda/modulated_layernorm.py
  • bench.py
验收方式
  • 在 Colab T4 上运行 uv run bench.py,确保 modulated_layernorm 通过 5 阶段正确性测试。
开工前问题与风险

向维护者确认

  • 对于 broadcast layout,初始版本是否先只支持 [B, T, D] 格式的 scale/shift?

风险

  • CUDA C++ 模板可能在 Colab T4 (SM75) 上编译通过,但在 H100 上有差异,需尽量使用标准 API。
任务 3可选 · medium · Mac · 2个晚上

扩展 Profiler 以识别量化模型 (bitsandbytes) 算子

无人认领1 条评论更新 2026-04-06

用到的专长:模型量化、PyTorch Profiler 分析

目标:扩展 profile.py 中的算子分类逻辑,使其能识别 bitsandbytes 等量化库产生的特定 kernel 名称。

为什么值得长期做:介入核心的 Profiler 逻辑,为后续复杂的量化算子优化铺平道路,发挥你的端侧部署和量化经验。

怎么介入:Issue 提出者给出了思路但表示还没准备好实现。可以直接认领阶段 1 和 2。
第一个 PR 的边界:仅修改 profile.py,添加量化参数解析和 kernel 名称分类规则。
第一步:审查 profile.py 中的 _KERNEL_CLASSIFICATION 字典和分类逻辑。
本机怎么复现 / 验证:在 Mac 上编写一个包含假 kernel 名称的 JSON trace 文件,修改 profile.py 读取该文件并验证分类输出。
认领留言(英文,可直接贴到 Issue)
I can help with Step 1 and 2 (Loading and Profiling quantized models). I'll extend profile.py to parse bitsandbytes kernel names and classify them correctly, and add CLI flags for quantization configs. I can mock the profiler traces to test this locally. PR should be ready in a few days.
大致实施方案
  • 收集 bitsandbytes 常见的 kernel 名称(如 igemmlt, quantize_blockwise 等)。
  • 在 profile.py 中扩展分类规则,将这些 kernel 映射到新的类型(如 quant_matmul)。
  • 编写一个简单的 mock 测试,模拟包含量化 kernel 的 profiler 输出,验证分类逻辑。
可能涉及的目录或文件
  • profile.py
验收方式
  • 运行包含 mock 量化 kernel 名称的单元测试,确保它们被正确分类。
开工前问题与风险

向维护者确认

  • 是否希望在 profile.py 中直接引入 bitsandbytes 依赖,还是仅通过字符串匹配 kernel 名称?

风险

  • 无法在 Mac 上真实运行 bnb 模型,需依赖离线 trace 或 mock 数据进行验证。
任务 4可选 · medium · Mac · 2-3个晚上

增强 Profiler 输出以支持 Temporal Breakdown 分析

无人认领2 条评论更新 2026-03-12

用到的专长:PyTorch Profiler、性能瓶颈分析

目标:扩展 profile.py,解析 torch.profiler 的输出,生成类似 HTA 的 temporal breakdown(如计算、内存、通信的时间占比)。

为什么值得长期做:深入项目的性能分析核心,为 Agent 提供更丰富的上下文,直接发挥你的性能调优经验。

怎么介入:Issue 提出者给出了建议,维护者有回复。可以留言提议实现一个轻量级的内置解析器。
第一个 PR 的边界:修改 profile.py,增加对 profiler events 的汇总统计逻辑。
第一步:研究 torch.profiler 导出的 JSON trace 格式,找出如何区分计算和内存操作。
本机怎么复现 / 验证:在 Mac 上准备一个 trace.json,编写脚本调用 profile.py 中的解析函数并打印结果。
认领留言(英文,可直接贴到 Issue)
I can help enhance profile.py to provide a basic temporal breakdown (compute vs memory vs overhead) by parsing the torch.profiler events directly, without adding heavy dependencies like HTA. This will give the agent better context on where the time is spent. I can develop and test this using offline traces. Let me know if this approach works for you.
大致实施方案
  • 在 profile.py 中添加逻辑,遍历 profiler events。
  • 统计不同类型操作(如 aten:: 算子、cudaMemcpy 等)的耗时。
  • 在输出的 profile 报告中增加 temporal_breakdown 字段。
可能涉及的目录或文件
  • profile.py
验收方式
  • 使用预先捕获的 trace 文件在 Mac 上运行分析脚本,检查输出的 breakdown 比例是否合理。
开工前问题与风险

向维护者确认

  • 是否希望引入外部库(如 hta)还是保持零依赖自己解析 trace?

风险

  • 自己解析 trace 可能不够准确,引入 hta 可能增加依赖负担。