bitsandbytes peak RAM ~54GB (bf16 load before quantize) — kills 40GB OptiPlex. llama.cpp Q4_K_M GGUF loads pre-quantized: peak RAM ~15.5GB, fits cleanly. Changes: - serve.yml: build llama.cpp with CUDA, download Q4_K_M GGUF from bartowski, disable vllm-serve, deploy llama-server.service - llama-server.service.j2: OpenAI-compatible server on same port 8000, --n-gpu-layers 99 (full GPU offload), --parallel 4, gemma chat template - defaults: llm_gguf_dir, llm_gguf_path, llm_gpu_layers, llm_parallel_slots - handlers: restart llama-server, vllm-serve failed_when=false (may not exist) GGUF: bartowski/gemma-2-27b-it-Q4_K_M.gguf (15.5GB, 24GB VRAM fits w/ ~8GB headroom)
37 lines
1.2 KiB
YAML
37 lines
1.2 KiB
YAML
---
|
|
# ------------------------------------------------------------------------------
|
|
# FILE: roles/llm-inference/defaults/main.yml
|
|
# DESCRIPTION: Overridable defaults for the llm-inference role.
|
|
# Deploy target: astro-orbiter (Dell OptiPlex 7050 SFF, RTX 3090
|
|
# via OCuLink, Ubuntu 24.04.4 LTS).
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# NVIDIA driver
|
|
llm_nvidia_driver_package: nvidia-driver-595-open
|
|
|
|
# Python venv
|
|
llm_venv_path: /home/jarvis/vllm-env
|
|
llm_venv_owner: jarvis
|
|
|
|
# HuggingFace
|
|
llm_hf_cache_dir: /home/jarvis/.cache/huggingface
|
|
llm_hf_model: google/gemma-2-27b-it
|
|
|
|
# vLLM serve (deprecated — replaced by llama-server)
|
|
# llama-server serve
|
|
llm_serve_port: 8000
|
|
llm_serve_host: "0.0.0.0"
|
|
llm_max_model_len: 8192
|
|
llm_gpu_layers: 99 # offload all layers to GPU
|
|
llm_parallel_slots: 4 # concurrent request slots
|
|
llm_gguf_dir: /home/jarvis/models
|
|
llm_gguf_path: /home/jarvis/models/gemma-2-27b-it-Q4_K_M.gguf
|
|
|
|
# Legacy vLLM vars (kept for role documentation, not used by llama-server)
|
|
llm_quantization: "bitsandbytes"
|
|
llm_gpu_memory_utilization: "0.92"
|
|
|
|
# Monitoring
|
|
llm_gpu_exporter_version: "1.13.1"
|
|
llm_gpu_exporter_port: 9835
|