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

FROM --platform=linux/amd64 nvidia/cuda:$CUDA_VERSION-devel-centos7 AS cuda-build-amd64
7

Michael Yang's avatar
Michael Yang committed
8
ARG CMAKE_VERSION
9

Michael Yang's avatar
Michael Yang committed
10
11
12
13
14
15
16
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
17
18
19

WORKDIR /go/src/github.com/jmorganca/ollama
COPY . .
20

Michael Yang's avatar
Michael Yang committed
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
WORKDIR 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 . .

WORKDIR llm/generate
RUN sh gen_linux.sh

FROM --platform=linux/amd64 rocm/dev-centos-7:$ROCM_VERSION-complete AS rocm-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 . .

WORKDIR llm/generate
RUN 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/cpu/lib llm/llama.cpp/build/linux/cpu/lib
COPY --from=cuda-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/cuda/lib llm/llama.cpp/build/linux/cuda/lib
COPY --from=rocm-build-amd64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/rocm/lib llm/llama.cpp/build/linux/rocm/lib
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/cpu/lib llm/llama.cpp/build/linux/cpu/lib
COPY --from=cuda-build-arm64 /go/src/github.com/jmorganca/ollama/llm/llama.cpp/build/linux/cuda/lib llm/llama.cpp/build/linux/cuda/lib
RUN go build .
Michael Yang's avatar
Michael Yang committed
100

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