Features: - Built custom ROCm container for AMD RX 6800 GPU - Added GPU selection toggle in web UI (NVIDIA/AMD) - Unified model names across both GPUs for seamless switching - Vision model always uses NVIDIA GPU (optimal performance) - Text models (llama3.1, darkidol) can use either GPU - Added /gpu-status and /gpu-select API endpoints - Implemented GPU state persistence in memory/gpu_state.json Technical details: - Multi-stage Dockerfile.llamaswap-rocm with ROCm 6.2.4 - llama.cpp compiled with GGML_HIP=ON for gfx1030 (RX 6800) - Proper GPU permissions without root (groups 187/989) - AMD container on port 8091, NVIDIA on port 8090 - Updated bot/utils/llm.py with get_current_gpu_url() and get_vision_gpu_url() - Modified bot/utils/image_handling.py to always use NVIDIA for vision - Enhanced web UI with GPU selector button (blue=NVIDIA, red=AMD) Files modified: - docker-compose.yml (added llama-swap-amd service) - bot/globals.py (added LLAMA_AMD_URL) - bot/api.py (added GPU selection endpoints and helper function) - bot/utils/llm.py (GPU routing for text models) - bot/utils/image_handling.py (GPU routing for vision models) - bot/static/index.html (GPU selector UI) - llama-swap-rocm-config.yaml (unified model names) New files: - Dockerfile.llamaswap-rocm - bot/memory/gpu_state.json - bot/utils/gpu_router.py (load balancing utility) - setup-dual-gpu.sh (setup verification script) - DUAL_GPU_*.md (documentation files)
26 lines
1.0 KiB
YAML
26 lines
1.0 KiB
YAML
# llama-swap configuration for AMD RX 6800 (ROCm)
|
|
# This manages automatic model switching and unloading for the secondary GPU
|
|
# Vision model stays on NVIDIA GPU - AMD only handles text models
|
|
|
|
models:
|
|
# Main text generation model (same name as NVIDIA for uniform switching)
|
|
llama3.1:
|
|
cmd: /app/llama-server --port ${PORT} --model /models/Llama-3.1-8B-Instruct-UD-Q4_K_XL.gguf -ngl 99 -nkvo -c 16384 --host 0.0.0.0 --no-warmup
|
|
ttl: 1800 # Unload after 30 minutes of inactivity (1800 seconds)
|
|
aliases:
|
|
- llama3.1
|
|
- text-model
|
|
|
|
# Evil/Uncensored model (same name as NVIDIA for uniform switching)
|
|
darkidol:
|
|
cmd: /app/llama-server --port ${PORT} --model /models/DarkIdol-Llama-3.1-8B-Instruct-1.3-Uncensored_Q4_K_M.gguf -ngl 99 -nkvo -c 16384 --host 0.0.0.0 --no-warmup
|
|
ttl: 1800 # Unload after 30 minutes of inactivity
|
|
aliases:
|
|
- darkidol
|
|
- evil-model
|
|
- uncensored
|
|
|
|
# Server configuration
|
|
# llama-swap will listen on this address
|
|
# Inside Docker, we bind to 0.0.0.0 to allow bot container to connect
|