Local LLM 구축하기 · 05/30 · 기초
긴 대화에서 앞의 내용을 놓쳤다면 실행 문맥부터 살펴보세요. 설정된 한도가 작거나 입력이 잘렸을 수도 있고, 긴 자료 속에서 필요한 내용을 찾지 못했을 수도 있습니다. 토큰과 컨텍스트를 알면 이런 현상을 메모리 사용량과 함께 볼 수 있어요.
Ollama를 실행해 두고 PowerShell을 엽니다. 입력과 출력에 각각 얼마의 토큰을 쓸지 정하고, 문맥을 늘렸을 때 메모리가 어떻게 달라지는지 확인합니다.
토큰과 입력 한도
모델은 토크나이저로 나눈 숫자 단위, 즉 토큰을 처리합니다. 한국어 한 글자나 영어 한 단어가 항상 토큰 하나인 것은 아니에요. 같은 문장도 모델에 따라 토큰 수가 달라집니다. 입력 한도를 계산할 때는 문서뿐 아니라 시스템 지시, 이전 대화, 도구 정의와 출력 공간도 고려합니다.
문맥이 8192인데 입력에 8000토큰을 쓰면 2000토큰의 답변을 담을 여유가 없습니다. 앱에 따라 요청을 거절하거나 앞의 내용을 덜어 내고, 출력을 짧게 끝내기도 합니다. 넣을 자료의 길이를 정하기 전에 답변 공간부터 남겨 둡니다.
실행 문맥을 지정한 API 요청
$body = @{
model = "qwen3:4b-instruct"
messages = @(@{role="user";content="백업과 스냅샷의 차이를 두 문장으로 설명해 줘."})
stream = $false
options = @{num_ctx=4096;num_predict=160;temperature=0.2}
} | ConvertTo-Json -Depth 6
$r = Invoke-RestMethod -Uri http://127.0.0.1:11434/api/chat -Method Post -ContentType 'application/json; charset=utf-8' -Body ([System.Text.Encoding]::UTF8.GetBytes($body))
$r.message.content
$r | Select-Object prompt_eval_count, eval_count
prompt_eval_count로 실제 처리된 입력 토큰 수를 살펴볼 수 있습니다. 모델 카드의 최대 문맥과 num_ctx로 지정한 실행 문맥은 따로 확인하세요. 큰 문맥을 지원하는 모델도 장비의 메모리가 부족하면 그 크기로 실행하기 어렵습니다.
KV 캐시와 메모리
Transformer의 attention은 현재 토큰이 이전 토큰의 어느 부분을 참고할지 계산합니다. 이때 이전 토큰의 key와 value를 보관해 계산을 반복하지 않도록 하는 저장 공간이 KV 캐시입니다. 일반적으로 문맥과 동시 시퀀스가 늘면 캐시도 커집니다. GQA·MQA는 저장할 KV 헤드 수를 줄여 이 부담을 낮추는 구조입니다.
캐시의 크기는 모델 구조와 캐시 정밀도에 따라 달라집니다. 토큰당 메모리를 한 숫자로 외우기보다는, 같은 모델에서 문맥을 4K에서 8K로 바꿔 보세요. 메모리와 첫 응답 시간을 함께 기록하면 내 PC에서 감당할 범위를 판단하기 편합니다.
양자화의 용량·품질 차이
양자화는 FP16 가중치를 더 적은 비트로 근사해 저장량과 대역폭 부담을 줄이는 방법입니다. 값이 바뀐 만큼 답변에도 차이가 생길 수 있어요. Q4_K_M 역시 모든 숫자를 똑같이 4비트로 자른다는 뜻은 아닙니다. 양자화 방식과 중요 텐서의 처리 방법을 함께 나타내는 표기입니다.
ollama show qwen3:4b-instruct
ollama show qwen3:4b-instruct --modelfile
차이는 같은 평가 문항으로 확인합니다. 정답을 맞히는지, 요청한 형식을 지키는지 비교해 보세요. 작업에 따라 작은 고정밀 모델이 큰 저정밀 모델보다 나을 수도 있습니다. 크기와 정밀도, 문맥을 한꺼번에 바꾸지 않아야 결과를 해석하기 쉽습니다.
참고 자료
문서·모델 태그 확인 기준: 2026년 10월 18일. 기본 실습 환경: Windows 11 x64.




답글 남기기