char-fork/llama.cpp
git clone https://git.t4t.associates/char-fork/llama.cpp
511f9c137
char/aliceai-t5-moe
1ARG OPENVINO_VERSION_MAJOR=2026.3.1 2ARG OPENVINO_VERSION_FULL=2026.3.1.22476.56d9685302d 3ARG UBUNTU_VERSION=24.04 4 5# Intel GPU driver versions. https://github.com/intel/compute-runtime/releases 6ARG IGC_VERSION=v2.40.13 7ARG IGC_VERSION_FULL=2_2.40.13+22418 8ARG COMPUTE_RUNTIME_VERSION=26.31.39395.13 9ARG COMPUTE_RUNTIME_VERSION_FULL=26.31.39395.13-0 10ARG IGDGMM_VERSION=22.10.0 11 12# Intel NPU driver versions. https://github.com/intel/linux-npu-driver/releases 13ARG NPU_DRIVER_VERSION=v1.35.0 14ARG NPU_DRIVER_FULL=v1.35.0.20260722-29947505341 15ARG LIBZE1_VERSION=1.28.2-1~24.04~ppa1 16 17# Optional proxy build arguments 18ARG http_proxy= 19ARG https_proxy= 20 21ARG BUILD_DATE=N/A 22ARG APP_VERSION=N/A 23ARG APP_REVISION=N/A 24 25ARG NODE_VERSION=24 26 27FROM docker.io/node: $ NODE_VERSION AS web 28 29ARG APP_VERSION 30 31WORKDIR /app/tools/ui 32 33COPY tools/ui/package.json tools/ui/package-lock.json ./ 34RUN npm ci 35 36COPY tools/ui/ ./ 37RUN LLAMA_BUILD_NUMBER="$APP_VERSION" npm run build 38 39## Build Image 40FROM docker.io/ubuntu: ${ UBUNTU_VERSION } AS build 41 42# Pass proxy args to build stage 43ARG http_proxy 44ARG https_proxy 45 46RUN apt-get update && \ 47 apt-get install -y --no-install-recommends \ 48 ca-certificates \ 49 gnupg \ 50 wget \ 51 git \ 52 cmake \ 53 ninja-build \ 54 build-essential \ 55 libtbb12 \ 56 libssl-dev \ 57 ocl-icd-opencl-dev \ 58 opencl-headers \ 59 opencl-clhpp-headers \ 60 intel-opencl-icd && \ 61 rm -rf /var/lib/apt/lists/* 62 63# OpenVINO toolkit and GPU/NPU drivers are cached via BuildKit cache mounts to avoid re-downloading on rebuilds. 64# Install OpenVINO for Ubuntu 24.04. 65ARG OPENVINO_VERSION_MAJOR 66ARG OPENVINO_VERSION_FULL 67RUN --mount=type=cache,target=/var/cache/openvino,sharing=locked \ 68 mkdir -p /opt/intel && \ 69 TGZ=/var/cache/openvino/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz && \ 70 if [ ! -f "$TGZ" ]; then \ 71 wget -O "$TGZ" https://storage.openvinotoolkit.org/repositories/openvino/packages/${OPENVINO_VERSION_MAJOR}/linux/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64.tgz; \ 72 fi && \ 73 tar -xf "$TGZ" -C /opt/intel/ && \ 74 mv /opt/intel/openvino_toolkit_ubuntu24_${OPENVINO_VERSION_FULL}_x86_64 /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} && \ 75 cd /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} && \ 76 echo "Y" | ./install_dependencies/install_openvino_dependencies.sh && \ 77 cd - && \ 78 ln -s /opt/intel/openvino_${OPENVINO_VERSION_MAJOR} /opt/intel/openvino 79 80ENV OpenVINO_DIR=/opt/intel/openvino 81 82WORKDIR /app 83 84COPY . . 85 86COPY --from=web /app/tools/ui/dist tools/ui/dist 87 88# Build Stage 89RUN bash -c "source ${OpenVINO_DIR}/setupvars.sh && \ 90 cmake -B build/ReleaseOV -G Ninja \ 91 -DCMAKE_BUILD_TYPE=Release \ 92 -DLLAMA_BUILD_TESTS=OFF \ 93 -DGGML_NATIVE=OFF \ 94 -DGGML_BACKEND_DL=ON \ 95 -DGGML_CPU_ALL_VARIANTS=ON \ 96 -DGGML_OPENVINO=ON && \ 97 cmake --build build/ReleaseOV --parallel " 98 99# Copy all necessary libraries (build outputs + OpenVINO runtime libs) 100RUN mkdir -p /app/lib && \ 101 find build/ReleaseOV -name '*.so*' -exec cp -P {} /app/lib \; && \ 102 find "${OpenVINO_DIR}/runtime/lib/intel64" -name '*.so*' -exec cp -P {} /app/lib \; 103 104# Create runtime directories and copy binaries 105RUN mkdir -p /app/full \ 106 && cp build/ReleaseOV/bin/* /app/full/ \ 107 && cp *.py /app/full \ 108 && cp -r conversion /app/full \ 109 && cp -r gguf-py /app/full \ 110 && cp -r requirements /app/full \ 111 && cp requirements.txt /app/full \ 112 && cp .devops/tools.sh /app/full/tools.sh 113 114## Base Runtime Image 115FROM docker.io/ubuntu: ${ UBUNTU_VERSION } AS base 116 117# Pass proxy args to runtime stage 118ARG http_proxy 119ARG https_proxy 120ARG BUILD_DATE=N/A 121ARG APP_VERSION=N/A 122ARG APP_REVISION=N/A 123ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp 124ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp 125LABEL org.opencontainers.image.created=$ BUILD_DATE \ 126 org.opencontainers.image.version=$ APP_VERSION \ 127 org.opencontainers.image.revision=$ APP_REVISION \ 128 org.opencontainers.image.title="llama.cpp" \ 129 org.opencontainers.image.description="LLM inference in C/C++" \ 130 org.opencontainers.image.url=$ IMAGE_URL \ 131 org.opencontainers.image.source=$ IMAGE_SOURCE 132 133RUN apt-get update \ 134 && apt-get install -y libgomp1 libtbb12 curl wget ffmpeg ocl-icd-libopencl1 \ 135 && apt autoremove -y \ 136 && apt clean -y \ 137 && rm -rf /tmp/* /var/tmp/* \ 138 && find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete \ 139 && find /var/cache -type f -delete 140 141# Install GPU drivers 142ARG IGC_VERSION 143ARG IGC_VERSION_FULL 144ARG COMPUTE_RUNTIME_VERSION 145ARG COMPUTE_RUNTIME_VERSION_FULL 146ARG IGDGMM_VERSION 147RUN --mount=type=cache,target=/var/cache/intel-gpu,sharing=locked \ 148 set -eux; \ 149 cd /var/cache/intel-gpu; \ 150 for url in \ 151 https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_VERSION}/intel-igc-core-${IGC_VERSION_FULL}_amd64.deb \ 152 https://github.com/intel/intel-graphics-compiler/releases/download/${IGC_VERSION}/intel-igc-opencl-${IGC_VERSION_FULL}_amd64.deb \ 153 https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-ocloc_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \ 154 https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/intel-opencl-icd_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb \ 155 https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libigdgmm12_${IGDGMM_VERSION}_amd64.deb \ 156 https://github.com/intel/compute-runtime/releases/download/${COMPUTE_RUNTIME_VERSION}/libze-intel-gpu1_${COMPUTE_RUNTIME_VERSION_FULL}_amd64.deb ; do \ 157 f=$(basename "$url"); \ 158 [ -f "$f" ] || wget -q -O "$f" "$url"; \ 159 done; \ 160 apt-get update; \ 161 apt-get install -y --no-install-recommends ./*.deb; \ 162 rm -rf /var/lib/apt/lists/* 163 164# Install NPU drivers 165ARG NPU_DRIVER_VERSION 166ARG NPU_DRIVER_FULL 167ARG LIBZE1_VERSION 168RUN --mount=type=cache,target=/var/cache/intel-npu,sharing=locked \ 169 set -eux; \ 170 TGZ=/var/cache/intel-npu/linux-npu-driver-${NPU_DRIVER_FULL}-ubuntu2404.tar.gz; \ 171 if [ ! -f "$TGZ" ]; then \ 172 wget -q -O "$TGZ" https://github.com/intel/linux-npu-driver/releases/download/${NPU_DRIVER_VERSION}/linux-npu-driver-${NPU_DRIVER_FULL}-ubuntu2404.tar.gz; \ 173 fi; \ 174 DEB=/var/cache/intel-npu/libze1_${LIBZE1_VERSION}_amd64.deb; \ 175 if [ ! -f "$DEB" ]; then \ 176 wget -q -O "$DEB" https://snapshot.ppa.launchpadcontent.net/kobuk-team/intel-graphics/ubuntu/20260606T100000Z/pool/main/l/level-zero-loader/libze1_${LIBZE1_VERSION}_amd64.deb; \ 177 fi; \ 178 mkdir /tmp/npu/ && cd /tmp/npu/ && tar -xf "$TGZ" && cp "$DEB" .; \ 179 apt-get update; \ 180 apt-get install -y --no-install-recommends ./*.deb; \ 181 rm -rf /tmp/npu/ /var/lib/apt/lists/* 182 183COPY --from=build /app/lib/ /app/ 184 185### Full (all binaries) 186FROM baseAS full 187 188ARG http_proxy 189ARG https_proxy 190 191COPY --from=build /app/full /app/ 192 193WORKDIR /app 194 195RUN apt-get update && \ 196 apt-get install -y --no-install-recommends \ 197 git \ 198 python3 \ 199 python3-venv \ 200 python3-pip && \ 201 python3 -m venv /openvino-venv && \ 202 /openvino-venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel && \ 203 /openvino-venv/bin/pip install --no-cache-dir -r requirements.txt && \ 204 apt-get autoremove -y && \ 205 apt-get clean && \ 206 rm -rf /tmp/* /var/tmp/* && \ 207 find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete && \ 208 find /var/cache -type f -delete 209 210# Activate the venv 211ENV VIRTUAL_ENV=/openvino-venv \ 212 PATH=/openvino-venv/bin:$ PATH 213 214ENTRYPOINT ["/app/tools.sh" ] 215 216 217### Light, CLI only 218FROM baseAS light 219 220COPY --from=build /app/full/llama /app/full/llama-cli /app/full/llama-completion /app/ 221 222WORKDIR /app 223 224ENTRYPOINT ["/app/llama-cli" ] 225 226### Server, Server only 227FROM baseAS server 228 229ENV LLAMA_ARG_HOST=0.0.0.0 230 231COPY --from=build /app/full/llama /app/full/llama-server /app/ 232 233WORKDIR /app 234 235HEALTHCHECK CMD ["curl" ,"-f" ,"http://localhost:8080/health" ] 236 237ENTRYPOINT ["/app/llama-server" ]