char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Adrien Gallouëtdevops : add llama in all docker images (#25035)5d8ccdf9d

char/aliceai-t5-moe
6.1 KiB162 linesraw
1ARG ONEAPI_VERSION=2025.3.3-0-devel-ubuntu24.04
2ARG BUILD_DATE=N/A
3ARG APP_VERSION=N/A
4ARG APP_REVISION=N/A
5
6## Build Image
7
8ARG NODE_VERSION=24
9
10FROM docker.io/node:$NODE_VERSION AS web
11
12ARG APP_VERSION
13
14WORKDIR /app/tools/ui
15
16COPY tools/ui/package.json tools/ui/package-lock.json ./
17RUN npm ci
18
19COPY tools/ui/ ./
20RUN LLAMA_BUILD_NUMBER="$APP_VERSION" npm run build
21
22FROM docker.io/intel/deep-learning-essentials:$ONEAPI_VERSION AS build
23
24ARG GGML_SYCL_F16=ON
25ARG LEVEL_ZERO_VERSION=1.28.2
26ARG LEVEL_ZERO_UBUNTU_VERSION=u24.04
27RUN apt-get update && \
28    apt-get install -y git libssl-dev wget ca-certificates && \
29    cd /tmp && \
30    wget -q "https://github.com/oneapi-src/level-zero/releases/download/v${LEVEL_ZERO_VERSION}/level-zero_${LEVEL_ZERO_VERSION}%2B${LEVEL_ZERO_UBUNTU_VERSION}_amd64.deb" -O level-zero.deb && \
31    wget -q "https://github.com/oneapi-src/level-zero/releases/download/v${LEVEL_ZERO_VERSION}/level-zero-devel_${LEVEL_ZERO_VERSION}%2B${LEVEL_ZERO_UBUNTU_VERSION}_amd64.deb" -O level-zero-devel.deb && \
32    apt-get -o Dpkg::Options::="--force-overwrite" install -y ./level-zero.deb ./level-zero-devel.deb && \
33    rm -f /tmp/level-zero.deb /tmp/level-zero-devel.deb
34
35WORKDIR /app
36
37COPY . .
38
39COPY --from=web /app/tools/ui/dist tools/ui/dist
40
41RUN if [ "${GGML_SYCL_F16}" = "ON" ]; then \
42        echo "GGML_SYCL_F16 is set" \
43        && export OPT_SYCL_F16="-DGGML_SYCL_F16=ON" \
44        && export SYCL_PROGRAM_COMPILE_OPTIONS="-cl-fp32-correctly-rounded-divide-sqrt"; \
45    fi && \
46    echo "Building with dynamic libs" && \
47    cmake -B build -DGGML_NATIVE=OFF -DGGML_SYCL=ON -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON -DLLAMA_BUILD_TESTS=OFF ${OPT_SYCL_F16} && \
48    cmake --build build --config Release -j$(nproc)
49
50RUN mkdir -p /app/lib && \
51    find build -name "*.so*" -exec cp -P {} /app/lib \;
52
53RUN mkdir -p /app/full \
54    && cp build/bin/* /app/full \
55    && cp *.py /app/full \
56    && cp -r conversion /app/full \
57    && cp -r gguf-py /app/full \
58    && cp -r requirements /app/full \
59    && cp requirements.txt /app/full \
60    && cp .devops/tools.sh /app/full/tools.sh
61
62FROM docker.io/intel/deep-learning-essentials:$ONEAPI_VERSION AS base
63
64ARG BUILD_DATE=N/A
65ARG APP_VERSION=N/A
66ARG APP_REVISION=N/A
67ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp
68ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp
69LABEL org.opencontainers.image.created=$BUILD_DATE \
70      org.opencontainers.image.version=$APP_VERSION \
71      org.opencontainers.image.revision=$APP_REVISION \
72      org.opencontainers.image.title="llama.cpp" \
73      org.opencontainers.image.description="LLM inference in C/C++" \
74      org.opencontainers.image.url=$IMAGE_URL \
75      org.opencontainers.image.source=$IMAGE_SOURCE
76
77#Following versions are for multiple GPUs, since 26.x has known issue:
78#   https://github.com/ggml-org/llama.cpp/issues/21747,
79#   https://github.com/intel/compute-runtime/issues/921.
80#ARG IGC_VERSION=v2.20.5
81#ARG IGC_VERSION_FULL=2_2.20.5+19972
82#ARG COMPUTE_RUNTIME_VERSION=25.40.35563.10
83#ARG COMPUTE_RUNTIME_VERSION_FULL=25.40.35563.10-0
84#ARG IGDGMM_VERSION=22.8.2
85
86
87ARG IGC_VERSION=v2.34.4
88ARG IGC_VERSION_FULL=2_2.34.4+21428
89ARG COMPUTE_RUNTIME_VERSION=26.18.38308.1
90ARG COMPUTE_RUNTIME_VERSION_FULL=26.18.38308.1-0
91ARG IGDGMM_VERSION=22.10.0
92RUN mkdir /tmp/neo/ && cd /tmp/neo/ \
93  && wget https://github.com/intel/intel-graphics-compiler/releases/download/$IGC_VERSION/intel-igc-core-${IGC_VERSION_FULL}_amd64.deb \
94  && wget https://github.com/intel/intel-graphics-compiler/releases/download/$IGC_VERSION/intel-igc-opencl-${IGC_VERSION_FULL}_amd64.deb \
95  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/intel-ocloc-dbgsym_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.ddeb \
96  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/intel-ocloc_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
97  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/intel-opencl-icd-dbgsym_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.ddeb \
98  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/intel-opencl-icd_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
99  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/libigdgmm12_${IGDGMM_VERSION}_amd64.deb \
100  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/libze-intel-gpu1-dbgsym_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.ddeb \
101  && wget https://github.com/intel/compute-runtime/releases/download/$COMPUTE_RUNTIME_VERSION/libze-intel-gpu1_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \
102  && dpkg --install *.deb
103
104RUN apt-get update \
105    && apt-get install -y libgomp1 curl ffmpeg \
106    && apt autoremove -y \
107    && apt clean -y \
108    && rm -rf /tmp/* /var/tmp/* \
109    && find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete \
110    && find /var/cache -type f -delete
111
112### Full
113FROM base AS full
114
115COPY --from=build /app/lib/ /app
116COPY --from=build /app/full /app
117
118WORKDIR /app
119
120RUN apt-get update && \
121    apt-get install -y \
122        git \
123        python3 \
124        python3-pip \
125        python3-venv && \
126    python3 -m venv /opt/venv && \
127    . /opt/venv/bin/activate && \
128    pip install --upgrade pip setuptools wheel && \
129    pip install -r requirements.txt && \
130    apt autoremove -y && \
131    apt clean -y && \
132    rm -rf /tmp/* /var/tmp/* && \
133    find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete && \
134    find /var/cache -type f -delete
135
136ENV PATH="/opt/venv/bin:$PATH"
137
138ENTRYPOINT ["/app/tools.sh"]
139
140### Light, CLI only
141FROM base AS light
142
143COPY --from=build /app/lib/ /app
144COPY --from=build /app/full/llama /app/full/llama-cli /app/full/llama-completion /app
145
146WORKDIR /app
147
148ENTRYPOINT [ "/app/llama-cli" ]
149
150### Server, Server only
151FROM base AS server
152
153ENV LLAMA_ARG_HOST=0.0.0.0
154
155COPY --from=build /app/lib/ /app
156COPY --from=build /app/full/llama /app/full/llama-server /app
157
158WORKDIR /app
159
160HEALTHCHECK CMD [ "curl", "-f", "http://localhost:8080/health" ]
161
162ENTRYPOINT [ "/app/llama-server" ]