8da7bef05f
In some cases we may want multiple variants for a given GPU type or CPU. This adds logic to have an optional Variant which we can use to select an optimal library, but also allows us to try multiple variants in case some fail to load. This can be useful for scenarios such as ROCm v5 vs v6 incompatibility or potentially CPU features.
117 lines
4.3 KiB
Text
117 lines
4.3 KiB
Text
ARG GOLANG_VERSION=1.21.3
|
|
ARG CMAKE_VERSION=3.22.1
|
|
ARG CUDA_VERSION=11.3.1
|
|
|
|
FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-centos7 AS cuda-build-amd64
|
|
|
|
ARG CMAKE_VERSION
|
|
|
|
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
|
|
&& yum update -y \
|
|
&& yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
|
|
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
|
|
|
|
ADD https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-x86_64.tar.gz /tmp/cmake-$CMAKE_VERSION.tar.gz
|
|
RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
|
|
|
|
WORKDIR /go/src/github.com/jmorganca/ollama
|
|
COPY .git .git
|
|
COPY .gitmodules .gitmodules
|
|
COPY llm llm
|
|
|
|
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
|
|
RUN sh gen_linux.sh
|
|
|
|
FROM --platform=linux/arm64 nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 AS cuda-build-arm64
|
|
|
|
ARG CMAKE_VERSION
|
|
|
|
RUN dnf install -y git cmake
|
|
|
|
WORKDIR /go/src/github.com/jmorganca/ollama
|
|
COPY .git .git
|
|
COPY .gitmodules .gitmodules
|
|
COPY llm llm
|
|
|
|
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
|
|
RUN sh gen_linux.sh
|
|
|
|
FROM --platform=linux/amd64 rocm/dev-centos-7:5.7.1-complete AS rocm-5-build-amd64
|
|
ARG CMAKE_VERSION
|
|
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
|
|
&& yum update -y \
|
|
&& yum remove -y git \
|
|
&& yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
|
|
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
|
|
ENV LIBRARY_PATH /opt/amdgpu/lib64
|
|
ADD https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-x86_64.tar.gz /tmp/cmake-$CMAKE_VERSION.tar.gz
|
|
RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
|
|
WORKDIR /go/src/github.com/jmorganca/ollama
|
|
COPY .git .git
|
|
COPY .gitmodules .gitmodules
|
|
COPY llm llm
|
|
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
|
|
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
|
|
|
|
FROM --platform=linux/amd64 rocm/dev-centos-7:6.0-complete AS rocm-6-build-amd64
|
|
ARG CMAKE_VERSION
|
|
RUN yum install -y https://repo.ius.io/ius-release-el7.rpm centos-release-scl \
|
|
&& yum update -y \
|
|
&& yum remove -y git \
|
|
&& yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ git236
|
|
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
|
|
ENV LIBRARY_PATH /opt/amdgpu/lib64
|
|
ADD https://github.com/Kitware/CMake/releases/download/v$CMAKE_VERSION/cmake-$CMAKE_VERSION-linux-x86_64.tar.gz /tmp/cmake-$CMAKE_VERSION.tar.gz
|
|
RUN tar -zx -C /usr --strip-components 1 </tmp/cmake-$CMAKE_VERSION.tar.gz
|
|
WORKDIR /go/src/github.com/jmorganca/ollama
|
|
COPY .git .git
|
|
COPY .gitmodules .gitmodules
|
|
COPY llm llm
|
|
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
|
|
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
|
|
|
|
FROM --platform=linux/amd64 centos:7 AS build-amd64
|
|
ENV CGO_ENABLED 1
|
|
|
|
ARG GOLANG_VERSION
|
|
ARG GOFLAGS
|
|
ARG CGO_FLAGS
|
|
|
|
RUN yum install -y centos-release-scl \
|
|
&& yum update -y \
|
|
&& yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
|
|
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
|
|
|
|
ADD https://dl.google.com/go/go$GOLANG_VERSION.linux-amd64.tar.gz /tmp/go-$GOLANG_VERSION.tar.gz
|
|
RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go-$GOLANG_VERSION.tar.gz
|
|
ENV PATH /usr/local/go/bin:$PATH
|
|
|
|
WORKDIR /go/src/github.com/jmorganca/ollama
|
|
COPY . .
|
|
COPY --from=cuda-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
|
|
COPY --from=rocm-5-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
|
|
COPY --from=rocm-6-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
|
|
RUN go build .
|
|
|
|
FROM --platform=linux/arm64 centos:7 AS build-arm64
|
|
ENV CGO_ENABLED 1
|
|
|
|
ARG GOLANG_VERSION
|
|
ARG GOFLAGS
|
|
ARG CGO_FLAGS
|
|
|
|
RUN yum install -y centos-release-scl \
|
|
&& yum update -y \
|
|
&& yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++
|
|
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
|
|
|
|
ADD https://dl.google.com/go/go$GOLANG_VERSION.linux-arm64.tar.gz /tmp/go-$GOLANG_VERSION.tar.gz
|
|
RUN mkdir -p /usr/local && tar xz -C /usr/local </tmp/go-$GOLANG_VERSION.tar.gz
|
|
ENV PATH /usr/local/go/bin:$PATH
|
|
|
|
WORKDIR /go/src/github.com/jmorganca/ollama
|
|
COPY . .
|
|
COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
|
|
RUN go build .
|
|
|
|
FROM build-$TARGETARCH
|