diff --git a/CMakeLists.txt b/CMakeLists.txt index 2820dee09..6ec587d8a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,7 +131,7 @@ if(CMAKE_HIP_COMPILER) ) install(RUNTIME_DEPENDENCY_SET rocm DIRECTORIES ${HIP_BIN_INSTALL_DIR} ${HIP_LIB_INSTALL_DIR} - PRE_INCLUDE_REGEXES hipblas rocblas amdhip64 rocsolver amd_comgr hsa-runtime64 rocsparse tinfo rocprofiler-register drm drm_amdgpu numa elf + PRE_INCLUDE_REGEXES hipblas rocblas amdhip64 rocsolver roctx64 rocroller amd_comgr hsa-runtime64 rocsparse tinfo rocprofiler-register drm drm_amdgpu numa elf PRE_EXCLUDE_REGEXES ".*" POST_EXCLUDE_REGEXES "system32" RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP diff --git a/CMakePresets.json b/CMakePresets.json index 6fcdf4d25..6c21985ab 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -74,7 +74,16 @@ "cacheVariables": { "CMAKE_HIP_FLAGS": "-parallel-jobs=4", "AMDGPU_TARGETS": "gfx940;gfx941;gfx942;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102;gfx1151;gfx1200;gfx1201;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-", - "OLLAMA_RUNNER_DIR": "rocm" + "OLLAMA_RUNNER_DIR": "rocm_v6" + } + }, + { + "name": "ROCm 7", + "inherits": [ "ROCm" ], + "cacheVariables": { + "CMAKE_HIP_FLAGS": "-parallel-jobs=4", + "AMDGPU_TARGETS": "gfx942;gfx950;gfx1030;gfx1100;gfx1101;gfx1102;gfx1151;gfx1200;gfx1201;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-", + "OLLAMA_RUNNER_DIR": "rocm_v7" } }, { @@ -136,6 +145,11 @@ "inherits": [ "ROCm" ], "configurePreset": "ROCm 6" }, + { + "name": "ROCm 7", + "inherits": [ "ROCm" ], + "configurePreset": "ROCm 7" + }, { "name": "Vulkan", "targets": [ "ggml-vulkan" ], diff --git a/Dockerfile b/Dockerfile index c46cfe08e..47b42c2fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,14 +3,15 @@ ARG FLAVOR=${TARGETARCH} ARG PARALLEL=8 -ARG ROCMVERSION=6.3.3 +ARG ROCM6VERSION=6.4.4 +ARG ROCM7VERSION=7.1.1 ARG JETPACK5VERSION=r35.4.1 ARG JETPACK6VERSION=r36.4.0 ARG CMAKEVERSION=3.31.2 ARG VULKANVERSION=1.4.321.1 # We require gcc v10 minimum. v10.3 has regressions, so the rockylinux 8.5 AppStream has the latest compatible version -FROM --platform=linux/amd64 rocm/dev-almalinux-8:${ROCMVERSION}-complete AS base-amd64 +FROM --platform=linux/amd64 rocm/dev-almalinux-8:${ROCM6VERSION}-complete AS base-amd64 RUN yum install -y yum-utils \ && yum-config-manager --add-repo https://dl.rockylinux.org/vault/rocky/8.5/AppStream/\$basearch/os/ \ && rpm --import https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-8 \ @@ -29,6 +30,15 @@ RUN cp -r /${VULKANVERSION}/x86_64/include/* /usr/local/include/ \ && cp -r /${VULKANVERSION}/x86_64/lib/* /usr/local/lib ENV PATH=/${VULKANVERSION}/x86_64/bin:$PATH +FROM --platform=linux/amd64 rocm/dev-almalinux-8:${ROCM7VERSION}-complete AS base_rocm7-amd64 +RUN yum install -y yum-utils \ + && yum-config-manager --add-repo https://dl.rockylinux.org/vault/rocky/8.5/AppStream/\$basearch/os/ \ + && rpm --import https://dl.rockylinux.org/pub/rocky/RPM-GPG-KEY-Rocky-8 \ + && dnf install -y yum-utils ccache gcc-toolset-10-gcc-10.2.1-8.2.el8 gcc-toolset-10-gcc-c++-10.2.1-8.2.el8 gcc-toolset-10-binutils-2.35-11.el8 \ + && dnf install -y ccache \ + && yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo +ENV PATH=/opt/rh/gcc-toolset-10/root/usr/bin:$PATH + FROM --platform=linux/arm64 almalinux:8 AS base-arm64 # install epel-release for ccache RUN yum install -y yum-utils epel-release \ @@ -41,6 +51,13 @@ ARG CMAKEVERSION RUN curl -fsSL https://github.com/Kitware/CMake/releases/download/v${CMAKEVERSION}/cmake-${CMAKEVERSION}-linux-$(uname -m).tar.gz | tar xz -C /usr/local --strip-components 1 ENV LDFLAGS=-s +FROM base_rocm7-${TARGETARCH} AS base_rocm7 +ARG CMAKEVERSION +RUN curl -fsSL https://github.com/Kitware/CMake/releases/download/v${CMAKEVERSION}/cmake-${CMAKEVERSION}-linux-$(uname -m).tar.gz | tar xz -C /usr/local --strip-components 1 +COPY CMakeLists.txt CMakePresets.json . +COPY ml/backend/ggml/ggml ml/backend/ggml/ggml +ENV LDFLAGS=-s + FROM base AS cpu RUN dnf install -y gcc-toolset-11-gcc gcc-toolset-11-gcc-c++ ENV PATH=/opt/rh/gcc-toolset-11/root/usr/bin:$PATH @@ -101,6 +118,15 @@ RUN --mount=type=cache,target=/root/.ccache \ && cmake --install build --component HIP --strip --parallel ${PARALLEL} RUN rm -f dist/lib/ollama/rocm/rocblas/library/*gfx90[06]* +FROM base_rocm7 AS rocm-7 +ENV PATH=/opt/rocm/hcc/bin:/opt/rocm/hip/bin:/opt/rocm/bin:/opt/rocm/hcc/bin:$PATH +ARG PARALLEL +RUN --mount=type=cache,target=/root/.ccache \ + cmake --preset 'ROCm 7' \ + && cmake --build --parallel ${PARALLEL} --preset 'ROCm 7' \ + && cmake --install build --component HIP --strip --parallel ${PARALLEL} +RUN rm -f dist/lib/ollama/rocm/rocblas/library/*gfx90[06]* + FROM --platform=linux/arm64 nvcr.io/nvidia/l4t-jetpack:${JETPACK5VERSION} AS jetpack-5 ARG CMAKEVERSION RUN apt-get update && apt-get install -y curl ccache \ @@ -131,7 +157,7 @@ COPY ml/backend/ggml/ggml ml/backend/ggml/ggml RUN --mount=type=cache,target=/root/.ccache \ cmake --preset 'Vulkan' \ && cmake --build --parallel --preset 'Vulkan' \ - && cmake --install build --component Vulkan --strip --parallel 8 + && cmake --install build --component Vulkan --strip --parallel 8 FROM base AS build @@ -163,13 +189,16 @@ COPY --from=jetpack-6 dist/lib/ollama/ /lib/ollama/ FROM scratch AS rocm COPY --from=rocm-6 dist/lib/ollama /lib/ollama +COPY --from=rocm-7 dist/lib/ollama /lib/ollama FROM ${FLAVOR} AS archive ARG VULKANVERSION COPY --from=cpu dist/lib/ollama /lib/ollama COPY --from=build /bin/ollama /bin/ollama -FROM ubuntu:24.04 + + +FROM ubuntu:25.10 RUN apt-get update \ && apt-get install -y ca-certificates libvulkan1 \ && apt-get clean \ @@ -177,7 +206,7 @@ RUN apt-get update \ COPY --from=archive /bin /usr/bin ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin COPY --from=archive /lib/ollama /usr/lib/ollama -ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64 +ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/lib/ollama:/usr/lib/ollama/rocm ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility ENV NVIDIA_VISIBLE_DEVICES=all ENV OLLAMA_HOST=0.0.0.0:11434