실행 프로그램과 확장
llama.cpp: 어떤 설정이 느리게 만드는지 직접 확인하려면
같은 GGUF를 썼는데 다른 사람보다 느립니다. 앱 설정을 몇 번 바꿨더니 이제 처음 값도 기억나지 않습니다. llama.cpp를 직접 쓰는 이유는 무조건 더 빠르기 때문이 아니라, 어떤 파일을 어떤 조건으로 실행했는지 드러내기 쉽기 때문입니다.
직접 실행할 때 얻는 것과 맡게 되는 것
llama.cpp는 여러 장비에서 모델을 실행하는 추론 프로젝트이고, llama-server는 그 모델을 HTTP로 부르는 서버 프로그램입니다. 데스크톱 앱 안에서도 관련 엔진이 쓰이지만, 직접 실행하면 파일·문맥·동시 요청 같은 조건을 명령으로 남기기 쉽습니다.
그 대신 내 장비에 맞는 실행 파일과 드라이버를 고르고 업데이트를 관리해야 합니다. 지금 쓰는 앱으로 필요한 설정을 충분히 확인할 수 있다면 옮길 이유는 크지 않습니다. 앱이 감춘 조건을 확인하거나 특정 빌드로 문제를 재현해야 할 때 직접 실행의 이점이 생깁니다.
GPU가 있어도 그 GPU를 쓰는 빌드가 필요합니다
NVIDIA의 CUDA, Apple Silicon의 Metal, 다른 지원 장비의 Vulkan 등 백엔드에 따라 준비 과정이 달라집니다. CPU용 실행 파일로 시작한 뒤 GPU 사용률이 낮다고 그래픽카드 문제로 결론 내리면 안 됩니다. 시작 로그에서 감지한 장치와 사용한 백엔드를 확인하세요.
GGUF는 실행에 쓰는 파일 형식이지 모든 모델 구조를 지원한다는 보증은 아닙니다. 새 구조라면 현재 빌드의 지원과 변환본 정보를 함께 봅니다. 이미지 입력까지 쓰려면 그 모델의 멀티모달 지원과 필요한 추가 파일도 확인해야 하며, 텍스트 GGUF 하나로 모두 되는 것은 아닙니다.
한 모델, 한 요청에서 시작합니다
아래는 llama-server 실행 파일과 GGUF를 이미 준비한 경우입니다. ./models/model.gguf는 실제 받은 파일 경로로 바꿉니다. 별칭은 local-guide, 문맥은 4,096, 동시 슬롯은 하나로 명시했습니다. 내 장비의 최고 속도 설정이 아니라 이후 변경을 비교할 시작점입니다.
GPU 적재는 auto로 두고 실제 적재 결과를 봅니다. 실행 파일의 도움말에서 옵션을 찾지 못한다면 설치된 빌드가 이 예제와 다른 것입니다. 버전과 도움말을 먼저 확인하고, 모르는 옵션을 지우는 과정에서 조건을 바꿨다면 그 사실도 기록하세요.
받아 둔 GGUF로 로컬 서버 시작
llama-server -m ./models/model.gguf --alias local-guide --host 127.0.0.1 --port 8080 --ctx-size 4096 --parallel 1 --n-gpu-layers auto실행 파일이 PATH에 있는 터미널 예제입니다. 직접 빌드했다면 실행 파일 위치에 맞춰 바꾸세요. GGUF의 실제 경로와 해당 빌드의 --help를 먼저 확인합니다.
서버가 켜졌다는 것과 모델이 준비됐다는 것
모델을 읽는 동안에는 아직 답할 준비가 끝나지 않았을 수 있습니다. /health가 준비 상태를 돌려주는지 본 다음 짧은 요청을 보냅니다. 아래에서 첫 명령은 상태만 확인하고, 두 번째는 실제로 답변 생성을 요청합니다.
응답의 HTTP 형식이 맞더라도 대화 템플릿이나 도구 호출 방식이 맞지 않으면 연결한 앱은 실패할 수 있습니다. API 별칭과 문장 하나를 먼저 확인하고 추가 기능으로 넘어가세요. 이 예제는 답 전체를 받아 보는 방식이므로 순수 프리필 시간이나 첫 토큰 속도 측정값으로 쓰지 않습니다.
준비 상태와 답변을 따로 확인
curl -sS http://127.0.0.1:8080/health
curl -sS http://127.0.0.1:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"local-guide","messages":[{"role":"user","content":"Reply with one short sentence."}],"max_tokens":128,"stream":false}'서버를 켠 터미널은 그대로 두고 다른 터미널에서 실행합니다. 상태가 준비 완료인지 확인한 다음 두 번째 요청을 보내세요.
느린 부분을 찾은 뒤에 한 가지를 바꿉니다
먼저 모델이 CPU와 GPU에 어떻게 나뉘었는지 봅니다. GPU에 더 적재할 여유가 있는지, 문맥 때문에 메모리가 부족한지부터 확인하세요. 그다음 입력을 읽는 프리필과 출력하는 디코드를 나눠 봅니다. 입력 처리용 배치를 키운 결과를 답변 생성 속도가 같은 비율로 오른 것으로 해석할 수는 없습니다.
한 사람이 쓰는 속도를 확인하려면 동시 요청 수를 고정합니다. 여러 요청의 합산 처리량이 커져도 내 답이 더 빨리 끝나는 것은 아닙니다. 파일과 양자화, 입력·출력 길이를 맞추고 준비 실행 뒤 3회 이상 기록하세요. 설정의 이득보다 관리 부담이 크다면 Ollama나 LM Studio로 돌아가도 됩니다. 목적은 명령을 많이 쓰는 것이 아니라 필요한 답을 안정적으로 얻는 것입니다.
수정 내역
사이트의 안내가 바뀐 기록입니다. 설치된 엔진·모델 버전을 자동으로 확인한 결과는 아닙니다.
llama.cpp 서버 시작·복구 안내 추가
준비한 GGUF 파일 하나로 서버를 시작하고 로컬 API를 확인하는 예제를 추가했습니다. GPU 적재·문맥·요청 수를 한 항목씩 바꾸고, 메모리가 부족하면 정상 동작하던 설정으로 돌아가는 순서를 설명했습니다.