63 lines
1.9 KiB
YAML
63 lines
1.9 KiB
YAML
# Backendy LLM uruchamiane kontenerowo. Sterowane profilami, żeby jeden plik
|
|
# obsłużył kilka wariantów i żeby `docker compose up` bez profilu nic nie robił.
|
|
#
|
|
# docker compose --profile vllm-gpu up -d # Linux + NVIDIA
|
|
# docker compose --profile ollama up -d # awaryjnie, obie platformy
|
|
#
|
|
# Zwykle nie wywołujesz tego wprost - robi to `task llm:up`.
|
|
|
|
name: agentic-codemod-llm
|
|
|
|
services:
|
|
|
|
vllm:
|
|
profiles: ["vllm-gpu"]
|
|
image: vllm/vllm-openai:${VLLM_IMAGE_TAG:-latest}
|
|
command: >
|
|
--model ${LLM_SERVE_MODEL:-Qwen/Qwen3-4B-Instruct-2507}
|
|
--max-model-len=16384
|
|
--enable-auto-tool-choice
|
|
--tool-call-parser=hermes
|
|
--gpu-memory-utilization=${VLLM_GPU_UTIL:-0.90}
|
|
ports:
|
|
- "${LLM_PORT:-8000}:8000"
|
|
volumes:
|
|
# Cache modeli poza kontenerem - restart nie oznacza ponownego pobierania.
|
|
- ${HF_CACHE:-${HOME}/.cache/huggingface}:/root/.cache/huggingface
|
|
environment:
|
|
HUGGING_FACE_HUB_TOKEN: ${HUGGING_FACE_HUB_TOKEN:-}
|
|
# vLLM używa pamięci dzielonej do komunikacji między workerami
|
|
ipc: host
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
count: all
|
|
capabilities: [gpu]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "python3 -c \"import urllib.request;urllib.request.urlopen('http://localhost:8000/health')\""]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 40
|
|
start_period: 300s
|
|
restart: unless-stopped
|
|
|
|
ollama:
|
|
profiles: ["ollama"]
|
|
image: ollama/ollama:${OLLAMA_IMAGE_TAG:-latest}
|
|
ports:
|
|
- "${OLLAMA_PORT:-11434}:11434"
|
|
volumes:
|
|
- ollama-models:/root/.ollama
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "ollama list >/dev/null 2>&1"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 30s
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
ollama-models:
|