Files
light-heart-labs--dreamserver/ods/docker-compose.amd.yml
T
wehub-resource-sync 9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:33 +08:00

121 lines
5.0 KiB
YAML

# ODS — AMD GPU Overlay (Lemonade inference backend)
# Lemonade provides optimized local AI inference with Vulkan, ROCm, and NPU support.
# ComfyUI GPU config moved to extensions/services/comfyui/compose.amd.yaml
# Use with: docker compose -f docker-compose.base.yml -f docker-compose.amd.yml up -d
services:
llama-server:
# Custom llama.cpp ROCm build + Lemonade server
# Service name stays "llama-server" for compose dependency compatibility
build:
context: ./extensions/services/llama-server
dockerfile: Dockerfile.amd
args:
AMDGPU_TARGET: ${AMDGPU_TARGET:-gfx1151}
LLAMA_CPP_REF: ${LLAMA_CPP_REF:-b8763}
LEMONADE_SERVER_IMAGE: ${LEMONADE_SERVER_IMAGE:-ghcr.io/lemonade-sdk/lemonade-server:v10.2.0}
image: ods-lemonade-server:latest
# Wrapper entrypoint syncs ctx_size from LEMONADE_CTX_SIZE env into
# Lemonade's cached config.json before launch. Without this, Lemonade
# only reads the env on first-start and ignores subsequent bumps —
# leaving e.g. Qwen3.6-35B-A3B (native 256k context) serving at 64k.
# Bind-mounted from the source tree so updating the script doesn't
# require an image rebuild.
entrypoint: ["/bin/sh", "/opt/lemonade-entrypoint.sh"]
command:
- serve
- --port
- "8080"
- --host
- "0.0.0.0"
- --no-tray
- --llamacpp
- auto
- --llamacpp-args
- "--metrics --host 0.0.0.0 -fa on -b 2048 -ub 256"
- --extra-models-dir
- /models
expose:
- "8001"
volumes:
- ./data/models:/models:ro,z
- lemonade-cache:/root/.cache/huggingface
- lemonade-llama:/opt/lemonade/llama
- lemonade-recipe:/root/.cache/lemonade
# Read-only bind of the wrapper entrypoint. Updating ctx-size sync
# logic doesn't require rebuilding the image.
- ./extensions/services/llama-server/lemonade-entrypoint.sh:/opt/lemonade-entrypoint.sh:ro,z
devices:
- /dev/dri:/dev/dri
- /dev/kfd:/dev/kfd
group_add:
- "${VIDEO_GID:-44}"
- "${RENDER_GID:-992}"
environment:
# Empty default — Phase 06 sets HSA_OVERRIDE_GFX_VERSION=11.5.1 only when
# the detected gfx target is gfx1151 (Strix Halo, not in ROCm's native
# support list). On gfx942/MI300X, gfx90a/MI250, gfx1100/RX 7900 and
# other natively-supported parts, this stays empty and HSA reports the
# real ISA. A non-empty default here would crash those hosts with
# HSA_STATUS_ERROR_INVALID_ISA at model-load.
- HSA_OVERRIDE_GFX_VERSION=${HSA_OVERRIDE_GFX_VERSION:-}
- HSA_XNACK=${HSA_XNACK:-1}
- ROCBLAS_USE_HIPBLASLT=${ROCBLAS_USE_HIPBLASLT:-1}
# Lemonade's backend selector accepts auto|vulkan|cpu only; "rocm" is no
# longer a valid value. Setting auto + LEMONADE_LLAMACPP_ROCM_BIN points
# Lemonade at the custom ROCm-built llama-server binary while keeping the
# field schema-valid.
- LEMONADE_LLAMACPP_BACKEND=auto
# Custom binary at /opt/llama-custom is gfx1151-only (Strix Halo patches +
# AMDGPU_TARGET=gfx1151 at build time). Phase 06 sets this env var only
# when the detected gfx target is gfx1151; on any other AMD architecture
# it stays unset and Lemonade uses its bundled ROCm-aware binary.
- LEMONADE_LLAMACPP_ROCM_BIN=${LEMONADE_LLAMACPP_ROCM_BIN:-}
- LEMONADE_CTX_SIZE=${CTX_SIZE:-131072}
healthcheck:
test: ["CMD", "curl", "-sf", "http://127.0.0.1:8080/api/v1/health"]
interval: 15s
timeout: 10s
retries: 10
start_period: 300s # Lemonade first boot builds llama-server binary (~3-5 min)
deploy:
resources:
limits:
cpus: '${LLAMA_CPU_LIMIT:-16.0}'
memory: ${LLAMA_SERVER_MEMORY_LIMIT:-110G}
reservations:
cpus: '${LLAMA_CPU_RESERVATION:-4.0}'
memory: 8G
# Services route through LiteLLM (ODS_MODE=lemonade sets LLM_API_URL=http://litellm:4000).
# LiteLLM handles the /api/v1 translation to Lemonade internally.
# LiteLLM enforces auth via LITELLM_MASTER_KEY=${LITELLM_KEY}; clients must present LITELLM_KEY.
open-webui:
environment:
- OPENAI_API_KEY=${LITELLM_KEY}
- ENABLE_IMAGE_GENERATION=${ENABLE_IMAGE_GENERATION:-true}
dashboard-api:
environment:
- GPU_BACKEND=amd
- LLM_BACKEND=lemonade
- LLM_API_BASE_PATH=/api/v1
- ODS_TALK_HERMES_TIMEOUT=${ODS_TALK_HERMES_TIMEOUT:-900}
- AMD_INFERENCE_RUNTIME=${AMD_INFERENCE_RUNTIME:-lemonade}
- AMD_INFERENCE_BACKEND=${AMD_INFERENCE_BACKEND:-rocm}
- AMD_INFERENCE_LOCATION=${AMD_INFERENCE_LOCATION:-container}
- AMD_INFERENCE_PORT=${AMD_INFERENCE_PORT:-8080}
- AMD_INFERENCE_SUPPORTED_BACKENDS=${AMD_INFERENCE_SUPPORTED_BACKENDS:-rocm}
- AMD_INFERENCE_RUNTIME_MODE=${AMD_INFERENCE_RUNTIME_MODE:-linux-container}
- AMD_INFERENCE_MANAGED=${AMD_INFERENCE_MANAGED:-true}
- LLAMA_METRICS_PORT=8001
volumes:
- /sys/class/drm:/sys/class/drm:ro
- /sys/class/hwmon:/sys/class/hwmon:ro
volumes:
lemonade-cache:
lemonade-llama:
lemonade-recipe: