AI Briefing

에이전트가 코딩 전에 연구하면 최적화가 더 좋아진다

·2026.04.10 09:00

핵심 내용

에이전트가 코드 전에 논문과 포크를 읽자, llama.cpp 최적화가 크게 개선됐다.

자세히 보기

코드만 읽고 최적화를 찾는 방식은 한계가 있었다. llama.cpp의 CPU 추론 경로에서는 미세한 SIMD 튜닝만으로는 성능이 거의 오르지 않았고, 텍스트 생성은 모델 가중치를 DRAM에서 읽는 memory-bandwidth bound 문제라는 점이 핵심이었다.

그래서 에이전트 앞에 research phase를 추가했다. 논문과 경쟁 포크, 다른 백엔드 구현을 먼저 읽게 한 뒤 실험을 돌리자, 더 좋은 가설을 빠르게 찾기 시작했다. 특히 arxiv보다 ik_llama.cpp, CUDA, Metal, llamafile 같은 실제 구현을 살피는 쪽이 더 유용했다.

4개의 클라우드 VM과 약 3시간, 총 $29 정도의 비용으로 30+ 실험을 돌렸고, 그중 5개가 최종 코드에 들어갔다. 핵심은 연산 자체를 더 빠르게 만드는 것보다, 불필요한 메모리 패스를 줄이고 서로 분리돼 있던 연산을 fuse하는 데 있었다.

들어간 최적화는 다음과 같다.

  • Softmax fusion: copy, scale, mask add의 3패스를 1패스로 통합
  • RMS norm fusion: memcpy 뒤 scale을 한 번의 루프로 합침
  • Adaptive from_float parallelization: prompt processing과 text generation에 따라 row/element 단위로 동적 분기
  • Graph-level RMS_NORM + MUL fusion: CPU backend에 없던 패턴을 찾아 AVX2/NEON fused kernel로 구현
  • Flash attention KQ fusion: scale, pad, mask, max를 AVX2 FMA pass로 합침

연구가 특히 중요했던 지점은, CUDA와 Metal backend에는 이미 있던 RMS_NORM + MUL fusion이 CPU에는 없었다는 사실이다. 코드만 봤다면 자연스럽게 보이는 2단계 처리였지만, 다른 백엔드를 비교하자 병목이 보였고 그 차이가 실제 최적화로 이어졌다.

최종적으로 flash attention을 켠 상태에서 x86과 ARM 모두에서 더 빠른 결과가 나왔다. 전체적으로는 x86에서 text generation +15%, ARM에서 +5% 개선됐고, 연구를 먼저 하는 에이전트가 코드만 읽는 에이전트보다 더 좋은 최적화를 찾는다는 점이 확인됐다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.