100 lines
3.6 KiB
Docker
100 lines
3.6 KiB
Docker
FROM --platform=linux/amd64 library/ubuntu:noble as builder
|
|
|
|
ENV DEBIAN_FRONTEND="noninteractive"
|
|
|
|
ENV VULKAN_VER_BASE="1.3.296"
|
|
ENV VULKAN_VER="${VULKAN_VER_BASE}.0"
|
|
ENV UBUNTU_VERSION="noble"
|
|
|
|
ENV GOLANG_VERSION="1.22.8"
|
|
ENV GOARCH="amd64"
|
|
ENV CGO_ENABLED=1
|
|
ENV LDFLAGS=-s
|
|
|
|
# Default mirror was very slow
|
|
RUN \
|
|
sed -i 's/archive.ubuntu.com/gb.archive.ubuntu.com/g' /etc/apt/sources.list.d/ubuntu.sources
|
|
|
|
RUN \
|
|
apt-get update && \
|
|
apt-get install -y ca-certificates build-essential ccache cmake wget git curl rsync xz-utils libcap-dev
|
|
|
|
RUN \
|
|
mkdir -p /usr/local 2>/dev/null || true && \
|
|
curl -s -L https://dl.google.com/go/go${GOLANG_VERSION}.linux-${GOARCH}.tar.gz | tar -xz -C /usr/local && \
|
|
ln -s /usr/local/go/bin/go /usr/local/bin/go && \
|
|
ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt
|
|
|
|
|
|
RUN \
|
|
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/lunarg-signing-key-pub.gpg && \
|
|
wget -qO /etc/apt/sources.list.d/lunarg-vulkan-${UBUNTU_VERSION}.list https://packages.lunarg.com/vulkan/${VULKAN_VER_BASE}/lunarg-vulkan-${VULKAN_VER_BASE}-${UBUNTU_VERSION}.list && \
|
|
apt update && apt install -y vulkan-sdk
|
|
|
|
# Last testet ollama-vulkan commit:
|
|
# 2d443b3dd660a1fd2760d64538512df93648b4bb
|
|
COPY patches/ /tmp/patches/
|
|
RUN \
|
|
git clone https://github.com/pufferffish/ollama-vulkan.git "/tmp/ollama-vulkan-git" && \
|
|
cd "/tmp/ollama-vulkan-git" && \
|
|
git checkout 2d443b3dd660a1fd2760d64538512df93648b4bb && git checkout -b ollama_vulkan_stable && \
|
|
git config user.name "Builder" && git config user.email "builder@local" && \
|
|
git remote add ollama_vanilla https://github.com/ollama/ollama.git && \
|
|
git fetch ollama_vanilla --tags && git checkout v0.5.14-rc0 && git checkout -b ollama_vanilla_stable && \
|
|
git checkout ollama_vulkan_stable && git merge ollama_vanilla_stable --allow-unrelated-histories --no-edit && \
|
|
for p in /tmp/patches/00-fix-vulkan-building.patch; do patch -p1 < $p; done
|
|
|
|
RUN \
|
|
cd "/tmp/ollama-vulkan-git" && \
|
|
make -f Makefile.sync clean sync
|
|
|
|
|
|
FROM builder AS cpu-build
|
|
RUN \
|
|
cd "/tmp/ollama-vulkan-git" && \
|
|
cmake --preset CPU && cmake --build --parallel --preset CPU && \
|
|
cmake --install build --component CPU --strip
|
|
|
|
FROM builder AS vulkan-build
|
|
RUN \
|
|
cd "/tmp/ollama-vulkan-git" && \
|
|
cmake --preset Vulkan && \
|
|
cmake --build --parallel --preset Vulkan && \
|
|
cmake --install build --component Vulkan --strip
|
|
|
|
FROM builder AS binary-build
|
|
RUN \
|
|
cd "/tmp/ollama-vulkan-git" && \
|
|
. scripts/env.sh && \
|
|
mkdir -p dist/bin && \
|
|
go build -trimpath -buildmode=pie -o dist/bin/ollama .
|
|
|
|
|
|
FROM --platform=linux/amd64 library/ubuntu:noble
|
|
RUN \
|
|
apt-get update && apt -y dist-upgrade && \
|
|
apt-get install -y ca-certificates libcap2 libvulkan1 && \
|
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install ROCm
|
|
RUN \
|
|
apt update && \
|
|
apt install -y wget python3-setuptools python3-wheel && \
|
|
wget https://repo.radeon.com/amdgpu-install/6.3.3/ubuntu/noble/amdgpu-install_6.3.60303-1_all.deb -O /tmp/amdgpu-install_6.3.60303-1_all.deb && \
|
|
apt install -y /tmp/amdgpu-install_6.3.60303-1_all.deb && \
|
|
apt update && apt install -y rocm && \
|
|
apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
COPY --from=cpu-build /tmp/ollama-vulkan-git/dist/lib/ollama/ /lib/ollama/
|
|
COPY --from=vulkan-build /tmp/ollama-vulkan-git/dist/lib/ollama/vulkan/ /lib/ollama/vulkan/
|
|
COPY --from=binary-build /tmp/ollama-vulkan-git/dist/bin/ /bin/
|
|
|
|
RUN find /lib/ollama && find /bin/ollama
|
|
|
|
EXPOSE 11434
|
|
ENV OLLAMA_HOST 0.0.0.0
|
|
|
|
ENTRYPOINT ["/bin/ollama"]
|
|
CMD ["serve"]
|