docker: add NVIDIA/AMD GPU overlays via COMPOSE_FILE (#254)

Opt-in overlays under docker/ that pass the host GPU into the odysseus
container. Pick one in .env:

  COMPOSE_FILE=docker-compose.yml:docker/gpu.nvidia.yml
  COMPOSE_FILE=docker-compose.yml:docker/gpu.amd.yml

Non-GPU users are unaffected (no default merge). README now points at
the overlays instead of the old ad-hoc `gpus: all` suggestion.

Each overlay header notes that it only exposes the GPU devices — the
slim image still needs vLLM / llama-cpp-python / etc. installed via
Cookbook -> Dependencies before models can serve on GPU.

Tested on Arch + Docker 29.5.1 + RTX 4090:
  docker compose exec odysseus nvidia-smi -L
  GPU 0: NVIDIA GeForce RTX 4090 (UUID: GPU-...)
Cookbook hardware scan reports the 24 GB GPU and recommends GPU-fit
models. `docker compose config` validates cleanly for all three
COMPOSE_FILE variants (base, +nvidia, +amd).

Builds on the structure proposed in #91 by @krllus with the path /
docs fixes from the review on that PR.

Closes #163.

Co-authored-by: krllus <krllus@users.noreply.github.com>
This commit is contained in:
Sirsyorrz
2026-06-01 15:00:09 +10:00
committed by GitHub
parent 2537b80f88
commit 4c0aadbb5e
4 changed files with 78 additions and 3 deletions

View File

@@ -73,9 +73,18 @@ serve engines and Python CLIs are stored in `./data/local`, mounted as
After downloading a model, open **Cookbook -> Serve**, pick the cached model,
and launch it. When the server answers `/v1/models`, Odysseus adds it to the
chat model picker automatically. For NVIDIA GPUs in Docker, install the NVIDIA
Container Toolkit and add `gpus: all` to the `odysseus` service if `nvidia-smi`
is not visible inside the container.
chat model picker automatically. For NVIDIA / AMD GPUs in Docker, install
the host runtime (NVIDIA Container Toolkit or ROCm drivers) and enable the
matching overlay via `COMPOSE_FILE` in `.env`:
```bash
# NVIDIA
COMPOSE_FILE=docker-compose.yml:docker/gpu.nvidia.yml
# AMD ROCm
COMPOSE_FILE=docker-compose.yml:docker/gpu.amd.yml
```
Verify with `docker compose exec odysseus nvidia-smi -L` (or `rocm-smi`).
The default Docker image is intentionally slim. For Python-based serve engines,
use **Cookbook -> Dependencies** to install vLLM, SGLang, llama-cpp-python, or