llama.cpp 빌드하기
llama.cpp 빌드하기
이 프로젝트의 핵심 산출물은 llama 라이브러리고, 그 주변에 이 라이브러리를 쓰는 여러 예제 프로그램과 도구가 함께 들어 있어요. 소스를 받아서 원하는 백엔드(CPU, GPU)와 옵션에 맞게 빌드하는 과정을 정리해 드릴게요.
소스 받기
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
CPU 빌드 (기본)
CMake로 가장 간단하게 빌드할 수 있어요.
cmake -B build
cmake --build build --config Release
- 컴파일을 빠르게 하려면
-j인자로 병렬 작업 수를 늘리거나, Ninja 같은 자동 병렬 제너레이터를 쓰면 돼요. 예를 들어cmake --build build --config Release -j 8은 8개 작업을 병렬로 돌려요. - 반복 컴파일이 잦다면 ccache를 설치하면 좋아요.
- 정적 빌드는
-DBUILD_SHARED_LIBS=OFF를 추가하면 돼요.
Metal 빌드 (Apple Silicon)
macOS에서는 Metal이 기본으로 켜져 있고, 이러면 계산이 GPU에서 돌아요. 컴파일 시점에 끄려면 -DGGML_METAL=OFF를 주면 되고, Metal로 빌드해도 실행할 때 --n-gpu-layers 0 옵션으로 GPU 추론을 끌 수 있어요.
CUDA 빌드 (NVIDIA GPU)
NVIDIA GPU 가속을 쓰려면 CUDA 툴킷이 설치돼 있어야 해요.
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
기본적으로는 지금 연결된 하드웨어에 맞춰 빌드돼요. 모든 CUDA GPU에서 돌게 하려면 -DGGML_NATIVE=OFF로 네이티브 빌드를 끄면 되는데, 이 경우 JIT 컴파일이 필요할 수 있어요.
특정 CUDA 아키텍처만 지정하고 싶다면 CMAKE_CUDA_ARCHITECTURES에 Compute Capability를 나열하면 돼요.
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86;89"
OpenCL 빌드
OpenCL을 쓰려면 먼저 헤더와 ICD 로더를 설치해야 해요 (Windows arm64 예시).
mkdir -p ~/dev/llm
cd ~/dev/llm
git clone https://github.com/KhronosGroup/OpenCL-Headers && cd OpenCL-Headers
mkdir build && cd build
cmake .. -G Ninja `
-DBUILD_TESTING=OFF `
-DOPENCL_HEADERS_BUILD_TESTING=OFF `
-DOPENCL_HEADERS_BUILD_CXX_TESTS=OFF `
-DCMAKE_INSTALL_PREFIX="$HOME/dev/llm/opencl"
cmake --build . --target install
그다음 llama.cpp를 OpenCL 활성화로 빌드해요.
cmake .. -G Ninja `
-DCMAKE_TOOLCHAIN_FILE="$HOME/dev/llm/llama.cpp/cmake/arm64-windows-llvm.cmake" `
-DCMAKE_BUILD_TYPE=Release `
-DCMAKE_PREFIX_PATH="$HOME/dev/llm/opencl" `
-DBUILD_SHARED_LIBS=OFF `
-DGGML_OPENCL=ON
ninja
GPU 백엔드에 관한 참고
-ngl 0 옵션을 써도 GPU가 일부 연산을 가속할 수 있어요. GPU 가속을 완전히 끄려면 --device none을 쓰면 됩니다. 여러 백엔드를 동시에 빌드할 수도 있어요. 예를 들어 -DGGML_CUDA=ON -DGGML_VULKAN=ON처럼 CUDA와 Vulkan을 함께 빌드하고, 실행 시점에 --device 옵션으로 쓸 디바이스를 고를 수 있어요. 쓸 수 있는 디바이스 목록은 --list-devices로 확인할 수 있고, GGML_BACKEND_DL 옵션으로 빌드하면 백엔드를 런타임에 동적으로 로드할 수도 있어요.
더 알아보기
- llama.cpp 빠른 시작 — 가장 쉬운 실행 경로
- llama-server — OpenAI 호환 HTTP 서버