연구

멀티 에이전트 시스템으로 GPU 커널 속도 38% 향상

당사의 멀티 에이전트 시스템은 NVIDIA Blackwell 200 GPU용 CUDA 커널 235개를 단 3주 만에 자율적으로 최적화해, 기준선 대비 기하평균 38%의 속도 향상을 달성했습니다.

Wilson Lin – Cursor; Sahil Modi, Yuan Zhang & Edward Lin – NVIDIA읽는 데 8분

지난 몇 달 동안 저희는 복잡한 소프트웨어를 자율적으로 구축하고 유지·배포할 수 있는 멀티 에이전트 시스템을 개발해 왔습니다. 이 과정에서 처음부터 브라우저를 구축하게 하거나, First Proof 벤치마크의 연구 수준 수학 문제를 풀게 하는 등 다양한 영역에서 시스템을 테스트해 왔습니다.

최근에는 NVIDIA와 함께 새로운 과제에 착수했습니다. 바로 CUDA 커널 최적화에 멀티 에이전트 하네스를 적용하는 것입니다. 이는 현실적인 파급력이 큰 어려운 기술 과제입니다. CUDA 커널은 NVIDIA GPU에서 AI 모델의 훈련과 추론을 뒷받침하는 핵심 소프트웨어이기 때문입니다. 커널이 빨라질수록 GPU 활용도는 높아지고, 에너지 소비와 지연 시간, 토큰당 비용은 낮아져 서비스 제공업체가 더 크고 더 강력한 모델을 더 많은 사용자에게 동시에 제공할 수 있습니다.

저희의 멀티 에이전트 하네스는 235개 과제 전반에 걸쳐 3주 동안 자율적으로 작동했습니다. 이 시스템은 Blackwell GPU 커널을 처음부터 어셈블리 수준에 이르기까지 직접 구축하고 최적화해 기하평균 38%의 속도 향상을 달성했습니다.

이 정도의 성능 향상은 일반적으로 고도로 숙련된 커널 엔지니어가 수개월에서 수년에 걸쳐 작업해야만 얻을 수 있습니다. 멀티 에이전트 시스템은 이를 몇 주 만에 해냈고, 기존 접근법으로는 다루기 어려웠던 롱테일 커널 문제들까지 해결했습니다.

에이전트 시스템 역량을 시험하는 커널 최적화

장시간 실행되는 멀티 에이전트 시스템을 평가하는 가장 좋은 방법 중 하나는, 우리조차 정답을 모르는 개방형 최적화 과제를 주는 것입니다. 커널 최적화 과제는 이 기준에 잘 맞습니다. 단순히 이미 알려진 diff를 목표로 하는 대신, 시스템이 반복적으로 개선해 나갈 수 있는 측정 가능한 목표를 제공하기 때문입니다.

오늘날 엔지니어들은 모델을 개별 수학 연산으로 분해한 뒤 각각을 따로 튜닝하는 방식으로 커널을 최적화합니다. 이렇게 하면 문제를 다루기 쉬워지지만, 부분별 최적화는 시스템 전체를 동시에 최적화할 때 얻을 수 있는 잠재적 이득을 놓치기 때문에 성능을 충분히 끌어올리지 못합니다. 지금까지 GPU 성능은 이러한 수작업식 단순화를 넘어 전체 해법 공간을 탐색하지 못한 한계로 인해 제약을 받아 왔습니다.

이번 실험에서 우리는 우리의 멀티 에이전트 시스템이 이런 제약을 벗어나 더 넓은 해법 공간을 탐색하고, 더 빠른 커널을 만들어낼 수 있는지 확인해 보고자 했습니다.

과제 생성 및 벤치마킹을 위한 SOL-ExecBench

NVIDIA는 SOL-ExecBench를 사용해 Deepseek, Qwen, Gemma, Kimi, Stable Diffusion과 같은 124개 이상의 프로덕션용 오픈소스 모델을 바탕으로 235개의 최적화 과제를 생성했습니다. 합성 데이터나 예제용 커널과 달리, 각 과제는 LLM, diffusion, vision, audio, video, 멀티모달 하이브리드 등 다양한 모델 아키텍처의 훈련 또는 추론 워크로드에서 실제로 마주치는 제약 조건을 반영합니다.

SOL-ExecBench는 LLM, diffusion, vision, audio, video, 멀티모달 아키텍처 전반에 걸쳐 235개의 최적화 과제를 생성했습니다SOL-ExecBench는 LLM, diffusion, vision, audio, video, 멀티모달 아키텍처 전반에 걸쳐 235개의 최적화 과제를 생성했습니다

또한 27개의 NVIDIA Blackwell 200 GPU에서 멀티 에이전트 커널 솔루션을 벤치마크하기 위해 SOL-ExecBench를 사용했습니다. SOL-ExecBench는 커널 성능을 기존 소프트웨어 기준선과 이론적인 하드웨어 성능 한계에 비교해 평가하는 효과적인 도구입니다. 에이전트가 캐싱 같은 편법을 사용해 B200이 지원할 수 있는 수준을 넘어서는 성능을 내면, 파이프라인이 해당 결과를 무효 처리합니다.

실험을 어떻게 진행했는지

멀티 에이전트 시스템은 성능 지표를 바탕으로 자율 작업자들 사이에 작업을 분배하고 재조정하는 Planner 에이전트를 배포해, 단 한 번의 실행으로 GPU 커널 최적화 과제 235개를 모두 해결했습니다.

전체 조정 프로토콜은 출력 형식, 규칙, 테스트를 지정한 단일 Markdown 파일 하나에 담겨 있었습니다. 멀티 에이전트 시스템은 실행 중 벤치마킹 파이프라인을 호출하는 방법을 스스로 익혔고, 그 결과 개발자 개입 없이도 시스템이 커널을 지속적으로 테스트하고 디버그하며 최적화하는 루프가 만들어졌습니다.

멀티 에이전트 시스템의 자율 디버그, 테스트, 최적화 루프멀티 에이전트 시스템의 자율 디버그, 테스트, 최적화 루프

멀티 에이전트 시스템의 역량을 더 정확히 가늠하기 위해, 우리는 GPU 추상화 스펙트럼의 양극단에 있는 두 언어로 해결책을 작성하도록 별개의 두 차례 실행에서 요청했습니다:

  • 인라인 PTX를 사용하는 CUDA C는 에이전트가 레지스터와 ISA 수준 명령어에 직접 접근할 수 있게 해 주며, 시스템이 가장 낮은 수준에서 하드웨어를 추론할 수 있는지를 테스트합니다.
  • CuTe DSL은 공개 학습 데이터에 거의 등장하지 않는 고수준의 조합 가능한 추상화를 제공하며, 시스템이 제공된 문서만으로 새로운 API를 학습할 수 있는지를 테스트합니다.

38% 속도 향상, 최적화의 19%에서 2배를 넘는 개선 달성

멀티 에이전트 시스템의 성능은 두 가지 방식으로 보고합니다:

  • 기준선으로 사용하는, 단일 에이전트가 최적화한 PyTorch 코드 대비 기하평균 속도 향상.
  • 해결책의 수준을 이론적 하드웨어 한계와 비교해 로그 스케일로 나타내는 Speed-of-Light (SOL) 점수. 0.5는 최적화된 PyTorch 기준선을 의미하고, 1.0은 성능 한계입니다.
Speed-of-Light 점수 척도: 0.5는 최적화된 PyTorch 기준선을 의미하고, 1.0은 이론적 하드웨어 한계입니다Speed-of-Light 점수 척도: 0.5는 최적화된 PyTorch 기준선을 의미하고, 1.0은 이론적 하드웨어 한계입니다

멀티 에이전트 시스템은 235개 과제 중 149개(63%)에서 기준선보다 더 우수한 성능을 보였으며, 기하평균 배수는 1.38배(기하평균 38% 속도 향상)였습니다.

멀티 에이전트 시스템은 235개 커널 최적화 과제 전반에서 기하평균 1.38배의 속도 향상을 달성했습니다멀티 에이전트 시스템은 235개 커널 최적화 과제 전반에서 기하평균 1.38배의 속도 향상을 달성했습니다

235개 과제 중 45개(19%)에서는 멀티 에이전트 시스템이 기준선 대비 2배를 넘는 최적화 성능을 제공했습니다. 시스템이 개발한 최종 해법은 이 public repo에서 확인할 수 있습니다.

과제별 속도 향상 분포로, 19%에서 2배를 넘는 개선을 기록했습니다과제별 속도 향상 분포로, 19%에서 2배를 넘는 개선을 기록했습니다

서로 다른 과제에 대한 서로 다른 최적화 전략

다양한 유형의 과제에 걸쳐 시스템의 적응성을 보여주기 위해, 각기 다른 최적화 전략을 자연스럽게 도출한 세 가지 과제를 살펴봅니다.

BF16 Grouped Query Attention with 페이지드 프리필

페이지드 프리필이 적용된 grouped-query attention은 최신 LLM 추론 스택에서 프롬프트 단계에 일반적으로 수행되는 작업입니다. 잘 최적화된 구현은 동일한 GPU VRAM에서 더 긴 컨텍스트, 더 높은 동시성, 더 나은 처리량을 지원할 수 있습니다.

에이전트는 Llama 3.1 8B용 SGLang 추론에서 추출한 이 attention 문제를 최적화하기 위해 CUDA C++를 사용했습니다. 에이전트는 커널을 반복적으로 개선하면서 메모리 로드와 연산을 위한 특정 하드웨어 명령어를 성공적으로 활용했고, persistent 커널을 통한 개선된 스케줄링을 추가했으며, 입력 크기에 맞춰 극한까지 최적화했습니다.

저희는 FlashInfer 라이브러리의 사람이 최적화한 기준선과 멀티 에이전트 시스템의 custom 커널을 비교했습니다. 그 결과, 시스템은 SOL 점수 0.9722로 하드웨어 한계에 근접한 솔루션을 만들어냈으며, 기준선 대비 기하평균 84%의 속도 향상을 기록했습니다.

또한 SGLang의 기존 커널을 교체한 뒤 Llama 3.1 8B에서 첫 토큰까지의 시간(TTFT)이 3% 단축되는 것을 확인했습니다. 이 attention 문제가 서빙 설정에 따라 프리필 과정의 2~5%를 차지한다는 점을 고려하면, 이는 무시하기 어려운 엔드 투 엔드 속도 향상이라고 봅니다.

BF16 Grouped Query Attention 최적화 진행 과정, SOL 점수 0.9722 및 기하평균 84% 속도 향상 달성BF16 Grouped Query Attention 최적화 진행 과정, SOL 점수 0.9722 및 기하평균 84% 속도 향상 달성

게이팅이 포함된 NVFP4 MoE Linear

이 문제는 Qwen3 같은 Mixture-of-Experts 모델에서 흔히 나타나는 2커널 패턴을 보여주며, 입력 텐서와 중간 곱셈 결과가 NVFP4(4비트 부동소수점)로 양자화된다는 점이 특징입니다.

에이전트는 양자화 영역이 주요 병목이라는 점을 정확히 파악했고, 이에 따라 스케일 계산과 반올림을 융합했습니다. 양자화 과정에서 먼저 스케일링한 뒤 반올림하는 대신, 미리 계산된 임곗값 버킷을 사용해 FP32 값을 FP4 코드로 직접 매핑했습니다. 가능한 NVFP4 값이 16개뿐이기 때문에 이런 방식이 가능합니다. 이후 이러한 최적화를 더 큰 테스트 케이스에도 적용했습니다.

에이전트는 최종적으로 최적화된 PyTorch 기준선을 뛰어넘어, 기하평균 기준 39%의 속도 향상과 0.58 SOL 점수를 달성했습니다.

NVFP4 MoE Linear 최적화 진행 과정, 기하평균 기준 39%의 속도 향상과 0.58 SOL 점수 달성NVFP4 MoE Linear 최적화 진행 과정, 기하평균 기준 39%의 속도 향상과 0.58 SOL 점수 달성

BF16 행렬 곱셈

행렬 곱셈은 다양한 하드웨어 유닛과 그 스케줄링에 대한 깊은 이해가 필요하기 때문에, 최적화가 특히 어려운 과제로 악명이 높습니다. 최고 수준의 성능을 내는 행렬 곱셈 커널(GEMM)을 구현하려면 인라인 PTX(어셈블리어와 유사), 파이프라이닝, 그리고 커널 내부 스테이징이 필요합니다. 그 결과, 빠른 GEMM 구현은 역사적으로 고도로 숙련된 커널 전문가 영역에 머물러 있었습니다.

Cursor 멀티 에이전트 시스템은 특화된 CUDA C++ GEMM 커널을 처음부터 생성해, NVIDIA cuBLAS 라이브러리의 정교하게 튜닝된 인간 기준선 대비 86% 수준까지 놀라울 만큼 근접한 성능을 달성했습니다. 이 시스템은 Blackwell 전용 명령어 사용법을 독자적으로 학습하고, 하드웨어에 맞게 메모리 읽기/쓰기를 최적화한 뒤, 정확한 형상에 맞춰 초미세 최적화함으로써 이 결과에 도달했습니다.

그리고 LLM 추론 디코드에서 특히 중요한 small-M 테스트 사례에서는, 이 멀티 에이전트 시스템 커널이 라이브러리보다 최대 9% 더 뛰어난 성능을 보였습니다. 이는 멀티 에이전트 시스템이 머지않아 가장 어려운 커널 과제에서도 도메인 전문가를 능가할 수 있음을 시사합니다.

BF16 행렬 곱셈 결과: 사람이 최적화한 cuBLAS 성능의 86%를 달성했으며, small-M 사례에서는 최대 9% 더 뛰어난 성능을 보임BF16 행렬 곱셈 결과: 사람이 최적화한 cuBLAS 성능의 86%를 달성했으며, small-M 사례에서는 최대 9% 더 뛰어난 성능을 보임

소프트웨어 개발을 위한 멀티 에이전트 시스템

멀티 에이전트 하네스는 기준선 대비 38%의 기하평균 속도 향상을 보였지만, SOL 점수의 중앙값은 여전히 0.56에 그쳐 추가로 최적화할 여지가 상당했습니다. 저희는 더 많은 연산 자원이 있다면 멀티 에이전트 솔루션을 훨씬 더 개선할 수 있다고 봅니다. 수백 개의 과제와 에이전트를 단 27개의 GPU에서만 실행했기 때문입니다. 이로 인해 멀티 에이전트 시스템의 잠재력을 충분히 활용하지 못했습니다. GPU가 더 많았다면 이 시스템은 훨씬 더 깊이 있고 더 참신한 해결책까지 탐색할 수 있었을 것입니다.

소프트웨어 개발에서 가장 도전적인 작업은 명확한 해법이 없는 개방형 과제입니다. 단일 에이전트 시스템은 이런 상황에서 어려움을 겪는데, 모델은 학습 과정에서 이미 접한 범위가 좁은 작업에 가장 강하기 때문입니다. 저희는 이번 커널 최적화 실험이, 멀티 에이전트 아키텍처가 학습 데이터 분포를 훨씬 벗어나는 새로운 과제까지 해결할 수 있기 때문에 소프트웨어 개발의 기본 접근 방식으로 빠르게 자리 잡을 것임을 보여주는 또 하나의 근거라고 봅니다.

저희가 여기서 연구하고 있는 기법은 곧 Cursor의 핵심 제품에 반영될 예정입니다. 멀티 에이전트 조율의 어려운 과제를 함께 풀어가는 일에 관심이 있다면, Cursor 팀은 hiring@cursor.com으로 여러분의 연락을 기다리고 있습니다.

분류: 연구

작성자s: Wilson Lin, Sahil Modi, Yuan Zhang & Edward Lin