LLAMA_CTX_SIZE default 65536 -> 131072: real usage was burning through 64K fast. ~25.6GB VRAM (17.6GB weights + ~8GB KV cache) on the 32GB R9700, ~6GB headroom — see docs/research/qwen3.8-27b-quant.md for the full table. Also documents LLAMA_GPU_LAYERS as the RAM-offload knob for this dense model (no separate RAM-offload flag exists in llama.cpp, and --n-cpu-moe/ --cpu-moe/--override-tensor "exps" are MoE-only, no-ops here), and that there's no explicit SSD offload tier to enable — llama.cpp's default mmap already falls back to disk implicitly if GPU+RAM run out. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FCAUsjGNSoJTtK8hyLKg5m
78 lines
3.9 KiB
Bash
78 lines
3.9 KiB
Bash
# Copy to .env and adjust — or just run ./scripts/update.sh, which creates
|
|
# .env from this file and fills in every secret/key below it can generate
|
|
# itself (see each var's comment). All values below are defaults baked into
|
|
# docker-compose.yml — only uncomment/change what you actually want to
|
|
# override.
|
|
|
|
# --- llama.cpp / model ---
|
|
LLAMA_MODEL_FILE=Qwen3.8-27B-UD-Q4_K_XL.gguf
|
|
# 999 = every layer on GPU (this model is dense, not MoE, and already fits
|
|
# fully in 32GB VRAM — see docs/research/qwen3.8-27b-quant.md). Lower this
|
|
# to leave that many fewer layers on GPU and push the rest to CPU/system RAM
|
|
# if something else is contending for VRAM — llama.cpp has no separate
|
|
# "RAM offload" flag, --n-gpu-layers *is* the RAM-offload knob for a dense
|
|
# model. Don't reach for --n-cpu-moe/--cpu-moe/--override-tensor "exps" —
|
|
# those target Mixture-of-Experts models (e.g. Qwen3.8-2.4T-A95B), not this
|
|
# one, and are no-ops here.
|
|
# There's no separate "then SSD" tier to enable either: llama.cpp mmaps the
|
|
# model file by default (no --no-mmap here), so if GPU+RAM ever can't hold
|
|
# the working set, the OS pages the rest in from disk automatically — an
|
|
# implicit, slow last resort, not a config knob. An explicit tiered SSD
|
|
# offload has been an open llama.cpp feature request since 2025 (still
|
|
# unimplemented): https://github.com/ggml-org/llama.cpp/discussions/12507
|
|
LLAMA_GPU_LAYERS=999
|
|
# 131072 (128K): ~25.6GB (17.6GB weights + ~8GB KV cache) on the 32GB
|
|
# R9700, ~6GB headroom — see docs/research/qwen3.8-27b-quant.md for the full
|
|
# table (64K only used ~19.6GB/~12GB headroom, but real usage was burning
|
|
# through 64K fast). If headroom gets tight, quantize the KV cache instead
|
|
# of dropping context: --cache-type-k/v q8_0 roughly halves it.
|
|
LLAMA_CTX_SIZE=131072
|
|
|
|
# --- Open WebUI ---
|
|
WEBUI_PORT=8008
|
|
# Minted automatically by ./scripts/update.sh — leave blank. Manual fallback:
|
|
# docs/proxy-key-onboarding.md.
|
|
OPENWEBUI_LITELLM_KEY=
|
|
|
|
# --- Lazytainer ---
|
|
# Seconds of inactivity before llama-server is stopped. 900 = 15 min.
|
|
LAZYTAINER_INACTIVE_TIMEOUT=900
|
|
|
|
# --- Embedding model (knowledgebase, see docs/memory-knowledgebase.md) ---
|
|
EMBEDDING_MODEL_FILE=nomic-embed-text-v1.5.Q8_0.gguf
|
|
|
|
# --- SearXNG web search (see docs/research/litellm-searxng-search.md) ---
|
|
# Resolved automatically by ./scripts/update.sh from search.home on this
|
|
# host — leave blank. Only set by hand if that resolution fails (e.g.
|
|
# search.home isn't a static DHCP reservation and its IP drifted).
|
|
SEARXNG_LAN_IP=
|
|
|
|
# --- LiteLLM proxy (see docs/proxy-key-onboarding.md, docs/network-access.md) ---
|
|
LITELLM_PORT=4000
|
|
# Random values, filled in automatically by ./scripts/update.sh — leave
|
|
# blank. LITELLM_SALT_KEY encrypts stored data; do not change it after the
|
|
# first run (existing encrypted data becomes unreadable if you do).
|
|
LITELLM_MASTER_KEY=
|
|
LITELLM_SALT_KEY=
|
|
LITELLM_DB_PASSWORD=
|
|
# Backs litellm's router state/rate-limits/budgets/cache invalidation
|
|
# (the redis service). Random value, filled in automatically — leave blank.
|
|
REDIS_PASSWORD=
|
|
# Admin UI login (https://<proxy>/ui). Without these, LiteLLM falls back to
|
|
# username "admin" / password = LITELLM_MASTER_KEY — set these instead so the
|
|
# master key never has to be typed into the browser. UI_PASSWORD is filled
|
|
# in automatically by ./scripts/update.sh if blank.
|
|
UI_USERNAME=admin
|
|
UI_PASSWORD=
|
|
|
|
# --- Knowledgebase (pgvector + litellm-pgvector, see docs/memory-knowledgebase.md) ---
|
|
# Random value, filled in automatically by ./scripts/update.sh — leave blank.
|
|
PGVECTOR_DB_PASSWORD=
|
|
# Auth key litellm-pgvector requires on its own API (its SERVER_API_KEY).
|
|
# Random value, filled in automatically by ./scripts/update.sh — leave blank.
|
|
LITELLM_PGVECTOR_API_KEY=
|
|
# A virtual key litellm-pgvector uses to call back into litellm for
|
|
# embeddings. Minted automatically by ./scripts/update.sh — leave blank.
|
|
# Manual fallback: docs/proxy-key-onboarding.md.
|
|
LITELLM_PGVECTOR_EMBEDDING_KEY=
|