# AutoKernel: GPU 커널 자동 연구 시스템

> Clean Markdown view of GeekNews topic #27433. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=27433](https://news.hada.io/topic?id=27433)
- GeekNews Markdown: [https://news.hada.io/topic/27433.md](https://news.hada.io/topic/27433.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2026-03-12T11:45:03+09:00
- Updated: 2026-03-12T11:45:03+09:00
- Original source: [github.com/RightNow-AI](https://github.com/RightNow-AI/autokernel)
- Points: 9
- Comments: 1

## Summary

**AutoKernel**은 PyTorch 모델을 입력받아 **Triton 또는 CUDA C++ 커널을 자동 최적화**하는 GPU 커널 연구 시스템입니다. 병목 커널을 프로파일링·추출·검증하는 전 과정을 자동화하며, **Amdahl의 법칙 기반 오케스트레이션**으로 성능 기여도가 높은 커널부터 반복 실험을 수행합니다. KernelBench와의 통합으로 수백 회의 실험을 체계적으로 관리해, 단발성 코드 생성이 아닌 지속적 성능 탐색을 가능하게 합니다.

## Topic Body

- Karpathy의 Autoresearch를 GPU 커널 최적화에 적용  
- **PyTorch 모델**을 입력하면 자동으로 **Triton 또는 CUDA C++ 커널**을 최적화하는 **GPU 커널 자동 연구 도구**  
- 모델의 **병목 커널을 프로파일링·추출·최적화·검증**하는 완전 자동화 파이프라인 제공  
- **Amdahl의 법칙 기반 오케스트레이션**으로 우선순위를 조정하며, 각 실험은 약 90초 소요되어 밤새 수백 회 반복 가능  
- **KernelBench**와 통합되어 250개 이상 문제에 대해 **50~300회 반복 실험**을 수행, 단발성 생성보다 체계적 탐색 가능  
- **Triton과 CUDA C++ 이중 백엔드**, **정확성 우선 검증**, **단일 파일 수정 구조**로 효율적이고 재현 가능한 커널 최적화 지원  
  
---  
  
### 작동 원리  
- AutoKernel은 PyTorch 모델을 입력받아 다음 단계를 수행  
  - **프로파일링**으로 GPU 병목 커널 식별  
  - **추출**하여 독립적인 Triton 또는 CUDA C++ 커널로 분리  
  - **자동 최적화 루프**를 통해 수정·벤치마크·유지/되돌리기 반복  
  - **정확성 검증** 후 전체 속도 향상 보고  
- `program.md`에 포함된 지침을 기반으로 `kernel.py`를 수정하며, `bench.py`를 통해 5단계 정확성 검사와 **roofline 분석**을 수행  
- 각 실험은 약 90초, 시간당 약 40회, 하룻밤 동안 약 320회 실험 가능  
  
### 실행 및 구성 요소  
- **필수 환경**: NVIDIA GPU(H100/A100/RTX 4090), Python 3.10+, uv 패키지  
- 주요 스크립트 구성  
  - `profile.py`: GPU 시간 기준 커널 순위화  
  - `extract.py`: 상위 병목 커널 추출  
  - `bench.py`: 5단계 정확성 및 성능 벤치마크  
  - `orchestrate.py`: Amdahl의 법칙 기반 다중 커널 스케줄링  
  - `verify.py`: 전체 모델 검증 및 속도 향상 보고  
- `program.md`는 6단계 최적화 전략, 충돌 처리, 의사결정 프레임워크를 포함해 장시간 자동 실행 가능  
  
### 지원 커널 및 예제 모델  
- **9종 커널 유형** 지원: matmul, softmax, layernorm, rmsnorm, flash_attention, fused_mlp, cross_entropy, rotary_embedding, reduce  
- 각 커널은 PyTorch 기준 구현(`reference.py`), Triton/CUDA 초기 버전(`kernels/`, `kernels/cuda/`) 포함  
- **예제 모델**: GPT-2, LLaMA(7B 포함), BERT-base, 사용자 정의 모델  
- HuggingFace 모델도 `uv sync --extra models`로 연동 가능  
  
### KernelBench 통합  
- **KernelBench**(Stanford Scaling Intelligence Lab)와 통합되어 AI 생성 GPU 커널의 표준 벤치마크 수행  
- AutoKernel은 문제당 **50~300회 반복 실험**으로 최적화 공간을 체계적으로 탐색  
- 주요 도구  
  - `bridge.py`: 문제 로드 및 초기 커널 생성  
  - `bench_kb.py`: 정확성·성능 평가  
  - `scorer.py`: 전체 레벨 점수 계산  
  - `program_kb.md`: KernelBench 전용 에이전트 지침  
  
### HuggingFace Hub 내보내기  
- 최적화된 커널을 **HuggingFace Hub**로 내보내고, `get_kernel()`로 간단히 불러오기 가능  
- `export_hf.py`로 CUDA 커널 내보내기 및 업로드 지원  
  
### 설계 원칙  
- **Triton + CUDA C++ 이중 백엔드**: Triton은 빠른 반복, CUDA는 최고 성능 제공  
- **정확성 우선**: PyTorch 결과와 일치하지 않으면 즉시 되돌림  
- **Amdahl의 법칙 기반 오케스트레이션**으로 전체 성능 기여도에 따라 우선순위 결정  
- **단일 파일 수정 구조**(`kernel.py`)로 변경 추적과 복구 용이  
- **TSV 로그**(`results.tsv`)로 실험 결과를 단순·가독성 있게 기록  
  
### 결과 기록 형식  
- `results.tsv`에 각 실험의 **번호, 커널 유형, 처리량(TFLOPS), 지연시간, GPU 피크 대비 비율, PyTorch 대비 속도 향상, 정확성, VRAM 사용량, 설명**이 기록됨  
  
### 프로젝트 배경  
- **Andrej Karpathy의 autoresearch** 개념에서 영감을 받아, LLM 연구용 자율 AI 에이전트 구조를 GPU 커널 최적화에 적용  
- **KernelBench** 통합은 Stanford Scaling Intelligence Lab의 연구를 기반으로 하며, AutoKernel은 단발성 생성 대신 반복적 최적화를 수행  
- 프로젝트는 **RightNow AI의 Forge 팀**이 개발, **MIT 라이선스**로 공개됨

## Comments



### Comment 52881

- Author: neo
- Created: 2026-03-12T11:45:04+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=47332688) 
- 정말 멋진 프로젝트임  
  나도 지난 몇 주 동안 비슷한 걸 만들고 있었는데, 훨씬 **범용적이고 과하게 설계된** 버전이었음  
  Triton과 특정 커널에만 집중한 이 접근은 단순하면서도 효율적임  
  다만 진행 그래프가 헷갈림. 4096x4096x4096 fp16 matmul 벤치마크처럼 보이는데, cuBLAS 대비 1.31배 향상이라면서도 187 TFLOPS, 즉 **18.9%의 피크 활용률**만 보여줌  
  cuBLAS는 훨씬 피크에 가까운 성능을 내는데, 아마 CPU 오버헤드나 다른 병목 때문일 것 같음  
  벤치마크는 정말 어렵지만, 앞으로 6개월간 이 분야가 **엄청 유망**하다고 생각함  

- 이게 llama.cpp 같은 곳에서 작동하게 된다면 훨씬 큰 이득이 있을 것 같음  
  다양한 **양자화 커널**과 하드웨어 구성이 존재하고, 개인 사용자도 많기 때문에 효율 향상 폭이 클 것임  
  이 프로젝트가 거기에 기여자로 참여하면 좋겠음  
  - 맞는 판단임  
    llama.cpp에는 Q4_K_M, Q5_K_S, Q8_0 등 여러 **수작업 튜닝된 CUDA 커널**이 있고, 각각 다른 하드웨어 프로필을 겨냥함  
    GPU별로 자동 최적화가 가능하다면 엄청난 변화가 있을 것임  
    현재는 같은 양자화 포맷이라도 RTX 3090과 5070 Ti 간 성능 차이가 크기 때문임  
    llama.cpp처럼 하드웨어 다양성이 큰 환경이야말로 **자동 커널 탐색**이 가장 빛을 발할 곳임  

- 멋짐!  
  나는 Apple Silicon용으로 같은 기능을 추가하는 중임  
  내 프로젝트 [autoresearch-everywhere](https://github.com/Entrpi/autoresearch-everywhere)에서 **autoresearch를 진지한 도구로 만드는 작업**을 하고 있음  

- 뭔가 이상함  
  4kx4kx4k fp16 GEMM 기준으로 보면 **cutlass가 3배 정도 더 빠름**  

- 혹시 TVM의 **Ansor** 같은 자동 스케줄링과 비교 벤치마크를 해봤는지 궁금함  

- 이제 시작임  
  참고로 Google은 이미 두 세대 전 모델에서 비슷한 걸 했었음  
  2025년 5월 블로그 글 [AlphaEvolve](https://deepmind.google/blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/)에서, 큰 행렬 곱셈을 더 작은 **하위 문제로 나누는 방식**으로 Gemini 아키텍처의 핵심 커널을 23% 가속시켜 학습 시간을 1% 줄였다고 발표했음  
  이제 이런 기술이 “집에서도” 가능한 시대가 온 것임  
  특히 최근 **RL 기반 학습**이 많아지면서, 추론 속도 향상이 곧 학습 속도 향상으로 이어질 것임  

- Swift나 Rust 같은 **오픈소스 언어 런타임**에도 이런 최적화가 들어가서 마지막 한 방울의 성능까지 짜낼 날이 언제 올지 궁금함
