# syntax=docker/dockerfile:1 ARG CUDA_VERSION=12.8.1 FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu24.04 AS builder ARG LLAMA_CPP_COMMIT=04d6828b2b555ef300bae8096663c6e675afdd47 ENV DEBIAN_FRONTEND=noninteractive ENV CC=gcc-14 ENV CXX=g++-14 ENV CUDAHOSTCXX=g++-14 RUN apt-get update && \ apt-get install -y --no-install-recommends \ build-essential \ ca-certificates \ cmake \ g++-14 \ gcc-14 \ git \ libgomp1 \ libssl-dev && \ rm -rf /var/lib/apt/lists/* RUN git init /src && \ git -C /src remote add origin https://github.com/pwilkin/llama.cpp.git && \ git -C /src fetch --depth=1 origin "${LLAMA_CPP_COMMIT}" && \ git -C /src checkout --detach FETCH_HEAD && \ test "$(git -C /src rev-parse HEAD)" = "${LLAMA_CPP_COMMIT}" RUN cmake -S /src -B /src/build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CUDA_ARCHITECTURES=90 \ -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-shlib-undefined" \ -DGGML_BACKEND_DL=ON \ -DGGML_CPU_ALL_VARIANTS=OFF \ -DGGML_CUDA=ON \ -DGGML_NATIVE=OFF \ -DLLAMA_BUILD_TESTS=OFF \ -DLLAMA_BUILD_SERVER=ON \ -DLLAMA_BUILD_UI=OFF \ -DLLAMA_USE_PREBUILT_UI=OFF \ -DLLAMA_BUILD_APP=OFF \ -DLLAMA_BUILD_EXAMPLES=OFF \ -DLLAMA_BUILD_TOOLS=ON && \ cmake --build /src/build \ --config Release \ --target llama-cli \ --parallel 2 FROM nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu24.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates \ coreutils \ libgomp1 \ libssl3t64 \ libstdc++6 \ python3 \ python3-venv && \ python3 -m venv /opt/hf && \ /opt/hf/bin/pip install --no-cache-dir \ "huggingface_hub==1.26.0" && \ rm -rf /var/lib/apt/lists/* COPY --from=builder /src/build/bin/ /app/ ENV PATH="/opt/hf/bin:/app:${PATH}" ENV LD_LIBRARY_PATH="/app:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64" RUN mkdir -p /health && \ printf "Kimi K3 llama.cpp runtime is ready.\n" > /health/index.html # Spaceを開いたときのhealth server。 # Jobsからbashを指定すると、このCMDは上書きされる。 CMD ["/opt/hf/bin/python", "-m", "http.server", "7860", "--directory", "/health"]