Files
llama-space/podman-llama.sh
T

74 lines
2.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Эквивалент docker-compose.yml для Podman: один запуск — один контейнер llama-server.
# Требования: Podman, драйвер NVIDIA, NVIDIA Container Toolkit с CDI для Podman
# (обычно: nvidia-ctk cdi generate --output=/etc/cdi/nvidia.yaml && перезапуск).
# GPU по умолчанию: --device nvidia.com/gpu=all
# Если не подходит: export PODMAN_GPU_FLAGS='--gpus all' (Podman 4.3+) или см. доку toolkit.
#
# Из каталога репозитория: ./podman-llama.sh
# Переменные — как в compose / .env: PORT, MODEL_FILE, CPU_MOE, N_CPU_MOE, CTX_SIZE,
# CACHE_TYPE_K, CACHE_TYPE_V, THREADS; образ: IMAGE (по умолчанию server-cuda).
# Порт на хосте: только IPv4 (BIND_HOST по умолчанию 0.0.0.0), иначе Podman часто вешает [::].
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$ROOT"
if [[ -f .env ]]; then
set -a
# shellcheck disable=SC1091
source .env
set +a
fi
: "${PORT:=8080}"
: "${MODEL_FILE:=model.gguf}"
: "${CPU_MOE:=0}"
: "${N_CPU_MOE:=99}"
: "${CTX_SIZE:=50000}"
: "${CACHE_TYPE_K:=q8_0}"
: "${CACHE_TYPE_V:=turbo2}"
: "${THREADS:=8}"
: "${IMAGE:=ghcr.io/ggml-org/llama.cpp:server-cuda13}"
: "${BIND_HOST:=0.0.0.0}"
# Разбить по пробелам для podman (пусто = только CDI-устройство).
# Пример: PODMAN_GPU_FLAGS='--gpus all'
read -r -a PODMAN_GPU_FLAGS_ARR <<<"${PODMAN_GPU_FLAGS:---device nvidia.com/gpu=all}"
podman run -d \
--name llama-server \
--replace \
--restart no \
--shm-size 1g \
--cpuset-cpus="0-11" \
--ulimit memlock=-1:-1 \
-p "${BIND_HOST}:${PORT}:8080" \
-v "${ROOT}/models:/models:ro" \
-e NVIDIA_VISIBLE_DEVICES=all \
-e "LLAMA_ARG_CPU_MOE=${CPU_MOE}" \
"${PODMAN_GPU_FLAGS_ARR[@]}" \
"$IMAGE" \
-m "/models/${MODEL_FILE}" \
--host 0.0.0.0 \
--port 8080 \
-ngl "${N_GPU_LAYERS}" \
--n-cpu-moe "${N_CPU_MOE}" \
--spec-type draft-mtp --spec-draft-n-max 3 \
-c "${CTX_SIZE}" \
-np 1 \
-fa on \
--cache-type-k "${CACHE_TYPE_K}" \
--cache-type-v "${CACHE_TYPE_V}" \
--no-mmap \
--mlock \
--ctx-checkpoints 1 \
--cache-ram -1 \
--jinja \
--reasoning on \
--reasoning-budget -1 \
-b 2048 \
-ub 2048 \
--threads "${THREADS}"