피드로 돌아가기
Hugging Face BlogBackend
원문 읽기
Hugging Face가 kernel-builder 라이브러리를 통해 커스텀 CUDA 커널 개발 및 배포 프로세스를 표준화하고 PyTorch 네이티브 연산으로 등록 가능하게 구현
From Zero to GPU: A Guide to Building and Scaling Production-Ready CUDA Kernels
AI 요약
Context
개발자들이 커스텀 CUDA 커널을 작성할 수 있지만, 프로덕션 환경에 배포하기 위해서는 복잡한 빌드 프로세스, 다양한 GPU 아키텍처 지원, 의존성 관리, 그리고 재현 가능한 빌드 환경 구성이 필요했다.
Technical Solution
- CUDA 커널 프로젝트 구조 표준화: img2gray/ 폴더 내 build.toml, csrc/, flake.nix, torch-ext/ 디렉토리로 구성
- build.toml 매니페스트 파일 도입: 컴파일 대상 소스, 백엔드(cuda), 의존성 명시로 빌드 프로세스 자동화
- Nix flake를 통한 재현 가능한 빌드 환경: 커널-빌더 및 종속성의 정확한 버전 고정으로 "내 머신에서만 작동" 문제 해결
- PyTorch 네이티브 연산 등록: TORCH_LIBRARY_EXPAND 매크로를 사용해 커스텀 함수를 torch.ops 네임스페이스에 등록하여 torch.compile과 호환성 확보
- 공개 허브 배포 체계: 개발자가 로컬에서 작성한 커널을 여러 GPU 아키텍처용으로 빌드한 후 Hugging Face Hub에 공개하여 import 방식으로 사용 가능하게 구현
Key Takeaway
CUDA 커널을 프로덕션 환경에서 재사용 가능한 요소로 만들려면 명확한 프로젝트 구조, 선언적 빌드 설정, 환경 재현성 도구(Nix), 그리고 프레임워크(PyTorch) 레벨의 네이티브 연산 등록이 필수적이다. 이를 통해 개별 개발자가 작성한 고성능 커널을 커뮤니티와 쉽게 공유할 수 있는 생태계가 구축된다.
실천 포인트
PyTorch 기반 AI 서비스를 개발하는 팀에서 연산 병목 구간을 CUDA로 최적화할 때, 이 가이드의 build.toml 구조와 TORCH_LIBRARY_EXPAND 등록 패턴을 적용하면 개발자의 로컬 커널 코드가 자동으로 다중 GPU 아키텍처 지원과 torch.compile 호환성을 갖추게 되어, 빌드·배포·유지보수 오버헤드를 크게 줄일 수 있다.