File size: 2,337 Bytes
f4ff6d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
aaaae3b
f4ff6d8
 
aaaae3b
04086ea
aaaae3b
04086ea
aaaae3b
 
 
f4ff6d8
 
 
04086ea
f4ff6d8
 
 
 
 
 
 
 
 
 
 
 
d286965
 
 
 
 
f4ff6d8
 
 
 
d286965
 
f4ff6d8
d286965
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
# 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"]