diff --git a/ai/compose.yml b/ai/compose.yml index b8590dc..e5d9c4b 100644 --- a/ai/compose.yml +++ b/ai/compose.yml @@ -58,7 +58,10 @@ services: - ai_backend ollama: - image: ollama/ollama:latest + build: + context: ./ollama + dockerfile: Dockerfile + image: ollama/ollama:rocm-gfx906 container_name: ollama privileged: true tty: true diff --git a/ai/ollama/Dockerfile b/ai/ollama/Dockerfile new file mode 100644 index 0000000..aca5f3a --- /dev/null +++ b/ai/ollama/Dockerfile @@ -0,0 +1,57 @@ +# ollama-gfx906/Dockerfile +# +# Custom ollama image with ROCm 6.1 + gfx906 (MI50) support. +# The default ollama/rocm image ships ROCm 7.2 which dropped gfx906 support. +# This builds ollama from source targeting AMDGPU_TARGETS=gfx906. +# +# Build: docker build -t ollama/ollama: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 \ + git golang cmake build-essential pkg-config \ + && rm -rf /var/lib/apt/lists/* + +ARG OLLAMA_VERSION=v0.13.5 +RUN git clone --depth 1 --branch ${OLLAMA_VERSION} https://github.com/ollama/ollama.git /build +WORKDIR /build + +ENV HIP_PATH=/opt/rocm +ENV ROCM_PATH=/opt/rocm +ENV PATH=/opt/rocm/bin:/opt/rocm/hip/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +RUN cd llama.cpp && \ + mkdir build && cd build && \ + cmake .. \ + -DLLAMA_HIPBLAS=ON \ + -DCMAKE_C_COMPILER=clang \ + -DCMAKE_CXX_COMPILER=clang++ \ + -DAMDGPU_TARGETS=gfx906 \ + -DCMAKE_BUILD_TYPE=Release \ + -DLLAMA_NATIVE=OFF \ + -DLLAMA_BUILD_TESTS=OFF \ + -DLLAMA_BUILD_EXAMPLES=OFF \ + -DLLAMA_BUILD_SERVER=OFF && \ + cmake --build . --config Release -j$(nproc) && \ + cmake --install . --prefix /build/dist + +ENV CGO_ENABLED=0 +RUN go build -trimpath -o dist/ollama . + +FROM ubuntu:22.04 + +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ + ca-certificates curl libstdc++6 libgomp1 \ + && 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/dist/ollama /usr/bin/ollama +COPY --from=builder /build/dist/lib/ /usr/lib/ollama/ + +RUN ldconfig + +ENV LD_LIBRARY_PATH=/opt/rocm/lib:/usr/lib/ollama +ENV HSA_OVERRIDE_GFX_VERSION=9.0.6 + +EXPOSE 11434 +CMD ["serve"]