[메타]커널 튜닝을 위한 에이전트 도구 생성 사례 .
Meta가 NVIDIA·AMD·MTIA·CPU 이종 가속기 커널 작성을 LLM 합성 + 트리 탐색 + 자동 평가 기반 검색 문제로 정형화한 KernelEvolve를 도입, 추론 처리량 +60% / 학습 처리량 +25%, 주 단위 전문가 작업이 시간 단위로 압축
요약
Meta가 GPU·자체 칩 가리지 않고 돌아갈 커널 코드를 사람 대신 자동으로 작성·튜닝하는 에이전트 KernelEvolve를 만들었다. Andromeda 광고 모델 추론 처리량 60%↑(NVIDIA GPU), 광고 모델 학습 처리량 25%↑(MTIA), KernelBench 250문제 통과율 100%·160 PyTorch ATen 연산자 3개 플랫폼 480 구성에서 100% 정확. 주 단위로 걸리던 전문가 작업이 시간 단위로 떨어짐.
내용
Meta는 매일 수십억 건의 AI 추론을 NVIDIA GPU·AMD GPU·자체 MTIA 실리콘·CPU 위에서 돌린다. 모든 추론 뒤에는 모델 연산을 칩별 명령어로 변환하는 저수준 커널이 위치하고, {하드웨어 종류·세대 × 모델 아키텍처 × 연산자} 곱 단위로 커널 수가 폭증해 전문가 수작업으론 따라가지 못하는 게 출발점.
세 가지 압력이 동시에 가해짐.
- 하드웨어 이질성: NVIDIA·AMD·MTIA가 메모리 계층·명령어 집합·실행 모델이 근본적으로 다름. MTIA만 해도 2년에 4세대(MTIA 300~500), 같은 패밀리 내 세대 변경에도 최적화 전략이 갈라짐
- 모델 아키텍처 변화: 임베딩 기반 추천 → sequence learning → GEM(Generative Ads Model) → Meta Adaptive Ranking Model로 진화하면서 매번 새 연산자 등장. 한 광고 요청이 여러 모델 패밀리를 거치기도 함
- 연산자 long tail: cuBLAS·cuDNN이 GEMM·convolution 같은 표준은 커버하지만, feature hashing·bucketing·sequence truncation 같은 전처리와 fused feature interaction layer·specialized attention 같은 사내 고유 연산자는 라이브러리 밖. 라이브러리 밖 연산자는 CPU 폴백(서비스 분리·지연)이거나 비최적 코드 경로로 GPU를 놀리게 됨
벤더 라이브러리는 NVIDIA에 묶여 있고, 손튜닝 NVIDIA 커널을 AMD나 MTIA에 그대로 못 옮긴다는 결합 조건까지 더해짐.
해결 / 접근
KernelEvolve는 커널 최적화를 단발성 코드 생성이 아니라 검색 문제로 정형화. 6개 컴포넌트가 LLM 합성 → 트리 탐색 → 자동 평가 → 다음 라운드 피드백의 루프를 돈다.
LLM Synthesizer
여러 언어·타깃에 후보 커널 생성 — 고수준 DSL(Triton, TLX, CuTe DSL, FlyDSL) + 저수준(CUDA, HIP, MTIA C++). 디버깅·튜닝·검증마다 다른 프롬프트 템플릿을 두던 기존 방식 대신, 런타임 진단·하드웨어 제약·이전 후보 평가 결과로 매번 새로 짜이는 단일 동적 프롬프트 인터페이스로 통합.
Tree Search Engine
Monte Carlo tree search · 진화 전략 기반 탐색. 각 후보 커널이 노드. 노드는 독립으로 진화하지 않고 메모리 연산자로 다른 노드의 컨텍스트를 끌어옴 — 부모의 최적화 궤적을 상속하거나, 형제와 비교해 차이를 학습하거나, 부모·형제 둘 다 결합하거나, 깨끗한 상태로 시작해 지역 최적화 탈출. 정체 시 메모리 없는 재시작으로 다양성 주입.
Retrieval-Augmented Knowledge Base
세 계층 — 정확성 제약 / 플랫폼 무관 최적화 가이드 / 하드웨어별 문서(아키텍처 매뉴얼·명령어 셋·메모리 계층). 메모리 대역폭 병목 신호가 잡히면 메모리 계층 문서를, 컴파일 에러면 디버깅 가이드를 동적으로 검색해 LLM 컨텍스트에 주입. 성공 전략은 재사용 가능한 스킬로 증류해 다시 KB에 기록하는 in-context reinforcement learning 형태로 자기 진화.
Automated Evaluation Framework
비트 단위 정확성(PyTorch 기준)과 성능을 모두 검증. 단순 런타임 숫자가 아니라 병목 원인까지 분리.
- TritonBench: 정확성 + end-to-end 가속비
- PyTorch Profiler: 시스템 레벨 타임라인, 커널 실행·호스트-디바이스 동기화 오버헤드
- NCU(GPU): 점유율·메모리 처리량·명령어 믹스
- Proton: 커널 내부 명령어 단위 지연·파이프라인
- MTIA Insight: PE 점유율·DPE/SFU/MLU 사용률·캐시 동작·PE별 메모리 대역폭
이 모든 도구를 컴파일러 중심 추상화로 묶어 job graph로 합성 — MLIR 단계 instrumentation 삽입 → profiling pass → trace 합성. 검색 엔진이 "A가 B보다 1.2배 빠르다"가 아니라 메모리 바운드인지·컴퓨트 바운드인지·점유율 한계인지까지 진단 신호로 받음.
Shared Data Foundation
세션마다 발견된 타일링 전략 등이 공통 저장소에 누적, 후속 사용자가 더 좋은 출발점에서 시작.
Agentic Reinforcement Learning
세션이 만드는 추론·코드 변환·평가 피드백 궤적이 도메인 특화 학습 데이터. 이 데이터로 작은 전용 모델을 측정 커널 성능을 보상 신호로 한 강화학습으로 사후 학습 → 더 적은 추론 토큰·검색 단계로 비슷한 성능을 내는 셀프 호스팅 모델로 비용 효율화.
MTIA 같은 비공개 칩 지원
공개 LLM은 MTIA 코드를 본 적 없음. KernelEvolve는 MTIA 아키텍처 매뉴얼·명령어 셋·메모리 계층 사양·최적화 패턴을 KB에 직접 주입, 추론 시점에 검색해 사용. 신규 칩 도입 비용이 "수천 개 커널 손코딩"에서 "문서 큐레이션 + KB 주입"으로 이동.
처리 흐름
엔지니어가 타깃 연산자·하드웨어·성능 목표만 지정하면, 시스템이 KB 검색 → 후보 생성 → 분산 평가 → 검색 트리 갱신 → 반복(목표 도달·예산 소진·정체까지) → 최종 검증된 커널 출력의 6단계를 자율 수행.
결과 / 참고
- 추론: NVIDIA GPU에서 Andromeda 광고 모델 처리량 60%↑ (torch.compile + 벤더 라이브러리로 이미 고도 최적화된 baseline 대비)
- 학습: MTIA에서 광고 모델 처리량 25%↑ (compute-bound·memory-bound·custom 연산 모두 포함)
- KernelBench(스탠포드, 250 문제, 3 난이도): 100% 통과율 — PyTorch reference보다 모두 빠르고 정확
- ATen: 160개 연산자 × 3 플랫폼 = 480 구성 100% 정확
- 운용 규모: 일일 수조 건 추론 요청을 처리하는 코드를 KernelEvolve가 최적화
- 개발 시간: 주 단위 전문가 작업 → 시간 단위
- 관련: ML Exploration(REA의 모델 발견 단계)이 더 나은 모델을 찾고 KernelEvolve가 production-ready로 변환
- 논문: KernelEvolve: Scaling Agentic Kernel Coding for Heterogeneous AI Accelerators at Meta (ISCA 2026, arXiv:2512.23236)
- 출처: Engineering at Meta — Ranking Engineer Agent 시리즈 2편