Compare commits

..

1 Commits

Author SHA1 Message Date
3c92d93366 feat: add llama-cpp-hermes service with ROCm 6.1 + gfx906 support
Some checks failed
Build Hermes agent / build (pull_request) Has been cancelled
Build ollama (gfx906) / build (pull_request) Has been cancelled
- Add custom llama.cpp Dockerfile with ROCm 6.1 + gfx906 (MI50) build
- Add llama-cpp-hermes service serving Hermes 4.3 on dual MI50 GPUs
- Strip GPU devices/ROCm env from ollama service (CPU-only for embeddings)

Hermes 4.3 runs at ~19 t/s on dual MI50s with 160K context.
2026-06-11 11:41:42 -04:00
2 changed files with 64 additions and 66 deletions

View File

@@ -52,10 +52,6 @@ services:
- ROCR_VISIBLE_DEVICES=0,1 - ROCR_VISIBLE_DEVICES=0,1
- HSA_ENABLE_SDMA=0 - HSA_ENABLE_SDMA=0
- TZ=America/Montreal - TZ=America/Montreal
# Hermes Workspace dashboard (port 9119) — enables multi-agent web UI
- HERMES_DASHBOARD=1
- HERMES_DASHBOARD_HOST=0.0.0.0
- HERMES_DASHBOARD_PORT=9119
volumes: volumes:
- /mnt/HoardingCow_docker_data/Hermes/data:/opt/data - /mnt/HoardingCow_docker_data/Hermes/data:/opt/data
# Syncthing-shared org files — read-only view of user's agenda # Syncthing-shared org files — read-only view of user's agenda
@@ -70,12 +66,6 @@ services:
- "26" - "26"
networks: networks:
- ai_backend - ai_backend
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://localhost:8642/health && curl -fsS http://localhost:9119/api/status || exit 1"]
interval: 15s
timeout: 5s
retries: 5
start_period: 60s
syncthing: syncthing:
image: syncthing/syncthing:latest image: syncthing/syncthing:latest
@@ -122,22 +112,7 @@ services:
- /mnt/HoardingCow_docker_data/Ollama/ollama:/root/.ollama - /mnt/HoardingCow_docker_data/Ollama/ollama:/root/.ollama
environment: environment:
- OLLAMA_VULKAN=0 - OLLAMA_VULKAN=0
- HSA_OVERRIDE_GFX_VERSION=9.0.6
- HCC_AMDGPU_TARGET=gfx906
- HIP_VISIBLE_DEVICES=0,1
- ROCR_VISIBLE_DEVICES=0,1
- HSA_ENABLE_SDMA=0
- OLLAMA_HOST=0.0.0.0 - OLLAMA_HOST=0.0.0.0
- OLLAMA_DEBUG=1
- OLLAMA_FLASH_ATTENTION=1
- OLLAMA_NUM_PARALLEL=2
devices:
# Map the render nodes and KFD for ROCm to work inside the container
- /dev/kfd:/dev/kfd
- /dev/dri:/dev/dri
group_add:
- "303"
- "26"
networks: networks:
ai_net: ai_net:
@@ -147,47 +122,40 @@ networks:
driver: bridge driver: bridge
name: ai_backend name: ai_backend
# llama_cpp_devstral: llama-cpp-hermes:
# image: ghcr.io/ggml-org/llama.cpp:server-rocm image: llama-cpp:rocm-gfx906
# container_name: llama_cpp_devstral container_name: llama-cpp-hermes
# restart: unless-stopped restart: unless-stopped
# networks: networks:
# - ai_backend - ai_backend
# ports: ports:
# - "8300:8080" - "127.0.0.1:8300:8080"
# ipc: host ipc: host
# devices: devices:
# - "/dev/kfd:/dev/kfd" - /dev/kfd:/dev/kfd
# - "/dev/dri:/dev/dri" - /dev/dri:/dev/dri
# group_add: group_add:
# - "303" # video - "303"
# - "26" # render - "26"
# environment: environment:
# HSA_OVERRIDE_GFX_VERSION: 9.0.6 - HSA_OVERRIDE_GFX_VERSION=9.0.6
# HIP_VISIBLE_DEVICES: 0,1 - HSA_ENABLE_SDMA=0
# LLAMA_CACHE: /models - HIP_VISIBLE_DEVICES=0,1
# volumes: - LLAMA_CACHE=/models
# - /mnt/HoardingCow_docker_data/Llama_cpp/models:/models volumes:
# - /mnt/HoardingCow_docker_data/Llama_cpp/devstral-agent.jinja:/template.jinja - /mnt/HoardingCow_docker_data/Llama_cpp/models:/models
# command: > - /mnt/HoardingCow_docker_data/Ollama/ollama/models/blobs/sha256-17823599694fa3503ef54bf748d5078c6ce881f4d01616cafa255dc05d215a08:/model.gguf:ro
# -hf unsloth/Devstral-Small-2-24B-Instruct-2512-GGUF:Devstral-Small-2-24B-Instruct-2512-Q8_0.gguf command: >
# -a devstral-2-small-llama_cpp -m /model.gguf
# --chat-template-file /template.jinja --host 0.0.0.0
# --host 0.0.0.0 --port 8080
# --port 8080 --gpu-layers 99
# --n-gpu-layers 99 --ctx-size 163840
# --ctx-size 163840 -ctk f16 -ctv f16
# --batch-size 4096 --flash-attn on
# --ubatch-size 4096 --split-mode layer
# --cache-type-k f16 --no-mmap
# --cache-type-v f16 --n-predict -1
# --cache-reuse 256
# --flash-attn on
# --context-shift
# --split-mode layer
# --no-mmap
# --n-predict -1
# --parallel 2
# vllm: # vllm:
# image: nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3 # image: nalanzeyu/vllm-gfx906:v0.9.0-rocm6.3

30
ai/llama-cpp/Dockerfile Normal file
View File

@@ -0,0 +1,30 @@
# llama-cpp-rocm6/Dockerfile
# Custom llama.cpp server with ROCm 6.1 + gfx906 (MI50) support.
# Build: docker build -t llama-cpp:rocm-gfx906 .
FROM rocm/dev-ubuntu-22.04:6.1.2-complete AS builder
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y curl git build-essential pkg-config cmake make && rm -rf /var/lib/apt/lists/*
ARG LLAMACPP_VERSION=b9596
RUN git clone --depth 1 --branch ${LLAMACPP_VERSION} https://github.com/ggml-org/llama.cpp.git /build
WORKDIR /build
ENV HIP_PATH=/opt/rocm ROCM_PATH=/opt/rocm PATH=/opt/rocm/bin:/opt/rocm/llvm/bin:${PATH} CMAKE_PREFIX_PATH=/opt/rocm
RUN mkdir build && cd build && \
cmake .. -DGGML_HIP=ON -DCMAKE_BUILD_TYPE=Release \
-DAMDGPU_TARGETS="gfx906:xnack-" \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DGGML_CUDA=OFF -DGGML_VULKAN=OFF -DGGML_METAL=OFF \
-DBUILD_SHARED_LIBS=OFF && \
cmake --build . --target llama-server -- -j $(nproc)
FROM ubuntu:24.04
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
ca-certificates curl libstdc++6 libgomp1 libopenblas0 \
libnuma1 libelf1 libdrm2 libdrm-amdgpu1 \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /opt/rocm/lib/ /opt/rocm/lib/
COPY --from=builder /opt/rocm/share/ /opt/rocm/share/
COPY --from=builder /build/build/bin/llama-server /usr/local/bin/llama-server
RUN echo /opt/rocm/lib > /etc/ld.so.conf.d/rocm.conf && ldconfig
ENV HSA_OVERRIDE_GFX_VERSION=9.0.6 HCC_AMDGPU_TARGET=gfx906 HSA_ENABLE_SDMA=0
EXPOSE 8080
ENTRYPOINT ["/usr/local/bin/llama-server"]