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
3 changed files with 64 additions and 89 deletions

View File

@@ -1,33 +0,0 @@
FROM debian:13.4
# Install system dependencies for Hermes agent with headless browser automation
# Single RUN layer to minimize image size.
# PR #7 base: curl, poppler-utils, imagemagick for document processing
# New: chromium + xvfb for headless browser automation
# New: fonts for comprehensive Unicode/CJK/emoji coverage
# New: runtime libs required by Chromium
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
poppler-utils \
imagemagick \
chromium \
xvfb \
fonts-noto-color-emoji fonts-unifont fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf fonts-freefont-ttf \
libasound2t64 libatk-bridge2.0-0t64 libatk1.0-0t64 libatspi2.0-0t64 libcairo2 libcups2t64 libdbus-1-3 libdrm2 libgbm1 libglib2.0-0t64 libnspr4 libnss3 libpango-1.0-0 libx11-6 libxcb1 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxkbcommon0 libxrandr2 && \
rm -rf /var/lib/apt/lists/*
# Install uv (Python package manager)
COPY --from=ghcr.io/astral-sh/uv:latest /usr/local/bin/uv /usr/local/bin/uv
RUN uv --version
# Verify all expected tools are available
RUN curl --version && \
pdftotext -v 2>&1 | head -1 && \
pdfinfo -v 2>&1 | head -1 && \
pdftoppm -v 2>&1 | head -1 && \
convert --version | head -1 && \
identify --version | head -1 && \
chromium --version
CMD ["/bin/bash"]

View File

@@ -112,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:
@@ -137,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"]