76 lines
3.0 KiB
YAML
76 lines
3.0 KiB
YAML
# llama.cpp + CUDA в Docker (Qwen3.x / крупные GGUF на 12 ГБ VRAM: гибрид GPU+CPU).
|
||
# Образ по умолчанию: server-cuda (CUDA 12 в контейнере) — совместим с большинством GPU и драйверов.
|
||
# Альтернатива: server-cuda13 — только если GPU/драйвер тянут CUDA 13; иначе ggml_cuda_init:
|
||
# «forward compatibility was attempted on non supported HW» → оставьте server-cuda.
|
||
# Нужны: драйвер NVIDIA, NVIDIA Container Toolkit, runtime nvidia в Docker.
|
||
#
|
||
# Модель: ./models/ + MODEL_FILE в .env.
|
||
# Запуск: docker compose up -d или docker-compose up -d
|
||
# Podman (одна команда, те же флаги): ./podman-llama.sh
|
||
# Проверка: curl http://localhost:8080/health
|
||
#
|
||
# OOM: уменьшите CTX_SIZE (дефолт 50000), -ngl и/или cache types; при «каше» попробуйте bf16/f16 для KV (больше VRAM).
|
||
# MoE: в .env CPU_MOE=1 при необходимости; число слоёв MoE на CPU — N_CPU_MOE (дефолт 99 в command); для dense оставьте CPU_MOE=0.
|
||
# --mlock + Docker: поднимите memlock ниже; если предупреждение остаётся — проверьте default-ulimits в /etc/docker/daemon.json и лимиты пользователя на хосте.
|
||
# Дефолт chat-template: instruct (enable_thinking=false). Режим thinking — поменяйте JSON у --chat-template-kwargs.
|
||
|
||
version: "3.8"
|
||
|
||
services:
|
||
llama-server:
|
||
image: ghcr.io/ggml-org/llama.cpp:server-cuda
|
||
container_name: llama-server
|
||
ports:
|
||
# Явный IPv4 на хосте (избегаем привязки только к [::] в части окружений).
|
||
- "0.0.0.0:${PORT:-8080}:8080"
|
||
volumes:
|
||
- ./models:/models:ro
|
||
# Старый docker-compose v1 не знает ключ `gpus:` — используем runtime nvidia (см. daemon.json от toolkit).
|
||
runtime: nvidia
|
||
environment:
|
||
NVIDIA_VISIBLE_DEVICES: all
|
||
# llama.cpp: https://github.com/ggml-org/llama.cpp/blob/master/tools/server/README.md
|
||
LLAMA_ARG_CPU_MOE: "${CPU_MOE:-0}"
|
||
shm_size: 1gb
|
||
ulimits:
|
||
memlock:
|
||
soft: -1
|
||
hard: -1
|
||
command:
|
||
- "-m"
|
||
- "/models/${MODEL_FILE:-model.gguf}"
|
||
- "--host"
|
||
- "0.0.0.0"
|
||
- "--port"
|
||
- "8080"
|
||
- "--n-cpu-moe"
|
||
- "${N_CPU_MOE:-99}"
|
||
- "-c"
|
||
- "${CTX_SIZE:-50000}"
|
||
- "-np"
|
||
- "1"
|
||
- "-fa"
|
||
- "on"
|
||
- "--cache-type-k"
|
||
- "${CACHE_TYPE_K:-q8_0}"
|
||
- "--cache-type-v"
|
||
- "${CACHE_TYPE_V:-turbo2}"
|
||
- "--no-mmap"
|
||
- "--mlock"
|
||
- "--ctx-checkpoints"
|
||
- "1"
|
||
- "--cache-ram"
|
||
- "0"
|
||
- "--jinja"
|
||
- "--reasoning"
|
||
- "on"
|
||
- "--reasoning-budget"
|
||
- "-1"
|
||
- "-b"
|
||
- "2048"
|
||
- "-ub"
|
||
- "2048"
|
||
- "--threads"
|
||
- "${THREADS:-8}"
|
||
restart: unless-stopped
|