구성 옵션
구성 옵션
Docker Model Runner는 모델 동작, 메모리 사용량, 추론 성능을 조정할 수 있는 여러 구성 옵션을 제공해요. 이 가이드는 핵심 설정과 적용 방법을 다뤄요.
출처: 문서
본문
컨텍스트 크기(context length)
컨텍스트 크기는 입력 프롬프트와 생성 출력을 모두 포함해 단일 요청에서 모델이 처리할 수 있는 최대 토큰 수를 정해요. 이는 메모리 사용량과 모델 기능에 영향을 주는 가장 중요한 설정 중 하나예요.
기본 컨텍스트 크기
기본적으로 Docker Model Runner는 기능과 리소스 효율의 균형을 맞춘 컨텍스트 크기를 사용해요:
| 엔진 | 기본 동작 |
|---|---|
| llama.cpp | 4096 토큰 |
| vLLM | 모델의 최대 훈련 컨텍스트 크기 사용 |
참고: 실제 기본값은 모델마다 달라요. 대부분의 모델은 기본적으로 2,048~8,192 토큰을 지원해요. 일부 최신 모델은 32K, 128K 또는 더 큰 컨텍스트를 지원해요.
컨텍스트 크기 구성
docker model configure 명령으로 모델별 컨텍스트 크기를 조정할 수 있어요:
$ docker model configure --context-size 8192 ai/qwen2.5-coder
또는 Compose 파일에서:
models:
llm:
model: ai/qwen2.5-coder
context_size: 8192
컨텍스트 크기 가이드라인
| 컨텍스트 크기 | 전형적인 사용 사례 | 메모리 영향 |
|---|---|---|
| 2,048 | 간단한 질의, 짧은 코드 스니펫 | 낮음 |
| 4,096 | 표준 대화, 중간 크기 코드 파일 | 보통 |
| 8,192 | 긴 대화, 더 큰 코드 파일 | 높음 |
| 16,384+ | 긴 문서, 다중 파일 컨텍스트 | 매우 높음 |
중요: 컨텍스트 크기가 클수록 더 많은 메모리(RAM/VRAM)가 필요해요. 메모리 부족 오류가 발생하면 컨텍스트 크기를 줄이세요. 대략적으로 토큰 1,000개마다 모델 크기에 따라 추가 메모리가 약 100-500MB 필요해요.
모델의 최대 컨텍스트 확인
컨텍스트 크기를 포함한 모델의 구성을 보려면:
$ docker model inspect ai/qwen2.5-coder
참고:
docker model inspect명령은 모델의 최대 지원 컨텍스트 길이(예:gemma3.context_length)를 보여주지, 구성된 컨텍스트 크기를 보여주지는 않아요. 구성된 컨텍스트 크기는docker model configure --context-size로 설정한 값으로, 추론 중 실제 한도를 나타내며 모델의 최대 지원 컨텍스트 길이보다 작거나 같아야 해요.
런타임 플래그
런타임 플래그를 사용하면 파라미터를 기본 추론 엔진에 직접 전달할 수 있어요. 이는 모델 동작에 대한 세밀한 제어를 제공해요.
런타임 플래그 사용
런타임 플래그는 여러 메커니즘으로 제공할 수 있어요.
Docker Compose 사용:
models:
llm:
model: ai/qwen2.5-coder
context_size: 4096
runtime_flags:
- "--temp"
- "0.7"
- "--top-p"
- "0.9"
명령줄 사용:
$ docker model configure ai/qwen2.5-coder -- --temp 0.7 --top-p 0.9
일반적인 llama.cpp 파라미터
다음은 가장 흔히 쓰는 llama.cpp 파라미터예요. 일반적인 사용 사례에서는 llama.cpp 문서를 찾아볼 필요가 없어요.
샘플링 파라미터
| 플래그 | 설명 | 기본값 | 범위 |
|---|---|---|---|
--temp |
샘플링 온도. 낮을수록 결정적, 높을수록 창의적 | 0.8 | 0.0-2.0 |
--top-k |
상위 K 토큰으로 샘플링 제한. 낮을수록 집중 | 40 | 1-100 |
--top-p |
핵 샘플링 임계값. 낮을수록 집중 | 0.9 | 0.0-1.0 |
--min-p |
최소 확률 임계값 | 0.05 | 0.0-1.0 |
--repeat-penalty |
반복 토큰 페널티 | 1.1 | 1.0-2.0 |
예시: 결정적 출력(코드 생성용)
runtime_flags:
- "--temp"
- "0"
- "--top-k"
- "1"
예시: 창의적 출력(스토리텔링용)
runtime_flags:
- "--temp"
- "1.2"
- "--top-p"
- "0.95"
성능 파라미터
| 플래그 | 설명 | 기본값 | 참고 |
|---|---|---|---|
--threads |
생성용 CPU 스레드 | Auto | 성능 코어 수로 설정 |
--threads-batch |
배치 처리를 위한 CPU 스레드 | Auto | 보통 --threads와 동일 |
--batch-size |
프롬프트 처리용 배치 크기 | 512 | 높을수록 프롬프트 처리 빠름 |
--mlock |
모델을 메모리에 잠금 | Off | 스와핑 방지, 충분한 RAM 필요 |
--no-mmap |
메모리 매핑 비활성화 | Off | 일부 시스템에서 성능 향상 가능 |
예시: 멀티코어 CPU에 최적화
runtime_flags:
- "--threads"
- "8"
- "--batch-size"
- "1024"
GPU 파라미터
| 플래그 | 설명 | 기본값 | 참고 |
|---|---|---|---|
--n-gpu-layers |
GPU로 오프로드할 레이어 | All(GPU 가능 시) | VRAM 부족 시 줄이기 |
--main-gpu |
계산에 사용할 GPU | 0 | 멀티 GPU 시스템용 |
--split-mode |
GPU 간 분할 방식 | layer | 옵션: none, layer, row |
예시: 부분 GPU 오프로드(VRAM 제한)
runtime_flags:
- "--n-gpu-layers"
- "20"
고급 파라미터
| 플래그 | 설명 | 기본값 |
|---|---|---|
--rope-scaling |
RoPE 스케일링 방법 | Auto |
--rope-freq-base |
RoPE 기본 주파수 | 모델 기본값 |
--rope-freq-scale |
RoPE 주파수 스케일 | 모델 기본값 |
--no-prefill-assistant |
어시스턴트 사전 채우기 비활성화 | Off |
--reasoning-budget |
추론 모델용 토큰 예산 | 0(비활성화) |
vLLM 파라미터
vLLM 백엔드를 사용할 때는 다른 파라미터를 사용할 수 있어요. --hf_overrides로 HuggingFace 모델 구성 오버라이드를 JSON으로 전달해요:
$ docker model configure --hf_overrides '{"rope_scaling": {"type": "dynamic", "factor": 2.0}}' ai/model-vllm
구성 프리셋
다음은 일반적인 사용 사례에 대한 완전한 구성 예시예요.
코드 완성(빠르고 결정적)
models:
coder:
model: ai/qwen2.5-coder
context_size: 4096
runtime_flags:
- "--temp"
- "0.1"
- "--top-k"
- "1"
- "--batch-size"
- "1024"
채팅 어시스턴트(균형)
models:
assistant:
model: ai/llama3.2
context_size: 8192
runtime_flags:
- "--temp"
- "0.7"
- "--top-p"
- "0.9"
- "--repeat-penalty"
- "1.1"
창의적 글쓰기(높은 온도)
models:
writer:
model: ai/llama3.2
context_size: 8192
runtime_flags:
- "--temp"
- "1.2"
- "--top-p"
- "0.95"
- "--repeat-penalty"
- "1.0"
긴 문서 분석(큰 컨텍스트)
models:
analyzer:
model: ai/qwen2.5-coder:14B
context_size: 32768
runtime_flags:
- "--mlock"
- "--batch-size"
- "2048"
저메모리 시스템
models:
efficient:
model: ai/smollm2:360M-Q4_K_M
context_size: 2048
runtime_flags:
- "--threads"
- "4"
환경 기반 구성
컨테이너의 환경 변수로 모델을 구성할 수도 있어요:
| 변수 | 설명 |
|---|---|
LLM_URL |
자동 주입된 모델 엔드포인트 URL |
LLM_MODEL |
자동 주입된 모델 식별자 |
이 값들이 어떻게 채워지는지에 대한 자세한 내용은 Models and Compose 문서를 참고해 주세요.
구성 초기화
docker model configure로 설정한 구성은 모델이 제거될 때까지 유지돼요. 구성을 초기화하려면:
$ docker model configure --context-size -1 ai/qwen2.5-coder
-1을 사용하면 기본값으로 초기화돼요.
다음 단계
- 추론 엔진 — llama.cpp와 vLLM 알아보기
- API 레퍼런스 — 요청별 구성용 API 파라미터
- Models and Compose — Compose 애플리케이션에서 모델 구성