# 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 # Проверка: 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: - "${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