diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0aa7d53d..33ce2007 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -237,13 +237,13 @@ jobs: include: - os: linux arch: amd64 - target: archive + target: archive_novulkan - os: linux arch: amd64 target: rocm - os: linux arch: arm64 - target: archive + target: archive_novulkan runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }} environment: release needs: setup-environment @@ -299,12 +299,14 @@ jobs: include: - os: linux arch: arm64 + target: novulkan build-args: | CGO_CFLAGS CGO_CXXFLAGS GOFLAGS - os: linux arch: amd64 + target: novulkan build-args: | CGO_CFLAGS CGO_CXXFLAGS @@ -317,6 +319,14 @@ jobs: CGO_CXXFLAGS GOFLAGS FLAVOR=rocm + - os: linux + arch: amd64 + suffix: '-vulkan' + target: default + build-args: | + CGO_CFLAGS + CGO_CXXFLAGS + GOFLAGS runs-on: ${{ matrix.arch == 'arm64' && format('{0}-{1}', matrix.os, matrix.arch) || matrix.os }} environment: release needs: setup-environment @@ -334,6 +344,7 @@ jobs: with: context: . platforms: ${{ matrix.os }}/${{ matrix.arch }} + target: ${{ matrix.target }} build-args: ${{ matrix.build-args }} outputs: type=image,name=${{ vars.DOCKER_REPO }},push-by-digest=true,name-canonical=true,push=true cache-from: type=registry,ref=${{ vars.DOCKER_REPO }}:latest diff --git a/Dockerfile b/Dockerfile index 63b671fe..dbc9207e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -159,7 +159,32 @@ ARG VULKANVERSION COPY --from=cpu dist/lib/ollama /lib/ollama COPY --from=build /bin/ollama /bin/ollama -FROM ubuntu:24.04 +# Temporary opt-out stages for Vulkan +FROM --platform=linux/amd64 scratch AS amd64_novulkan +# COPY --from=cuda-11 dist/lib/ollama/ /lib/ollama/ +COPY --from=cuda-12 dist/lib/ollama /lib/ollama/ +COPY --from=cuda-13 dist/lib/ollama /lib/ollama/ +FROM arm64 AS arm64_novulkan +FROM ${FLAVOR}_novulkan AS archive_novulkan +COPY --from=cpu dist/lib/ollama /lib/ollama +COPY --from=build /bin/ollama /bin/ollama +FROM ubuntu:24.04 AS novulkan +RUN apt-get update \ + && apt-get install -y ca-certificates \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +COPY --from=archive_novulkan /bin /usr/bin +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +COPY --from=archive_novulkan /lib/ollama /usr/lib/ollama +ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility +ENV NVIDIA_VISIBLE_DEVICES=all +ENV OLLAMA_HOST=0.0.0.0:11434 +EXPOSE 11434 +ENTRYPOINT ["/bin/ollama"] +CMD ["serve"] + +FROM ubuntu:24.04 AS default RUN apt-get update \ && apt-get install -y ca-certificates libvulkan1 \ && apt-get clean \ diff --git a/scripts/build_linux.sh b/scripts/build_linux.sh index 618722d1..8287c11c 100755 --- a/scripts/build_linux.sh +++ b/scripts/build_linux.sh @@ -13,12 +13,13 @@ set -eu . $(dirname $0)/env.sh mkdir -p dist +NOVULKAN=${NOVULKAN:-""} docker buildx build \ --output type=local,dest=./dist/ \ --platform=${PLATFORM} \ ${OLLAMA_COMMON_BUILD_ARGS} \ - --target archive \ + --target archive${NOVULKAN} \ -f Dockerfile \ .