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 的架构感知指导,涵盖计算能力、共享内存大小和带宽特性。
  • 集成模式:针对将内核集成到 diffuserstransformers 库中的具体指南和常见坑点。
  • 内核模板:针对 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 负责分发。发布代理生成的内核的工作流程如下:

  1. 项目结构:代理生成遵循 kernel-builder 布局的项目,包括 kernel_src/(CUDA 源代码)、torch-ext/(C++ 绑定)以及指定目标 GPU CUDA 能力的 build.toml 配置(例如 H100 为 “9.0”)。
  2. 多变体构建:使用 Nix flake,开发者为所有所需的 PyTorch 和 CUDA 配置构建内核,以确保在不同环境矩阵中的兼容性。
  3. Hub 发布:构建好的二进制文件上传至 HuggingFace Hub 上的模型仓库。
  4. 一行加载:终端用户可以使用 from kernels import get_kernel; rmsnorm = get_kernel("your-org/your-kernel") 在无需本地编译的情况下加载预编译的内核。

Sources