Hugging Face CUDA 核函數代理技能

讓代理能編寫 CUDA 核函數

技能組件

  • 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++ 綁定)以及 build.toml 設定檔,指定目標 GPU 的 CUDA 能力(例如 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