|
|
# 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
|