newsence
來源篩選

Custom Kernels for All from Codex and Claude

Huggingface

Hugging Face has developed an agent skill enabling coding agents to write production CUDA kernels. These agents, powered by Claude and Codex, successfully generated working kernels for diffusers and transformers models, complete with PyTorch bindings and benchmarks.

newsence

Codex 與 Claude 實現人人皆可客製化 Kernel

Huggingface
16 天前

AI 生成摘要

Hugging Face 開發了一項代理技能,讓程式碼代理能夠撰寫生產級的 CUDA Kernel。這些由 Claude 和 Codex 驅動的代理成功為 diffusers 和 transformers 模型生成了可用的 Kernel,並包含 PyTorch 綁定和基準測試。

來自 Codex 和 Claude 的適用於所有人的自定義 Kernel

圖片

來自 Codex 和 Claude 的適用於所有人的自定義 Kernel

圖片 圖片 圖片 圖片 圖片

簡而言之:我們構建了一種代理技能,教導編碼代理如何編寫生產級 CUDA kernel。然後,我們將 Claude 和 Codex 指向兩個真實目標:一個 diffusers 管道和一個 transformers 模型。代理為兩者都生成了可用的 kernel,具有正確的 PyTorch 綁定和基準測試,端到端。

編寫 CUDA kernel 很難。編寫能正確與 transformers 和 diffusers 集成的 CUDA kernel 更難。存在架構特定的記憶體存取模式、向量化策略、warp shuffle 歸約,以及許多讓經驗豐富的開發人員也會栽跟頭的整合陷阱。這正是代理技能可以發光的那種專業化、高風險的問題。

我們給予編碼代理它們需要的領域知識,例如要針對哪個 GPU 架構、如何構建 kernel-builder 專案、何時使用共享記憶體與暫存器,以及如何編寫 PyTorch 綁定。代理完成了剩下的工作。如果您使用過 LLM 訓練技能或閱讀過《我們讓 Claude 教導開放模型》,這種模式會讓您感到熟悉:將領域專業知識打包成技能,將代理指向一個問題,然後讓它工作。

為什麼需要 kernel 的技能?

Kernel Hub 解決了自定義硬體 kernel 的分發問題。您可以使用單個 get_kernel 呼叫從 Hub 加載預編譯的 kernel。無需構建,無需標誌。但是,仍然需要有人編寫 kernel。這就是此技能填補的空白。

CUDA kernel 開發具有殘酷的表面積:

這是會迷失在文檔標籤和 Stack Overflow 回答中的領域知識。代理技能將其打包到按需加載的上下文中。

首先,讓我們展示如何立即使用該技能,然後我們將深入研究我們如何對 kernel 進行基準測試的細節。

安裝技能

該技能與 kernel 庫一起提供。使用單個命令將其安裝到您的編碼代理中:

這會將技能放入 .claude/skills/cuda-kernels/ 中,Claude Code 和 Cursor 會自動拾取它。對於其他代理:

安裝後,提示您的代理:

或者,您可以選擇更開放的方式:

代理可以讀取該技能,選擇正確的架構參數,生成 CUDA 原始碼,編寫 PyTorch 綁定,設定 build.toml,並建立基準測試腳本。

如果您正在處理更複雜的 kernel,或技能中未涵蓋的架構特定優化,那麼該技能會提供基本的構建模組和模式,以幫助您入門。我們也歡迎對技能本身的貢獻。

技能中包含什麼

該技能大約包含 550 個 token 的結構化指導,加上參考腳本、GPU 優化指南、故障排除文檔和完整的可用範例。像 Codex 和 Claude 這樣的代理編碼工具可以讀取它並產生一個可用的 kernel 專案。

它涵蓋:

當代理加載此內容時,它會獲得從「為我編寫一個 RMSNorm kernel」到可構建、可基準測試的專案所需的一切。它將 grep 和 glob 該技能以找到相關的文件和目錄。因此,以易於查找的方式構建該技能非常重要。

指示代理生成符合 references/kernel-templates.md 中模板的 kernel,並產生一個完整的 kernel 專案:

我們在兩個真實目標上測試了這一點。

對 kernel 進行基準測試:Diffusers (LTX-Video on H100)

該代理為 LTX-Video(來自 diffusers 的影片生成管道)構建了 RMSNorm、RoPE 3D、GEGLU 和 AdaLN kernel。完整的範例位於 examples/ltx_video/。我們針對 H100 優化了 RMSNorm kernel。兩個基準測試都在 H100 80GB HBM3 上以 BFloat16 精度運行。

如果您想查看生成的 kernel,請前往此範例

隔離的 RMSNorm 基準測試

首先,我們將隔離的 RMSNorm kernel 效能與 PyTorch 基準進行比較。這是優化管道中的主要加速。

圖片

平均加速:1.88 倍,頻寬效率:H100 理論值 (3,350 GB/s) 的 34.7%

端到端影片生成(49 幀,30 步,H100 80GB)

接下來,我們將優化 kernel 的端到端影片生成效能與基準(不編譯)和 torch.compile 基準進行比較。

圖片

RMSNorm 約佔 LTX-Video 中總計算量的 5%。剩餘時間花費在注意力、線性投影和 VAE 解碼上。來自單個 kernel 類型的 6% 端到端加速與該配置一致。

對 kernel 進行基準測試:Transformers (Qwen3-8B on H100)

該代理為 Qwen3-8B(來自 transformers 的大型語言模型,在 32 層中有 65 個 RMSNorm 模組)構建了一個 RMSNorm kernel。完整的範例位於 examples/qwen3_8b/。我們針對 H100 優化了 RMSNorm kernel。兩個基準測試都在 H100 80GB HBM3 上以 BFloat16 精度運行。

如果您想探索該 kernel,請在此處查看。

隔離的 RMSNorm 基準測試

再次,我們將隔離的 RMSNorm kernel 效能與 PyTorch 基準進行比較。

圖片

平均加速:1.94 倍,頻寬效率:H100 理論值 (3,350 GB/s) 的 22.3%

加速隨序列長度而變化:在 128 個 token 時為 1.58 倍,在 8192 個 token 時為 2.47 倍。對於長上下文推論,自定義 kernel 大約將 RMSNorm 延遲減半。

將您的 kernel 發佈到 Hub

該代理為您提供了一個可用的 kernel。Kernel Hub 讓您可以共享它,以便任何人都可以加載它而無需編譯。這是從代理輸出到已發佈 kernel 的完整路徑。

1. 驗證專案結構

代理產生一個已經遵循 kernel-builder 佈局的專案:

build.toml 告訴 kernel-builder 要構建什麼。代理為您生成此內容,包括目標 GPU 的正確 cuda-capabilities:

2. 使用 Nix 構建所有變體

Kernel Hub kernel 必須支援所有最新的 PyTorch 和 CUDA 配置。kernel-builder Nix flake 會自動處理此問題。將範例 flake.nix 複製到您的專案中並運行:

這會為每個需要的 PyTorch/CUDA 變體構建 kernel,並將結果放置在 build/ 中。為了加快構建速度,請啟用 HuggingFace Nix 快取:

3. 建立 Hub 儲存庫並推送

在 Hub 上建立一個模型儲存庫並上傳已構建的 kernel:

4. 其他人只需一行即可加載

發佈後,任何人都可以使用您的 kernel,無需編譯:

get_kernel 檢測使用者的 Python、PyTorch 和 CUDA 版本,並下載匹配的預編譯二進位檔案。無需構建,無需標誌,通常在幾秒鐘內即可準備就緒。

該技能和 Hub 是互補的。該技能處理開發。Hub 處理分發。使用該技能構建 kernel,使用基準測試腳本驗證它,將其發佈到 Hub,它就成為其他人的單行程式碼。

結論

我們構建了一種代理技能,教導編碼代理如何編寫生產級 CUDA kernel。然後,我們將 Claude 和 Codex 指向兩個真實目標:一個 diffusers 管道和一個 transformers 模型。代理為兩者都生成了可用的 kernel,具有正確的 PyTorch 綁定和基準測試,端到端。我們對 kernel 進行了基準測試,發現優化的 kernel 可以在隔離和端到端效能中提供加速。

資源

來自我們部落格的更多文章

圖片

OpenEnv 實踐:在真實環境中評估使用工具的代理

圖片 圖片 圖片 圖片 圖片

我們讓 Claude 構建 CUDA Kernel 並教導開放模型!

圖片 圖片 圖片 圖片

社群

·
註冊或
登入以發表評論