laptop_mac macOS Sonoma
Intermediate
schedule 8 min read
by Alex Rivera • May 14, 2024
Linux에서 Llama 3를 실행하면 최대한의 제어권과 성능을 확보할 수 있습니다. 여기서는 NVIDIA CUDA, AMD ROCm, 그리고 CPU 전용 추론을 네이티브로 지원하는 고도로 최적화된 C++ 추론 엔진인 llama.cpp를 활용합니다.
Step 1 소개
Ollama나 LM Studio와 같은 래퍼(wrapper)는 빠르게 시작하기에 훌륭하지만, 내부 엔진을 추상화하여 숨겨버립니다. Linux 하드웨어에서 성능의 마지막 한 방울까지 쥐어짜고 싶다면, llama.cpp를 소스에서 직접 컴파일하는 것이 업계 최고의 표준입니다.
이 가이드는 NVIDIA CUDA 지원으로 엔진을 컴파일하고, Llama 3 8B 모델을 다운로드한 뒤, 터미널에서 직접 실행하는 전 과정을 안내합니다.
Step 2 사전 요구 사항
우선, 핵심 빌드 도구와 NVIDIA CUDA 툴킷을 설치해야 합니다. 터미널을 열고 다음 명령을 실행하십시오:
Terminal
sudo apt update
sudo apt install build-essential git python3-pip
sudo apt install nvidia-cuda-toolkit
NVIDIA 드라이버와 CUDA가 정상적으로 작동하는지 확인합니다:
Step 3 컴파일
GitHub에서 llama.cpp 저장소를 클론하고 컴파일을 진행합니다. make 명령에 LLAMA_CUDA=1 플래그를 전달하여 컴파일러가 NVIDIA GPU 가속이 적용된 바이너리를 빌드하도록 지정합니다.
Terminal
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make -j$(nproc) LLAMA_CUDA=1
컴파일이 완료되면, 루트 디렉터리에 llama-cli 및 llama-server를 포함한 여러 실행 파일이 생성됩니다.
Step 4 Llama 3 가중치 다운로드
llama.cpp는 .gguf 파일 형식을 사용합니다. HuggingFace CLI를 활용하여 Meta의 Llama 3 8B 모델을 서버에 안전하게 직접 다운로드할 수 있습니다.
먼저, CLI를 설치합니다:
Terminal
pip3 install -U "huggingface_hub[cli]"
이제 모델의 Q4_K_M 양자화(quantized) 버전을 다운로드합니다. 이 4비트 양자화는 속도와 지능 사이의 균형을 완벽하게 맞추면서, 8GB VRAM 내에 여유롭게 적재됩니다.
Terminal
huggingface-cli download bartowski/Meta-Llama-3-8B-Instruct-GGUF Meta-Llama-3-8B-Instruct-Q4_K_M.gguf --local-dir ./models
Step 5 추론 실행
이제 Llama 3와 대화할 시간입니다. llama-cli 도구를 사용합니다.
-ngl 99 플래그는 이 명령에서 가장 중요한 부분입니다. 이는 llama.cpp에게 99개의 레이어(8B 모델의 경우 사실상 전체 레이어)를 NVIDIA GPU의 VRAM으로 오프로드(offload)하도록 지시합니다.
Terminal
./llama-cli -m ./models/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf \
-n 512 \
-ngl 99 \
--color \
-i -r "User:" \
-p "You are a helpful AI assistant.\n\nUser: Hello!\nAI:"
엔진이 초기화되고, 모델을 VRAM에 로드한 뒤, 대화형 프롬프트를 표시하는 것을 확인할 수 있습니다.
Step 6 로컬 API 서버
헤드리스(headless) Ubuntu 서버에서 호스팅하며 원격으로(또는 Open WebUI와 같은 UI를 통해) 모델에 접근하고 싶다면, 내장된 HTTP 서버를 실행할 수 있습니다.
Terminal
./llama-server -m ./models/Meta-Llama-3-8B-Instruct-Q4_K_M.gguf -ngl 99 --host 0.0.0.0 --port 8080
이제 고성능 CUDA 가속 백엔드가 http://YOUR_SERVER_IP:8080에서 수신 대기 중이며, OpenAI API의 드롭인 대체제(drop-in replacement)로 완벽하게 작동합니다!