CoolFace
Modelpublic

Felipe97/llama-cpp-compiled

sourceHugging Faceupdated 3d agoView on Hugging Face
0likes1.1kdownloads
s390x.Dockerfile146 linesDownload Raw Back to .devops
1ARG GCC_VERSION=15.2.02ARG UBUNTU_VERSION=24.043ARG BUILD_DATE=N/A4ARG APP_VERSION=N/A5ARG APP_REVISION=N/A6 7### Build Llama.cpp stage8FROM docker.io/gcc:${GCC_VERSION} AS build9 10RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \11    --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \12    apt update -y && \13    apt upgrade -y && \14    apt install -y --no-install-recommends \15        git cmake ccache ninja-build \16        # WARNING: Do not use libopenblas-openmp-dev. libopenblas-dev is faster.17        libopenblas-dev libssl-dev && \18    rm -rf /var/lib/apt/lists/*19 20WORKDIR /app21COPY . .22 23RUN --mount=type=cache,target=/root/.ccache \24    --mount=type=cache,target=/app/build \25    cmake -S . -B build -G Ninja \26        -DCMAKE_BUILD_TYPE=Release \27        -DCMAKE_C_COMPILER_LAUNCHER=ccache \28        -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \29        -DLLAMA_BUILD_TESTS=OFF \30        -DGGML_NATIVE=OFF \31        -DGGML_BACKEND_DL=ON \32        -DGGML_CPU_ALL_VARIANTS=ON \33        -DGGML_BLAS=ON \34        -DGGML_BLAS_VENDOR=OpenBLAS && \35    cmake --build build --config Release -j $(nproc) && \36    cmake --install build --prefix /opt/llama.cpp37 38COPY *.py             /opt/llama.cpp/bin39COPY .devops/tools.sh /opt/llama.cpp/bin40COPY conversion       /opt/llama.cpp/conversion41 42COPY gguf-py          /opt/llama.cpp/gguf-py43COPY requirements.txt /opt/llama.cpp/gguf-py44COPY requirements     /opt/llama.cpp/gguf-py/requirements45 46 47### Collect all llama.cpp binaries, libraries and distro libraries48FROM scratch AS collector49 50# Copy llama.cpp binaries and libraries51COPY --from=build /opt/llama.cpp/bin        /llama.cpp/bin52COPY --from=build /opt/llama.cpp/lib        /llama.cpp/lib53COPY --from=build /opt/llama.cpp/gguf-py    /llama.cpp/gguf-py54COPY --from=build /opt/llama.cpp/conversion /llama.cpp/conversion55 56 57### Base image58FROM docker.io/ubuntu:${UBUNTU_VERSION} AS base59 60ARG BUILD_DATE=N/A61ARG APP_VERSION=N/A62ARG APP_REVISION=N/A63ARG IMAGE_URL=https://github.com/ggml-org/llama.cpp64ARG IMAGE_SOURCE=https://github.com/ggml-org/llama.cpp65LABEL org.opencontainers.image.created=$BUILD_DATE \66      org.opencontainers.image.version=$APP_VERSION \67      org.opencontainers.image.revision=$APP_REVISION \68      org.opencontainers.image.title="llama.cpp" \69      org.opencontainers.image.description="LLM inference in C/C++" \70      org.opencontainers.image.url=$IMAGE_URL \71      org.opencontainers.image.source=$IMAGE_SOURCE72 73RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \74    --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \75    apt update -y && \76    apt install -y --no-install-recommends \77        # WARNING: Do not use libopenblas-openmp-dev. libopenblas-dev is faster.78        # See: https://github.com/ggml-org/llama.cpp/pull/15915#issuecomment-331716650679        curl libgomp1 libopenblas-dev && \80    apt autoremove -y && \81    apt clean -y && \82    rm -rf /tmp/* /var/tmp/* && \83    find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete && \84    find /var/cache -type f -delete85 86# Copy llama.cpp libraries87COPY --from=collector /llama.cpp/lib /usr/lib/s390x-linux-gnu88 89 90### Full91FROM base AS full92 93ENV PATH="/root/.cargo/bin:${PATH}"94WORKDIR /app95 96RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \97    --mount=type=cache,target=/var/lib/apt/lists,sharing=locked \98    apt update -y && \99    apt install -y \100        git cmake libjpeg-dev \101        python3 python3-pip python3-dev && \102    apt autoremove -y && \103    apt clean -y && \104    rm -rf /tmp/* /var/tmp/* && \105    find /var/cache/apt/archives /var/lib/apt/lists -not -name lock -type f -delete && \106    find /var/cache -type f -delete107 108RUN curl https://sh.rustup.rs -sSf | bash -s -- -y109 110COPY --from=collector /llama.cpp/bin /app111COPY --from=collector /llama.cpp/gguf-py /app/gguf-py112COPY --from=collector /llama.cpp/conversion /app/conversion113 114RUN pip install --no-cache-dir --break-system-packages \115        -r /app/gguf-py/requirements.txt116 117ENTRYPOINT [ "/app/tools.sh" ]118 119 120### CLI Only121FROM base AS light122 123WORKDIR /llama.cpp/bin124 125# Copy llama.cpp binaries and libraries126COPY --from=collector /llama.cpp/bin/*.so /llama.cpp/bin127COPY --from=collector /llama.cpp/bin/llama /llama.cpp/bin/llama-cli /llama.cpp/bin/llama-completion /llama.cpp/bin128 129ENTRYPOINT [ "/llama.cpp/bin/llama-cli" ]130 131 132### Server133FROM base AS server134 135ENV LLAMA_ARG_HOST=0.0.0.0136 137WORKDIR /llama.cpp/bin138 139# Copy llama.cpp binaries and libraries140COPY --from=collector /llama.cpp/bin/*.so /llama.cpp/bin141COPY --from=collector /llama.cpp/bin/llama /llama.cpp/bin/llama-server /llama.cpp/bin142 143EXPOSE 8080144 145ENTRYPOINT [ "/llama.cpp/bin/llama-server" ]146