Articlehuggingface.co·2025년 7월 16일·0

Custom Kernels for All from Codex and Claude

Quick Summary

CUDA 커널 개발 지식을 에이전트 스킬로 구조화해 Claude와 Codex가 실제 diffusers·transformers 대상의 커널, PyTorch 바인딩, 빌드 구성, 벤치마크까지 완성하도록 한 사례다.

Custom Kernels for All from Codex and Claude 관련 대표 이미지

🖼️ 인포그래픽

Custom Kernels for All from Codex and Claude 내용을 설명하는 본문 이미지

🖼️ 4컷 인포그래픽

Custom Kernels for All from Codex and Claude 내용을 설명하는 본문 이미지

💡 한 줄 요약

CUDA 커널 개발 지식을 에이전트 스킬로 구조화해 Claude와 Codex가 실제 diffusers·transformers 대상의 커널, PyTorch 바인딩, 빌드 구성, 벤치마크까지 완성하도록 한 사례다.

📌 핵심 요약

  • 이 글은 GPU 아키텍처별 최적화, 메모리 접근, 벡터화, PyTorch 연동 등 CUDA 커널 개발에 필요한 전문 지식을 약 550토큰의 지침과 참고 자료로 구성된 에이전트 스킬로 패키징한 과정을 소개한다.
  • 스킬을 설치한 뒤 목표 GPU와 모델을 지정하면 에이전트가 CUDA 소스, PyTorch C++ 바인딩, build.toml, 설치 구성, 마이크로 벤치마크와 전체 성능 비교 스크립트를 포함한 커널 프로젝트를 생성할 수 있다.
  • H100에서 LTX-Video용 RMSNorm 커널은 단독 벤치마크에서 평균 1.88배 빨라졌고, 생성된 최적화 커널을 적용한 전체 영상 생성은 비컴파일 기준 6%의 속도 향상을 기록했다.
  • Qwen3-8B용 RMSNorm 커널은 단독 벤치마크에서 평균 1.94배의 속도 향상을 보였으며, 시퀀스 길이가 128토큰일 때 1.58배에서 8192토큰일 때 2.47배로 개선 폭이 커졌다.
  • 완성된 커널은 kernel-builder와 Nix로 여러 PyTorch·CUDA 조합에 맞게 빌드해 Kernel Hub에 게시할 수 있으며, 사용자는 get_kernel 호출 한 번으로 자신의 환경과 일치하는 사전 컴파일 바이너리를 받을 수 있다.

🧩 주요 포인트

  1. 이 글은 GPU 아키텍처별 최적화, 메모리 접근, 벡터화, PyTorch 연동 등 CUDA 커널 개발에 필요한 전문 지식을 약 550토큰의 지침과 참고 자료로 구성된 에이전트 스킬로 패키징한 과정을 소개한다.
  2. 스킬을 설치한 뒤 목표 GPU와 모델을 지정하면 에이전트가 CUDA 소스, PyTorch C++ 바인딩, build.toml, 설치 구성, 마이크로 벤치마크와 전체 성능 비교 스크립트를 포함한 커널 프로젝트를 생성할 수 있다.
  3. H100에서 LTX-Video용 RMSNorm 커널은 단독 벤치마크에서 평균 1.88배 빨라졌고, 생성된 최적화 커널을 적용한 전체 영상 생성은 비컴파일 기준 6%의 속도 향상을 기록했다.
  4. Qwen3-8B용 RMSNorm 커널은 단독 벤치마크에서 평균 1.94배의 속도 향상을 보였으며, 시퀀스 길이가 128토큰일 때 1.58배에서 8192토큰일 때 2.47배로 개선 폭이 커졌다.
  5. 완성된 커널은 kernel-builder와 Nix로 여러 PyTorch·CUDA 조합에 맞게 빌드해 Kernel Hub에 게시할 수 있으며, 사용자는 get_kernel 호출 한 번으로 자신의 환경과 일치하는 사전 컴파일 바이너리를 받을 수 있다.

🧠 상세 정리

1. 전문 CUDA 개발 지식을 에이전트 스킬로 전환한 배경

CUDA 커널을 작성하는 일은 하드웨어별 계산 능력과 공유 메모리 크기, 메모리 대역폭, 벡터화 전략, 워프 셔플 리덕션을 함께 고려해야 하는 전문 작업이다. 여기에 transformers와 diffusers를 연결하려면 서로 다른 모듈 계층과 정규화 방식, 주입 패턴을 이해해야 하며, torch.compile이 연산을 인식하도록 PyTorch에 커널을 올바르게 등록해야 한다. 배포 단계에서도 CUDA, PyTorch, Python 버전 조합에 따라 지원해야 할 환경이 크게 늘어난다. 글은 여러 문서와 질의응답에 흩어진 이 지식을 필요할 때만 불러오는 에이전트 스킬로 묶어, 코딩 에이전트가 실제 사용 가능한 커널 프로젝트를 끝까지 만들도록 하는 접근을 제시한다.

2. Kernel Hub가 해결하지 못한 개발 단계의 공백

Kernel Hub는 사용자가 get_kernel 호출만으로 사전 컴파일된 커널을 불러오게 함으로써 커널 배포 문제를 해결한다. 그러나 배포할 커널 자체를 누군가 설계하고 작성하며, 대상 GPU에 맞게 최적화하고, 프레임워크와 연결한 뒤 정확성과 성능을 검증해야 한다는 문제는 그대로 남아 있다. 이 글의 CUDA 커널 스킬은 바로 그 개발 단계의 공백을 채우는 도구다. 역할은 명확히 구분되어 스킬이 커널 개발과 검증을 담당하고, Kernel Hub가 완성된 커널의 빌드 결과를 여러 사용자 환경에 전달하는 구조를 이룬다.

3. 스킬 설치와 에이전트에 작업을 지시하는 방법

스킬은 kernels 라이브러리와 함께 제공되며 Claude, Codex, OpenCode 또는 사용자가 지정한 경로에 명령 한 번으로 설치할 수 있다. Claude용으로 설치하면 .claude/skills/cuda-kernels 디렉터리에 배치되어 Claude Code와 Cursor가 자동으로 인식하며, 전역 설치와 기존 설치 덮어쓰기도 지원한다. 설치 후에는 H100과 Qwen3-8B를 대상으로 벡터화된 RMSNorm 커널을 만들라는 식으로 구체적인 요청을 줄 수 있다. 더 개방적인 요청에서는 최적화된 어텐션 커널을 작성하고 PyTorch 기준선과 비교하며 전체 성능 개선까지 검증하도록 지시할 수 있고, 에이전트는 아키텍처 매개변수 선택부터 소스·바인딩·빌드 설정·벤치마크 작성까지 수행한다.

4. 스킬에 포함된 지침과 완성 프로젝트의 구조

스킬의 핵심 지침은 약 550토큰이지만, H100·A100·T4 최적화 안내서와 문제 해결 문서, 커널 템플릿, 완성 예제 및 벤치마크 스크립트가 함께 제공된다. BF16, FP16, FP32를 위한 벡터화 메모리 접근 패턴과 diffusers·transformers별 통합 방식, 단독 마이크로 벤치마크와 전체 파이프라인 비교 절차, Kernel Hub 연동 방법도 포함된다. 에이전트는 필요한 자료를 검색해 kernel_src의 CUDA 소스, torch-ext의 C++ 바인딩과 Python API, build.toml, setup.py, pyproject.toml, 벤치마크 스크립트로 구성된 프로젝트를 생성한다. 따라서 결과물은 단순한 커널 코드 조각이 아니라 설치하고 빌드하며 PyTorch에서 호출하고 성능을 검증할 수 있는 완결된 프로젝트다.

5. LTX-Video용 커널과 단독 RMSNorm 성능

첫 번째 실제 대상은 diffusers의 영상 생성 파이프라인인 LTX-Video였으며, 에이전트는 RMSNorm, 3차원 RoPE, GEGLU, AdaLN 커널을 작성했다. RMSNorm은 H100에 맞게 최적화됐고, H100 80GB HBM3와 BFloat16 정밀도에서 PyTorch 기준선과 비교됐다. 여러 입력 형태에서 속도 향상은 1.64배부터 2.26배까지 나타났으며, 평균 속도 향상은 1.88배였다. 가장 큰 입력 사례 중 하나인 4×4096×3072 형태에서는 실행 시간이 PyTorch의 0.393밀리초에서 사용자 정의 커널의 0.173밀리초로 줄었고, 측정된 대역폭 효율은 H100 이론 대역폭 3350GB/s의 34.7%였다.

6. LTX-Video 전체 생성 성능과 병목 비중

49프레임을 30단계로 생성하는 전체 벤치마크에서 비컴파일 기준선은 2.87초였고, 생성된 최적화 커널을 적용한 구성은 2.70초로 줄어 1.06배의 속도 향상을 기록했다. torch.compile을 적용한 기준선은 2.14초로 1.34배였으며, 최적화 커널과 torch.compile을 함께 사용한 결과는 2.01초로 기준 대비 1.43배였다. RMSNorm은 LTX-Video 전체 계산량의 약 5%를 차지하고, 나머지 시간은 어텐션과 선형 투영, VAE 디코딩에 사용된다. 따라서 단독 RMSNorm 커널에서 약 1.88배의 개선이 나타났더라도 전체 파이프라인에서 비컴파일 기준 6%의 개선으로 이어진 결과는 해당 연산의 전체 비중과 일치한다.

7. Qwen3-8B에서의 RMSNorm 성능과 시퀀스 길이 효과

두 번째 대상은 transformers의 Qwen3-8B로, 32개 계층에 걸쳐 65개의 RMSNorm 모듈을 포함하는 대규모 언어 모델이다. 에이전트가 작성한 H100용 RMSNorm 커널은 동일하게 H100 80GB HBM3와 BFloat16 환경에서 PyTorch 기준선과 비교됐으며, 전체 입력 형태의 평균 속도 향상은 1.94배였다. 개선 폭은 시퀀스 길이에 따라 커져 128토큰에서는 1.58배, 2048토큰에서는 2.03배, 4096토큰에서는 2.12배, 8192토큰에서는 2.47배를 기록했다. 8192토큰 입력의 실행 시간은 PyTorch의 0.269밀리초에서 사용자 정의 커널의 0.109밀리초로 감소했으며, 측정된 대역폭 효율은 H100 이론치의 22.3%였다.

8. 검증된 커널을 Kernel Hub에 게시하는 전체 경로

에이전트가 만든 프로젝트는 build.toml, CUDA 소스, Torch 연산을 등록하는 C++ 바인딩, Python API를 포함하는 kernel-builder 구조를 따른다. build.toml에는 백엔드와 소스 파일, 의존 관계, 대상 GPU의 CUDA 계산 능력이 기록되며, H100의 예에서는 9.0이 지정된다. Kernel Hub가 요구하는 최근 PyTorch와 CUDA 조합을 지원하기 위해 Nix flake의 build-and-copy 절차로 모든 변형을 빌드하고 결과를 build 디렉터리에 모은 뒤, Hub 모델 저장소를 생성해 업로드한다. 게시가 끝나면 사용자는 get_kernel에 저장소 이름을 전달하는 한 줄의 코드로 자신의 Python·PyTorch·CUDA 버전에 맞는 사전 컴파일 바이너리를 내려받을 수 있으므로, 스킬을 통한 개발과 Hub를 통한 무컴파일 배포가 하나의 연속된 흐름을 구성한다.

🧾 핵심 주장 / 시사점

  • 에이전트 스킬의 핵심 가치는 CUDA 문법 생성 자체보다 GPU별 최적화 원칙, 프레임워크 통합 규칙, 빌드 구조, 검증 절차를 함께 제공해 결과물을 실행 가능한 프로젝트로 만드는 데 있다.
  • 단일 커널의 마이크로 벤치마크 향상률이 전체 파이프라인 향상률로 그대로 이어지지는 않으며, LTX-Video 결과는 최적화 대상 연산이 전체 계산에서 차지하는 비중을 함께 확인해야 함을 보여준다.
  • Qwen3-8B 결과에서는 시퀀스가 길어질수록 RMSNorm 커널의 속도 향상이 커졌으며, 특히 8192토큰에서 PyTorch 대비 2.47배를 기록해 긴 입력에서의 단독 연산 지연 감소가 수치로 확인됐다.

✅ 액션 아이템

  • GPU 아키텍처별 최적화, 메모리 접근, 벡터화 요건을 정리해 대상 모델의 커널 목표를 구체화한다.
  • 목표 GPU와 모델을 지정해 CUDA 소스·PyTorch C++ 바인딩·build.toml·벤치마크 스크립트가 포함된 프로젝트를 생성한다.
  • kernel-builder와 Nix로 PyTorch·CUDA 조합별 빌드 후 Kernel Hub에 게시하고 get_kernel 단일 호출 적합도를 점검한다.

❓ 열린 질문

  • H100에서 LTX-Video RMSNorm 단독 벤치마크 1.88배, 전체 영상 6% 개선이 실서비스 임계 성능으로 충분한가?
  • Qwen3-8B RMSNorm이 128토큰에서 1.58배, 8192토큰에서 2.47배 향상된 추세가 다른 길이 구간에서도 유지되는가?
  • get_kernel로 받은 사전 컴파일 바이너리가 실제 환경에서 목표 PyTorch·CUDA 조합과 완전히 일치해 재현 가능할 가능성은 얼마나 되는가?

관련 문서

공통 태그와 주제 흐름을 기준으로 같이 보면 좋은 문서를 이어서 제안합니다.