처음부터 만든 빠른 LLM 추론 엔진

2024-12-15

이 글에서는 저자가 어떤 라이브러리도 사용하지 않고 C++과 CUDA를 사용하여 LLM 추론 엔진을 처음부터 구축한 과정을 자세히 설명합니다. 이 과정을 통해 CUDA 커널부터 모델 아키텍처까지 LLM 추론의 전체 스택을 깊이 이해하고 다양한 최적화가 추론 속도에 어떻게 영향을 미치는지 배웠습니다. 목표는 일반적인 오픈소스 모델의 가중치를 로드하고 단일 CPU+GPU 서버에서 단일 배치 추론을 실행할 수 있는 프로그램을 만들고 토큰 처리량을 반복적으로 개선하여 llama.cpp를 능가하는 것이었습니다. CPU와 GPU 모두에서 최적화 단계, 멀티스레딩, 가중치 양자화, SIMD, 커널 융합, KV 캐시 양자화 등을 자세히 설명하고 병목 현상과 과제를 분석합니다. 최종적으로 로컬 LLM 추론에서 최첨단에 가까운 성능을 달성했습니다.

개발 LLM 추론