# GPU overlay: parakeet.cpp on Vulkan instead of CPU whisper.cpp. # # docker compose -f docker-compose.yml -f docker-compose.vulkan.yml up -d --build # # Vulkan, not a vendor SDK, so one image covers AMD (RADV), Intel (ANV) and # NVIDIA. On AMD this is the only GPU path that works at all — ROCm is not # packaged here and CUDA is NVIDIA-only. # # What the host needs: a working Vulkan driver and a render node at /dev/dri. # Check before you build — it takes a second and saves a long compile: # # ls /dev/dri # renderD128, card0, … # vulkaninfo --summary | head # names your GPU # # Then confirm the CONTAINER sees it (the image ships vulkan-tools for exactly # this, and the entrypoint prints a line about it on every boot): # # docker compose -f docker-compose.yml -f docker-compose.vulkan.yml \ # exec editor vulkaninfo --summary | head -20 # # If /dev/dri is missing inside, parakeet quietly runs on the CPU — correct # output, an order of magnitude slower, and nothing says so except that boot # line. That is the failure mode to watch for. # # Model: the first boot fetches a parakeet GGUF into the models volume # (ARCHILYZER_FETCH_MODEL, default tdt_ctc-110m-q8_0 — small and quick). The # whole family is at https://huggingface.co/mudler/parakeet-cpp-gguf; the bigger # tdt-0.6b-v3 and tdt_ctc-1.1b models are better and slower. # # The image also carries CPU whisper-cli, so you can add a whisper worker on the # Workers page to compare without rebuilding anything. services: editor: build: target: runtime-vulkan args: # The Vulkan stack needs a newer Debian than the default image runs on; # the Dockerfile explains why, and why the workspace is still BUILT on # the older one. RUNTIME_IMAGE: node:22-trixie-slim image: archilyzer:${ARCHILYZER_TAG:-local}-vulkan devices: # The render node. This is the whole GPU passthrough — no toolkit, no # runtime shim, no privileged mode. The container runs as root, so the # host's ownership of renderD128 (usually root:render) needs no group # mapping on top. - /dev/dri:/dev/dri # To pin which device parakeet uses, put PARAKEET_DEVICE in .env — every # service already reads that file. "Vulkan0"/"Vulkan1" select a specific GPU # (`vulkaninfo --summary` lists them in order); "cpu" takes the GPU out of # the picture with everything else identical, which is the honest way to # measure what the GPU is buying you. Unset — the default — lets # parakeet.cpp choose. # The other three run the same image so `up` never builds a second variant # behind your back. None of them touches the GPU. site: build: target: runtime-vulkan args: RUNTIME_IMAGE: node:22-trixie-slim image: archilyzer:${ARCHILYZER_TAG:-local}-vulkan homepage: build: target: runtime-vulkan args: RUNTIME_IMAGE: node:22-trixie-slim image: archilyzer:${ARCHILYZER_TAG:-local}-vulkan umtool: build: target: runtime-vulkan args: RUNTIME_IMAGE: node:22-trixie-slim image: archilyzer:${ARCHILYZER_TAG:-local}-vulkan