로컬 LLM 응답이 느릴 때 확인할 것들

로컬 LLM 응답이 느릴 때 확인해야 할 핵심 항목을 정리했습니다. 프롬프트 처리와 생성 속도 측정, GPU 메모리와 오프로딩, 양자화 수준, 컨텍스트 길이 점검 방법을 소개합니다. 먼저 프롬프트 처리와 답변 생성을 분리해야 합니다.

로컬 LLM 응답 속도는 모델 자체보다 실행 설정, GPU 메모리, 프롬프트 길이에 따라 크게 달라집니다. 로컬 LLM 서버가 이미 설치되어 있고 스트리밍 응답을 확인할 수 있는 환경을 전제로 합니다.

목차

응답 시간을 두 구간으로 나누기

먼저 프롬프트 처리와 답변 생성을 분리해야 합니다. 프롬프트 처리는 입력 내용을 모델이 읽고 첫 토큰을 준비하는 과정이며, 생성은 이후 답변 토큰을 하나씩 만드는 과정입니다. 긴 문서나 대화 기록을 입력했을 때는 생성 속도보다 첫 응답까지 걸리는 시간이 더 크게 늘 수 있습니다.

측정할 때는 전체 시간만 보지 말고 첫 토큰까지의 시간과 생성 속도를 따로 기록하세요. 첫 토큰까지의 시간은 TTFT(Time to First Token)라고 하며, 생성 속도는 초당 생성 토큰 수로 확인합니다. 서버 로그나 API의 스트리밍 통계에서 입력 토큰 수, 출력 토큰 수, 전체 시간을 확인하면 원인을 구분하기 쉽습니다. llama.cpp 서버 문서에서 --verbose는 상세 로그 옵션입니다. 서버의 timings_per_token 응답은 프롬프트 처리와 생성 속도 정보를 제공하지만, TTFT는 클라이언트가 요청을 시작한 시점부터 첫 토큰을 받은 시점까지 별도로 측정해 구분하세요. vLLM 등 다른 엔진은 해당 버전의 메트릭 정의를 확인해야 합니다.

GPU 메모리와 오프로딩 확인

GPU 메모리가 부족하거나 실행 설정이 제한되면 모델의 일부 레이어만 GPU에 올리고 나머지는 CPU에서 처리할 수 있습니다. llama.cpp에서는 레이어를 GPU에 올리는 것을 GPU 오프로딩이라고 부릅니다. 공식 서버 옵션 설명의 --n-gpu-layers는 GPU 메모리에 둘 최대 레이어 수를 지정합니다. 실제 CPU·GPU 분할과 속도는 엔진과 설정에 따라 다르므로 실행 로그에서 GPU에 적재된 레이어 수와 나머지 레이어의 처리 위치를 확인하세요.

운영체제의 GPU 모니터링 도구로 실행 중 메모리 사용량도 함께 확인하세요. 모델 실행 후 GPU 메모리가 한계에 가까운 상태에서 일부 레이어의 CPU 처리가 확인되거나 메모리 부족이 발생한다면, 컨텍스트 길이를 줄이거나 더 가벼운 양자화 모델을 선택하는 방법을 우선 검토하세요.

양자화 수준과 컨텍스트 길이 점검

양자화는 모델 숫자 데이터를 더 적은 비트로 저장해 메모리 사용량을 줄이는 방식입니다. 높은 비트의 양자화는 일반적으로 모델 품질 유지에 유리하지만 메모리 사용량이 커집니다. GPU 메모리에 모델 전체가 들어가지 않아 일부를 CPU에서 처리하면 속도가 달라질 수 있습니다. 낮은 비트 양자화는 메모리 사용량을 줄이는 데 유리하지만 모델 품질이나 출력 특성이 달라질 수 있으므로, 같은 프롬프트로 속도와 품질을 함께 비교해야 합니다.

컨텍스트 길이는 모델이 한 번에 참고하는 입력 범위입니다. 대화 기록, 시스템 지침, 첨부 문서가 계속 누적되면 프롬프트 처리 시간이 증가하고 메모리 여유도 줄어듭니다. 불필요한 대화는 요약하거나 삭제하고, 필요한 문서만 검색해 넣는 방식으로 입력 크기를 줄여 보세요.

순서대로 원인 좁히기

같은 모델과 짧은 질문으로 기준 속도를 먼저 측정한 뒤, 프롬프트 길이와 양자화 설정을 하나씩 바꿔 비교하세요. 기준 상태에서도 느리면 GPU 사용 여부와 오프로딩을 먼저 확인하고, 짧은 질문은 빠르지만 긴 입력만 느리다면 컨텍스트와 프롬프트 처리 구간을 점검하면 됩니다.

반복 측정할 때는 프롬프트 캐시 재사용 여부도 함께 기록하세요. 예를 들어 llama.cpp 서버 문서는 이전 요청과 공통인 프롬프트 접두부의 캐시를 재사용할 수 있다고 설명합니다. 캐시가 있는 반복 요청과 처음 처리하는 요청을 섞어 비교하면 프롬프트 처리량 차이를 설정 변경의 효과로 잘못 해석할 수 있습니다. 실제 지원 여부와 조건은 사용하는 엔진과 버전의 문서에서 확인하세요.

로컬 LLM의 속도 측정값은 하드웨어, 실행 엔진, 샘플링 설정에 따라 달라집니다. 따라서 다른 사람의 초당 토큰 수보다 여러분의 환경에서 동일한 조건으로 측정한 변화량을 기준으로 판단하는 편이 정확합니다.

속도 원인 확인 순서

로컬 LLM 속도 저하를 첫 토큰 시간과 생성 속도 및 입력 길이로 구분해 점검하는 방법

  1. 기준 측정: 같은 모델과 짧은 질문
  2. 시간 구분: 첫 토큰과 생성 속도
  3. GPU 확인: 메모리와 오프로딩
  4. 조건 비교: 입력 길이와 양자화

결론

첫 토큰 시간과 생성 속도를 나누어 측정하고, GPU 메모리·오프로딩·양자화·컨텍스트 길이를 순서대로 확인하면 느린 원인을 빠르게 좁힐 수 있습니다.

관련 글