Hugging Face CUDA 内核代理技能
Hugging Face 已开发了一项代理技能,教导编码代理如何编写可投入生产的 CUDA 内核。通过向 Claude 和 Codex 等代理提供领域特定知识,团队成功生成了适用于 diffusers 流水线和 transformers 模型的可工作内核,并配备了 PyTorch 绑定和性能基准。
使代理能够编写 CUDA 内核
编写 CUDA 内核传统上是一项高门槛任务,需要深入了解 GPU 架构特定的内存访问模式、向量化策略以及 warp shuffle 归约。Hugging Face 的代理技能通过将专业领域专长打包成结构化格式,使代理能够按需加载,从而弥合了这一差距。
技能组件
该技能包括约 550 个 token 的结构化指导以及一套完整的参考材料:
- GPU 优化指南:针对 NVIDIA H100、A100 和 T4 GPU 的架构感知指导,涵盖计算能力、共享内存大小和带宽特性。
- 集成模式:针对将内核集成到
diffusers和transformers库中的具体指南和常见坑点。 - 内核模板:针对 BF16、FP16 和 FP32 精度的向量化内存访问模式。
- 工作流:用于独立内核微基准测试和端到端流水线对比的模板。
- Hub 集成:使用
get_kernel从 HuggingFace Kernel Hub 加载社区内核的说明。
安装与使用
该技能通过 kernels 库分发。可以使用 kernels skills add cuda-kernels 命令将其安装到各种代理环境(Claude Code、Cursor、Codex、OpenCode)中。安装后,用户可以提示代理构建特定的内核,例如 “针对 transformers 中 Qwen3-8B 模型的 H100 向量化 RMSNorm 内核”。
性能基准
为了验证该技能,Hugging Face 在两项真实场景目标上使用 H100 80GB HBM3 GPU(BFloat16 精度)测试了代理生成的内核。
Diffusers:LTX-Video
代理为 LTX-Video 视频生成流水线生成了 RMSNorm、RoPE 3D、GEGLU 和 AdaLN 内核。
- 独立 RMSNorm 性能:自定义内核相较于 PyTorch 基准实现了平均 1.88 倍 的加速,带宽效率达到 H100 理论最大值的 34.7%。
- 端到端性能:优化后的内核相较于基准实现了 1.06 倍 的加速(从 12.58 it/s 提升至 13.52 it/s)。与
torch.compile结合使用时,加速提升至 1.43 倍。
Transformers:Qwen3-8B
代理为 Qwen3-8B 大语言模型构建了 RMSNorm 内核,该模型使用了 65 个 RMSNorm 模块。
- 独立 RMSNorm 性能:自定义内核相较于 PyTorch 基准实现了平均 1.94 倍 的加速。
- 扩展性:加速随序列长度增加而提升,从 128 token 时的 1.58 倍提升至 8192 token 时的 2.47 倍,有效将长上下文推理的 RMSNorm 延迟减半。
从生成到通过 Kernel Hub 分发
代理技能负责开发阶段,而 HuggingFace Kernel Hub 负责分发。发布代理生成的内核的工作流程如下:
- 项目结构:代理生成遵循
kernel-builder布局的项目,包括kernel_src/(CUDA 源代码)、torch-ext/(C++ 绑定)以及指定目标 GPU CUDA 能力的build.toml配置(例如 H100 为 “9.0”)。 - 多变体构建:使用 Nix flake,开发者为所有所需的 PyTorch 和 CUDA 配置构建内核,以确保在不同环境矩阵中的兼容性。
- Hub 发布:构建好的二进制文件上传至 HuggingFace Hub 上的模型仓库。
- 一行加载:终端用户可以使用
from kernels import get_kernel; rmsnorm = get_kernel("your-org/your-kernel")在无需本地编译的情况下加载预编译的内核。