forked from ollama/ollama
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
143 lines (126 loc) · 6.14 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
ARG GOLANG_VERSION=1.22.6
ARG CMAKE_VERSION=3.24.3
# this CUDA_VERSION corresponds with the one specified in docs/gpu.md
ARG CUDA_VERSION=12.4.1
# ARG ROCM_VERSION=6.1.2
# Copy the minimal context we need to run the generate scripts
FROM scratch AS llm-code
COPY .git .git
COPY llm llm
FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-ubuntu22.04 AS cuda-build-amd64
ARG CMAKE_VERSION
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} bash /rh_linux_deps.sh
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
COPY --from=llm-code / /go/src/github.com/ollama/ollama/
WORKDIR /go/src/github.com/ollama/ollama/llm/generate
ARG CGO_CFLAGS
RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_SKIP_CPU_GENERATE=1 bash gen_linux.sh
# FROM --platform=linux/arm64 nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 AS cuda-build-arm64
# ARG CMAKE_VERSION
# COPY ./scripts/rh_linux_deps.sh /
# RUN CMAKE_VERSION=${CMAKE_VERSION} bash /rh_linux_deps.sh
# ENV PATH /opt/rh/gcc-toolset-10/root/usr/bin:$PATH
# COPY --from=llm-code / /go/src/github.com/ollama/ollama/
# WORKDIR /go/src/github.com/ollama/ollama/llm/generate
# ARG CGO_CFLAGS
# RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_SKIP_CPU_GENERATE=1 bash gen_linux.sh
# FROM --platform=linux/amd64 rocm/dev-centos-7:${ROCM_VERSION}-complete AS rocm-build-amd64
# ARG CMAKE_VERSION
# COPY ./scripts/rh_linux_deps.sh /
# RUN CMAKE_VERSION=${CMAKE_VERSION} bash /rh_linux_deps.sh
# ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
# ENV LIBRARY_PATH /opt/amdgpu/lib64
# COPY --from=llm-code / /go/src/github.com/ollama/ollama/
# WORKDIR /go/src/github.com/ollama/ollama/llm/generate
# ARG CGO_CFLAGS
# ARG AMDGPU_TARGETS
# RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_SKIP_CPU_GENERATE=1 bash gen_linux.sh
# RUN mkdir /tmp/scratch && \
# for dep in $(zcat /go/src/github.com/ollama/ollama/llm/build/linux/x86_64/rocm*/bin/deps.txt.gz) ; do \
# cp ${dep} /tmp/scratch/ || exit 1 ; \
# done && \
# (cd /opt/rocm/lib && tar cf - rocblas/library) | (cd /tmp/scratch/ && tar xf - ) && \
# mkdir -p /go/src/github.com/ollama/ollama/dist/deps/ && \
# (cd /tmp/scratch/ && tar czvf /go/src/github.com/ollama/ollama/dist/deps/ollama-linux-amd64-rocm.tgz . )
FROM --platform=linux/amd64 ubuntu:22.04 AS cpu-builder-amd64
ARG CMAKE_VERSION
ARG GOLANG_VERSION
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} GOLANG_VERSION=${GOLANG_VERSION} bash /rh_linux_deps.sh
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
COPY --from=llm-code / /go/src/github.com/ollama/ollama/
ARG OLLAMA_CUSTOM_CPU_DEFS
ARG CGO_CFLAGS
WORKDIR /go/src/github.com/ollama/ollama/llm/generate
FROM --platform=linux/amd64 cpu-builder-amd64 AS static-build-amd64
RUN OLLAMA_CPU_TARGET="static" bash gen_linux.sh
FROM --platform=linux/amd64 cpu-builder-amd64 AS cpu-build-amd64
RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_CPU_TARGET="cpu" bash gen_linux.sh
FROM --platform=linux/amd64 cpu-builder-amd64 AS cpu_avx-build-amd64
RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_CPU_TARGET="cpu_avx" bash gen_linux.sh
FROM --platform=linux/amd64 cpu-builder-amd64 AS cpu_avx2-build-amd64
RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_CPU_TARGET="cpu_avx2" bash gen_linux.sh
# FROM --platform=linux/arm64 rockylinux:8 AS cpu-builder-arm64
# ARG CMAKE_VERSION
# ARG GOLANG_VERSION
# COPY ./scripts/rh_linux_deps.sh /
# RUN CMAKE_VERSION=${CMAKE_VERSION} GOLANG_VERSION=${GOLANG_VERSION} bash /rh_linux_deps.sh
# ENV PATH /opt/rh/gcc-toolset-10/root/usr/bin:$PATH
# COPY --from=llm-code / /go/src/github.com/ollama/ollama/
# ARG OLLAMA_CUSTOM_CPU_DEFS
# ARG CGO_CFLAGS
# WORKDIR /go/src/github.com/ollama/ollama/llm/generate
# FROM --platform=linux/arm64 cpu-builder-arm64 AS static-build-arm64
# RUN OLLAMA_CPU_TARGET="static" bash gen_linux.sh
# FROM --platform=linux/arm64 cpu-builder-arm64 AS cpu-build-arm64
# RUN OLLAMA_SKIP_STATIC_GENERATE=1 OLLAMA_CPU_TARGET="cpu" bash gen_linux.sh
# Intermediate stage used for ./scripts/build_linux.sh
FROM --platform=linux/amd64 cpu-build-amd64 AS build-amd64
ENV CGO_ENABLED 1
WORKDIR /go/src/github.com/ollama/ollama
COPY . .
COPY --from=static-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
COPY --from=cpu_avx-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
COPY --from=cpu_avx2-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
COPY --from=cuda-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
# COPY --from=rocm-build-amd64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
# COPY --from=rocm-build-amd64 /go/src/github.com/ollama/ollama/dist/deps/ ./dist/deps/
ARG GOFLAGS
ARG CGO_CFLAGS
RUN go build -trimpath .
# # Intermediate stage used for ./scripts/build_linux.sh
# FROM --platform=linux/arm64 cpu-build-arm64 AS build-arm64
# ENV CGO_ENABLED 1
# ARG GOLANG_VERSION
# WORKDIR /go/src/github.com/ollama/ollama
# COPY . .
# COPY --from=static-build-arm64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
# COPY --from=cuda-build-arm64 /go/src/github.com/ollama/ollama/llm/build/linux/ llm/build/linux/
# ARG GOFLAGS
# ARG CGO_CFLAGS
# RUN go build -trimpath .
# Runtime stages
FROM --platform=linux/amd64 ubuntu:22.04 AS runtime-amd64
RUN apt-get update && apt-get install -y ca-certificates
COPY --from=build-amd64 /go/src/github.com/ollama/ollama/ollama /bin/ollama
# FROM --platform=linux/arm64 ubuntu:22.04 as runtime-arm64
# RUN apt-get update && apt-get install -y ca-certificates
# COPY --from=build-arm64 /go/src/github.com/ollama/ollama/ollama /bin/ollama
# # Radeon images are much larger so we keep it distinct from the CPU/CUDA image
# FROM --platform=linux/amd64 rocm/dev-centos-7:${ROCM_VERSION}-complete as runtime-rocm
# RUN update-pciids
# COPY --from=build-amd64 /go/src/github.com/ollama/ollama/ollama /bin/ollama
# EXPOSE 11434
# ENV OLLAMA_HOST 0.0.0.0
# ENTRYPOINT ["/bin/ollama"]
# CMD ["serve"]
FROM runtime-amd64
EXPOSE 11434
ENV OLLAMA_HOST 0.0.0.0
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
ENV NVIDIA_VISIBLE_DEVICES=all
ENTRYPOINT ["/bin/ollama"]
CMD ["serve"]