From 5a5cef0c90444effb47ef156d60d0cbee0c71716 Mon Sep 17 00:00:00 2001 From: GRayHook Date: Sat, 2 May 2026 19:54:28 +0700 Subject: [PATCH] init --- .env | 14 +++++++++++ .gitignore | 2 ++ docker-compose.yml | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 .env create mode 100644 .gitignore create mode 100644 docker-compose.yml diff --git a/.env b/.env new file mode 100644 index 0000000..16bcfac --- /dev/null +++ b/.env @@ -0,0 +1,14 @@ +MODEL_FILE=Qwen3.6-35B-A3B-MXFP4_MOE.gguf +# Для -1 в .env лучше кавычки — иначе часть парсеров .env ломается на ведущем минусе. +N_GPU_LAYERS="-1" + +# Доп. ключи docker-compose (опционально; дефолты заданы в compose) +CTX_SIZE=65536 +THREADS=8 +CACHE_TYPE_K=q8_0 +CACHE_TYPE_V=q8_0 + +# MoE (Qwen3.5-35B-A3B-Q4_K_M / MXFP4_MOE и т.д.): при OOM на GPU — CPU_MOE=1 или частично N_CPU_MOE=8 +# Для dense (Qwopus 27B, Qwen 9B) держите оба 0. +CPU_MOE=0 +N_CPU_MOE=29 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c66388f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +models diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..bccdc1b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,70 @@ +# llama.cpp + CUDA (Qwen3.x / крупные GGUF на 12 ГБ VRAM: гибрид GPU+CPU). +# Нужны: драйвер 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