Skip to content

Vulkan backend fails with "Unable to find group render" — no device group_add for non-CUDA/ROCm/Intel images #85

Description

@gilvandev

Summary

When manually overriding LLAMA_IMAGE to point at a generic llama.cpp:server-vulkan image on an AMD host, model load fails with:
Internal Server Error ("Unable to find group render: no matching entries in group file")

Switching the same instance back to the ROCm image (server-rocm) loads the model successfully with no changes to host permissions.

Environment

  • Host: TrueNAS SCALE (Docker, not k3s)
  • GPU: 2x AMD RX 9060 XT (RDNA4 / gfx1200), ROCm-capable
  • Host GIDs: render = 107, video = 44 (confirmed via getent group)
  • /dev/dri/renderD128 and renderD129 owned by render group on host
  • llamaMan spawns llama-server as a sibling container over the Docker socket, as documented

What I believe is happening

Per the README, GPU vendor auto-detection (GPU_TYPE) only recognizes cuda, rocm, and intel. There's no first-class vulkan vendor path. On my AMD host, the ROCm device-mapping path is used (attaches /dev/kfd + /dev/dri), but does not group_add the container to video/render — presumably because that's not required for the ROCm runtime itself.

However, the generic Vulkan/RADV image needs the container process to be a member of the render (and typically video) group to open the render node, per llama.cpp's own Docker guidance for AMD/RADV. Since LLAMA_IMAGE can be overridden independently of GPU_TYPE, selecting a Vulkan image while GPU_TYPE resolves to rocm results in a container with the device node mounted but no matching group membership, hence the render group lookup failure inside the container.

I found that manually forcing GPU_TYPE=intel (which does document requiring /dev/dri + video/render group access) works around the issue, since that appears to be the only vendor path that performs group_add. This isn't a real fix though — it repurposes a vendor path with unrelated semantics (e.g. GPU Devices selection is documented as unsupported under Intel Arc) just to get the group mapping.

Reproduction

  1. AMD ROCm host, llamaMan configured normally with GPU_TYPE auto-detected as rocm.
  2. Override LLAMA_IMAGE to a llama.cpp:server-vulkan-style image.
  3. Launch/load any model.
  4. Observe: Internal Server Error ("Unable to find group render: no matching entries in group file").
  5. Revert LLAMA_IMAGE to server-rocm (leave GPU_TYPE untouched) → loads fine.
  6. Workaround: set GPU_TYPE=intel explicitly while keeping the Vulkan LLAMA_IMAGE → loads fine.

Request

Could Vulkan be supported as a proper first-class vendor path (e.g. GPU_TYPE=vulkan) that attaches /dev/dri and performs group_add for video/render (mirroring what's already done for Intel Arc), independent of whether the host GPU is AMD, Intel, or otherwise Vulkan-capable? This would let users on ROCm-unstable setups (e.g. current RDNA4/gfx1200 driver issues) fall back to Vulkan without hijacking the Intel Arc detection path.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions