Hugging Face CUDA 커널 에이전트 스킬

Hugging Face는 코딩 에이전트에게 프로덕션 수준의 CUDA 커널을 작성하는 방법을 가르치는 에이전트 스킬을 개발했습니다. Claude와 Codex와 같은 에이전트에게 도메인 특화 지식을 제공함으로써, 팀은 diffusers 파이프라인과 transformers 모델 모두에 대해 작동하는 커널을 성공적으로 생성했으며, PyTorch 바인딩 및 성능 벤치마크를 포함했습니다.

에이전트가 CUDA 커널을 작성하도록 지원하기

CUDA 커널을 작성하는 것은 전통적으로 GPU 아키텍처별 메모리 접근 패턴, 벡터화 전략, 워프 셔플 감소 등에 대한 깊은 지식을 필요로 하는 높은 장벽의 작업입니다. Hugging Face 에이전트 스킬은 이러한 격차를 전문 도메인 전문 지식을 구조화된 형식으로 패키징하여 에이전트가 필요에 따라 로드할 수 있게 함으로써 메우고 있습니다.

스킬 구성 요소

이 스킬은 약 550개의 토큰으로 구성된 구조화된 가이드와 포괄적인 참고 자료 세트로 구성됩니다:

  • GPU 최적화 가이드: NVIDIA H100, A100, T4 GPU에 대한 아키텍처 인식 가이드로, 연산 능력, 공유 메모리 크기 및 대역폭 프로필을 다룹니다.
  • 통합 패턴: diffuserstransformers 라이브러리에 커널을 통합하기 위한 구체적인 가이드와 함정.
  • 커널 템플릿: BF16, FP16, FP32 정밀도에 대한 벡터화된 메모리 접근 패턴.
  • 워크플로우: 격리된 커널 마이크로 벤치마크와 엔드투엔드 파이프라인 비교를 위한 템플릿.
  • 허브 통합: HuggingFace Kernel Hub에서 커뮤니티 커널을 로드하기 위해 get_kernel을 사용하는 방법에 대한 안내.

설치 및 사용

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.88x의 속도 향상을 달성했으며, 대역폭 효율은 H100 이론 최대치의 34.7%에 해당합니다.
  • 엔드투엔드 성능: 최적화된 커널은 기준 대비 1.06x의 속도 향상을 제공했습니다(12.58 it/s에서 13.52 it/s로). torch.compile과 결합하면 속도 향상이 1.43x로 증가했습니다.

Transformers: Qwen3-8B

에이전트는 65개의 RMSNorm 모듈을 사용하는 Qwen3-8B LLM을 위해 RMSNorm 커널을 구축했습니다.

  • 격리된 RMSNorm 성능: 맞춤형 커널은 PyTorch 기준 대비 평균 1.94x의 속도 향상을 달성했습니다.
  • 스케일링: 시퀀스 길이에 따라 속도 향상이 증가했으며, 128 토큰에서 1.58x, 8192 토큰에서 2.47x에 이르렀습니다. 이는 장기 컨텍스트 추론에서 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