用途 本技能用于为 NVIDIA GPU(H100、A100、T4)开发和基准测试经过优化的 CUDA 内核,供 HuggingFace diffusers 与 transformers 库使用。适用于基准测试内核相对基线实现的性能、为扩散模型或 LLM 编写新 CUDA 内核、针对特定架构优化现有内核、实现自定义注意力/归一化/激活层、将内核集成到 diffusers 流水线(LTX-Video、Stable Diffusion、FLUX、DiT)或 transformers 模型(LLaMA、Mistral、Qwen)、调试 NVIDIA GPU 上的内核性能问题。
构建约束 内核必须用 kernel-builder 构建并满足 Kernel Hub 要求。kernel-builder 针对 Python 受限 API(ABI3)编译,单个二进制可在 Python 3.9+ 各版本工作。以下通用 PyTorch 扩展教程中的常见模式在此会导致构建硬失败,禁止使用:任何形式的 pybind11(#include <torch/extension.h>、#include <pybind11/...>、PYBIND11_MODULE(...)、py::arg、任何 py:: 符号);手写使用 torch.utils.cpp_extension 的 setup.py / pyproject.toml(CUDAExtension、BuildExtension、cpp_extension.load、load_inline);带硬编码命名空间的 TORCH_LIBRARY(my_kernel, m)、TORCH_LIBRARY_FRAGMENT(...)、TORCH_LIBRARY_IMPL(...);Python 中硬编码的 torch.ops.my_kernel.fn(...) 调用;手写 PyMODINIT_FUNC PyInit__... 或任何手动 CPython 模块初始化;非受限 CPython API 调用(PyArg_ParseTuple、直接操作 PyObject*);torch-ext/ 内对自身包的绝对导入;除 torch(及确有需要时的 einops)之外的运行时 Python 依赖(numpy、triton、packaging 等被拒绝);以 Python 端 @torch.library.custom_op 作为主要绑定。
唯一支持的绑定模式 registration.h 与 _ops.py 由 kernel-builder 生成,只引用不手写。torch-ext/torch_binding.h 声明函数;torch-ext/torch_binding.cpp 使用 TORCH_LIBRARY_EXPAND(TORCH_EXTENSION_NAME, ops) 定义并实现算子,并以 REGISTER_EXTENSION(TORCH_EXTENSION_NAME) 注册一次;torch-ext/my_kernel/init.py 通过 from ._ops import ops 调用。
提交前检查清单 grep 确认 torch-ext/ 中无 pybind11、PYBIND11、torch/extension.h、py::;无 TORCH_LIBRARY(、TORCH_LIBRARY_FRAGMENT、PyInit(仅允许 TORCH_LIBRARY_EXPAND);除 kernel-builder create-pyproject 生成外无 setup.py;kernel-builder check-config 通过([general] 需短横线分隔名称与 license,及 [torch] 与 [kernel.<name>] 段);内核目录为已提交全部文件的 git 仓库;nix run .#build-and-copy -L 构建成功;构建后 kernel-builder check-abi 通过。
使用方式 用 kernel-builder init --name my-username/my-kernel 脚手架生成合规项目(build.toml、flake.nix、torch-ext/、内核源码目录、tests/、benchmarks/、example.py、CARD.md 及 git 仓库),再替换内核源码并更新 build.toml 的 src 列表。构建可用 nix run .#build-and-copy --max-jobs 2 --cores 8 -L;本地开发用 kernel-builder create-pyproject -f 后用 python setup.py build_kernel 构建;发布用 kernel-builder build-and-upload,目标由 build.toml 中 [general.hub] 的 repo-id 与 [general] 的 version 决定。也可从 HuggingFace Hub 加载预编译内核:from kernels import get_kernel 后 activation = get_kernel("kernels-community/activation", version=1)。提供的脚本包括端到端视频生成基准、RMSNorm 微基准、diffusers 集成示例(~150 行)、transformers 集成示例(~120 行)、HuggingFace Kernels 集成示例。
主要能力 支持 diffusers(LTX-Video、Stable Diffusion、FLUX、DiT)的 RMSNorm、GEGLU、RoPE、AdaLN 内核;transformers(LLaMA、Mistral、Qwen、Falcon)的 RMSNorm、Attention 内核。示例基准结果:H100 80GB 上 49 帧、30 步端到端视频生成,基线 2.87s(12.58 it/s,1.00x),优化内核 2.70s(13.52 it/s,1.06x),基线 + torch.compile 2.14s(19.05 it/s,1.34x);--use-optimized-kernels 与 --compile 当前互斥,自定义内核需 PyTorch 自定义算子注册才能在 torch.compile 下工作。向量化 RMSNorm 微基准相对 PyTorch 基线平均 2.67x 加速,带宽效率为 H100 理论 3.35 TB/s 的 38%;端到端加速较小,因 RMSNorm 约占 LTX-Video 总计算量 5%,其余时间用于注意力(Flash Attention/SDPA)、线性投影与 VAE 解码。
内核模式 向量化内存访问(__nv_bfloat162、__half2、float4)、warp shuffle 归约、注意力块大小(BLOCK_SIZE_M=128、BLOCK_SIZE_N=64、BLOCK_SIZE_K=64,NUM_WARPS=8)、逐元素算子块大小 256、归约算子线程配置(向量化时 hidden_size/2,向 warp 边界取整)。支持 FP16、BF16、FP32 三种精度。提供 H100(sm_90)、A100(sm_80)、T4(sm_75)优化指南,以及 H100 的 SM 数 132、内存带宽 3.35 TB/s 等架构参考(T4 不支持 BF16,仅 FP16)。
限制 价格、收费、具体平台支持范围等资料未提供。