В этой директории лежат общие скрипты для подготовки окружения и запуска llama.cpp на разных NVIDIA GPU. Текущие значения по умолчанию подобраны под RTX 4090, но все GPU-зависимые параметры вынесены в переменные окружения.
Каталог можно переименовать, например в scripts, и положить в любое место на сервере. Скрипты не завязаны на имя директории и должны вызываться по полному пути через bash.
profiles.sh: загружает готовый профиль переменных окружения по имени GPU.setup.sh: собирает Docker-образ и проверяет доступ Docker к GPU.download.sh: скачивает GGUF-модель из Hugging Face.run.sh: запускаетllama-serverс выбранной моделью и runtime-параметрами.llama-server.dockerfile: Dockerfile для сборки с настраиваемой CUDA-архитектурой.
При смене GPU или модели обычно нужно задавать эти переменные:
ROOT_DIR: базовая директория для моделей и кэшей. По умолчанию:$HOME/llama-runtimeIMAGE_TAG: тег Docker-образа. По умолчанию:llama-server:localDOCKERFILE_PATH: путь кllama-server.dockerfileBUILD_CONTEXT: build context дляsetup.shCUDA_ARCHITECTURES: CUDA-архитектура, передаваемая в CMake при сборкеMODEL_REPO: репозиторий Hugging Face дляdownload.shMODEL_FILE: имя GGUF-файла дляdownload.shиrun.shMODEL_DIR_NAME: имя локальной директории модели. По умолчанию: имя файла без.ggufAPI_KEY: если задан, будет проброшен в контейнер дляllama-serverGPU_VISIBLE_DEVICES: какие GPU отдавать в Docker. Варианты:all,0,1,0,1CTX_SIZEBATCH_SIZEUBATCH_SIZETHREADSN_GPU_LAYERSSPLIT_MODE: напримерnone,layerили другой режимllama.cppMAIN_GPU: индекс основной GPU внутри контейнераTENSOR_SPLIT: опциональное распределение по нескольким GPU, например1,1или3,2,2,1
Сначала загрузи профиль GPU в текущую shell-сессию:
source /path/to/scripts/profiles.sh 4090Доступные профили:
3090
v100
4090
h100
h200
h100nvlСобрать образ:
bash /path/to/scripts/setup.shСкачать модель:
HF_TOKEN=... \
bash /path/to/scripts/download.shЗапустить модель:
bash /path/to/scripts/run.shЕсли нужен ключ для HTTP API llama-server, его можно задать через env:
API_KEY=my-secret-key bash /path/to/scripts/run.shПри необходимости можно переопределять отдельные переменные уже после загрузки профиля:
source /path/to/scripts/profiles.sh h100
export GPU_VISIBLE_DEVICES=0,1
export SPLIT_MODE=layer
export TENSOR_SPLIT=1,1
bash /path/to/scripts/run.shДоступные профили:
3090v1004090h100h200h100nvl
Профиль загружается так:
source /path/to/scripts/profiles.sh 4090Две GPU, отдать обе в Docker и разделить нагрузку поровну:
source /path/to/scripts/profiles.sh 4090
export GPU_VISIBLE_DEVICES=0,1
export SPLIT_MODE=layer
export MAIN_GPU=0
export TENSOR_SPLIT=1,1
bash /path/to/scripts/run.shЧетыре GPU, немного сместить нагрузку в сторону первой:
source /path/to/scripts/profiles.sh h100
export GPU_VISIBLE_DEVICES=0,1,2,3
export SPLIT_MODE=layer
export MAIN_GPU=0
export TENSOR_SPLIT=3,2,2,1
bash /path/to/scripts/run.shОбраз обычно достаточно собрать один раз под семейство GPU сервера, а дальше можно быстро переключать модели через переменные модели.
profiles.shнужно подключать черезsource, иначе переменные не останутся в текущей shell-сессии.- Если задаёшь
ROOT_DIR,MODEL_DIR,HF_HOME_DIRилиLLAMA_CACHE_DIRвручную, используй абсолютный путь без кавычек-литералов вроде'$HOME/...'. setup.shнужно пересобирать с правильнымCUDA_ARCHITECTURESпод целевой сервер.- Если
GPU_VISIBLE_DEVICESне равенall, в контейнер будут проброшены только выбранные GPU. - Если упираешься в OOM, сначала уменьшай
CTX_SIZEилиBATCH_SIZE. - Для очень больших моделей на нескольких GPU
TENSOR_SPLITобычно нужно подбирать экспериментально.
Есть готовые bundle-скрипты:
bundles/3090-1.sh: подготовка окружения под одну RTX 3090bundles/4090-1.sh: подготовка окружения под одну RTX 4090
Важно: bundle не сохраняет свои export после завершения, потому что запускается через bash, а не через source. После bundles/*.sh запускай run.sh с теми же env-переменными, которые bundle печатает в конце одной готовой командой.
В этом случае можно запустить Qwen только в 4-кванте. Остальные уже не влезут только в GPU.
# Запуск 35b-a3b
export MODEL_FILE=Qwen3.6-35B-A3B-Q4_K_M.gguf
export MODEL_REPO=lmstudio-community/Qwen3.6-35B-A3B-GGUF
export CTX_SIZE=100000
bash scripts/bundles/4090-1.sh
bash scripts/run.sh# Запуск 35b-a3b
export MODEL_FILE=Qwen3.6-27B-Q4_K_M.gguf
export MODEL_REPO=lmstudio-community/Qwen3.6-27B-GGUF
export CTX_SIZE=100000
bash scripts/bundles/4090-1.sh
bash scripts/run.sh