Hardware¶
Annona is one Python process and one container image, built for linux/arm64
and linux/amd64. What changes from one machine to the next is where the local
model runs and how big it can be. This page is the setup for the machines
people ask about, and what has been checked on each.
What has been checked, and how¶
| Machine | Image | Tests | Run on the hardware |
|---|---|---|---|
| Apple Silicon (M-series) | arm64 builds in CI | suite on macOS CI | yes: qwen2.5:7b, rizzo-pii, the full perimeter |
| NVIDIA DGX Spark (GB10, arm64) | arm64 builds in CI | suite on Linux CI | not yet: no unit available |
| AMD Ryzen AI Max (Strix Halo, x86-64) | amd64 builds in CI, acceptance tests run in it | suite on Linux CI | not yet: no unit available |
| x86-64 + NVIDIA card | amd64, as above | suite on Linux CI | not yet |
"Not yet" is the honest state, not a hedge. The first hour on either box is
make up, annona doctor, then make verify — the acceptance run plants a
canary in a client file and checks that nothing which should stay inside went
out. Until that has run on the machine, the machine is not "supported", it is
"expected to work".
Which model fits¶
annona setup and annona doctor read the machine and name the largest model
of the tested family (qwen2.5) that leaves room to work: a quantised model and
its context should use about 60% of what the GPU can address.
| Memory the GPU can use | Model |
|---|---|
| 96 GB or more | qwen2.5:72b |
| 40 GB or more | qwen2.5:32b |
| 20 GB or more | qwen2.5:14b |
| 10 GB or more | qwen2.5:7b |
| less | qwen2.5:3b |
On Apple Silicon, the DGX Spark and Ryzen AI Max the GPU addresses system memory, so this is the machine's RAM. On a discrete NVIDIA card it is the card's.
annona doctor
✓ machine NVIDIA Grace … · NVIDIA GB10 (DGX Spark) · CUDA · unified memory · 128 GB · fits qwen2.5:72b
NVIDIA DGX Spark¶
Grace Blackwell (GB10): arm64 CPU and a Blackwell GPU on 128 GB of unified memory, running DGX OS (Ubuntu). DGX OS ships the NVIDIA driver and the Container Toolkit, so the GPU reaches containers without extra setup.
git clone https://github.com/akaion-ai/annona && cd annona
make up # detects nvidia-smi → docker-compose.nvidia.yml
docker compose exec annona annona doctor
docker compose exec ollama ollama pull qwen2.5:72b
docker compose exec annona annona setup --yes --endpoint http://ollama:11434 --model qwen2.5:72b
make verify
Without Docker, deploy/annona.service is the systemd unit, and Ollama's own
installer detects arm64 and CUDA.
The failure to look for is a model that answers from the CPU: a container
started without the NVIDIA overlay, or a runtime that did not find CUDA. Every
answer still comes back, many times slower, and nothing errors. annona doctor
reports it as gpu local-gpu: … loaded on the CPU, not the GPU, read from what
Ollama says it holds in GPU memory.
AMD Ryzen AI Max (Strix Halo)¶
Ryzen AI Max+ 395 and siblings: x86-64 cores and a Radeon iGPU (gfx1151) on up to 128 GB of unified memory — the YO2 395 is one of these.
Two backends reach this GPU, and which one is faster depends on the model and
the driver release; reports from people running it disagree. Start with the
default and let doctor decide:
| Backend | How | Notes |
|---|---|---|
| ROCm | default: ollama/ollama:rocm |
needs a ROCm release that knows gfx1151 |
| Vulkan | OLLAMA_AMD_IMAGE=ollama/ollama:latest OLLAMA_VULKAN=1 make up |
needs Mesa's RADV driver on the host; often the simpler path on this chip |
Memory the GPU may use. On Linux the iGPU sees what the firmware sets aside
for it plus what the kernel lets it map. If doctor reports far less than the
machine has, raise the GPU memory in the firmware (UMA size) or the kernel's
GTT limit, as your distribution documents, before pulling a 72b.
Apple Silicon¶
Native, not in a container: Docker on macOS has no Metal, so a model in a
container runs on the CPU. Install Ollama for macOS and Annona with pip, or
use the desktop app.
Any other machine¶
docker compose up -d (no overlay) runs everywhere, the model on the CPU. It is
the right first step on unfamiliar hardware: prove the perimeter, then add the
overlay that gives the model its GPU.