Dockerfile.build 3.66 KB
Newer Older
1
ARG GOLANG_VERSION=1.21.3
Michael Yang's avatar
Michael Yang committed
2
3
4
ARG CMAKE_VERSION=3.22.1
ARG CUDA_VERSION=11.3.1

Daniel Hiltgen's avatar
Daniel Hiltgen committed
5
6
# Copy the minimal context we need to run the generate scripts
FROM scratch AS llm-code
7
8
9
COPY .git .git
COPY .gitmodules .gitmodules
COPY llm llm
10

Daniel Hiltgen's avatar
Daniel Hiltgen committed
11
12
FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-centos7 AS cuda-build-amd64
ARG CMAKE_VERSION
13
ARG CGO_CFLAGS
Daniel Hiltgen's avatar
Daniel Hiltgen committed
14
15
16
17
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
18
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
Daniel Hiltgen's avatar
Daniel Hiltgen committed
19
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
20
21
22

FROM --platform=linux/arm64 nvidia/cuda:$CUDA_VERSION-devel-rockylinux8 AS cuda-build-arm64
ARG CMAKE_VERSION
23
ARG CGO_CFLAGS
Daniel Hiltgen's avatar
Daniel Hiltgen committed
24
25
26
27
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
ENV PATH /opt/rh/gcc-toolset-10/root/usr/bin:$PATH
COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
28
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
Daniel Hiltgen's avatar
Daniel Hiltgen committed
29
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
30

31
FROM --platform=linux/amd64 rocm/dev-centos-7:5.7.1-complete AS rocm-5-build-amd64
Michael Yang's avatar
Michael Yang committed
32
ARG CMAKE_VERSION
33
ARG CGO_CFLAGS
Daniel Hiltgen's avatar
Daniel Hiltgen committed
34
35
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
Michael Yang's avatar
Michael Yang committed
36
37
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
ENV LIBRARY_PATH /opt/amdgpu/lib64
Daniel Hiltgen's avatar
Daniel Hiltgen committed
38
COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
39
40
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
41

42
43
FROM --platform=linux/amd64 rocm/dev-centos-7:6.0-complete AS rocm-6-build-amd64
ARG CMAKE_VERSION
44
ARG CGO_CFLAGS
Daniel Hiltgen's avatar
Daniel Hiltgen committed
45
46
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} sh /rh_linux_deps.sh
47
48
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
ENV LIBRARY_PATH /opt/amdgpu/lib64
Daniel Hiltgen's avatar
Daniel Hiltgen committed
49
COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
50
51
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
RUN OLLAMA_SKIP_CPU_GENERATE=1 sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
52

Daniel Hiltgen's avatar
Daniel Hiltgen committed
53
54
FROM --platform=linux/amd64 centos:7 AS cpu-build-amd64
ARG CMAKE_VERSION
Michael Yang's avatar
Michael Yang committed
55
ARG GOLANG_VERSION
56
ARG OLLAMA_CUSTOM_CPU_DEFS
57
ARG CGO_CFLAGS
Daniel Hiltgen's avatar
Daniel Hiltgen committed
58
59
60
61
62
63
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} GOLANG_VERSION=${GOLANG_VERSION} sh /rh_linux_deps.sh
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
RUN sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
64

Daniel Hiltgen's avatar
Daniel Hiltgen committed
65
66
67
FROM --platform=linux/arm64 centos:7 AS cpu-build-arm64
ARG CMAKE_VERSION
ARG GOLANG_VERSION
68
ARG OLLAMA_CUSTOM_CPU_DEFS
69
ARG CGO_CFLAGS
Daniel Hiltgen's avatar
Daniel Hiltgen committed
70
71
COPY ./scripts/rh_linux_deps.sh /
RUN CMAKE_VERSION=${CMAKE_VERSION} GOLANG_VERSION=${GOLANG_VERSION} sh /rh_linux_deps.sh
Michael Yang's avatar
Michael Yang committed
72
ENV PATH /opt/rh/devtoolset-10/root/usr/bin:$PATH
Daniel Hiltgen's avatar
Daniel Hiltgen committed
73
74
75
COPY --from=llm-code / /go/src/github.com/jmorganca/ollama/
WORKDIR /go/src/github.com/jmorganca/ollama/llm/generate
RUN sh gen_linux.sh
Michael Yang's avatar
Michael Yang committed
76
77


Daniel Hiltgen's avatar
Daniel Hiltgen committed
78
79
80
FROM --platform=linux/amd64 cpu-build-amd64 AS build-amd64
ENV CGO_ENABLED 1
ARG GOFLAGS
81
ARG CGO_CFLAGS
Michael Yang's avatar
Michael Yang committed
82
83
WORKDIR /go/src/github.com/jmorganca/ollama
COPY . .
84
85
86
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/
Michael Yang's avatar
Michael Yang committed
87
88
RUN go build .

Daniel Hiltgen's avatar
Daniel Hiltgen committed
89
FROM --platform=linux/arm64 cpu-build-arm64 AS build-arm64
Michael Yang's avatar
Michael Yang committed
90
91
92
ENV CGO_ENABLED 1
ARG GOLANG_VERSION
ARG GOFLAGS
93
ARG CGO_CFLAGS
Michael Yang's avatar
Michael Yang committed
94
95
WORKDIR /go/src/github.com/jmorganca/ollama
COPY . .
96
COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/ llm/llama.cpp/build/linux/
Michael Yang's avatar
Michael Yang committed
97
RUN go build .
Michael Yang's avatar
Michael Yang committed
98

Michael Yang's avatar
Michael Yang committed
99
FROM build-$TARGETARCH