| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.ref.name=ubuntu |
| LABEL org.opencontainers.image.version=24.04 |
| ADD file:3f78aa860931e0853077f09eb31eddbeeef8a9dd70977305b4876aa176770721 in / |
| CMD ["/bin/bash"] |
| ENV DEBIAN_FRONTEND=noninteractive |
| ENV PYTHONUNBUFFERED=1 |
| WORKDIR /opt/bitnet |
| RUN /bin/sh -c apt-get update && apt-get install -y bash ca-certificates curl git wget gnupg software-properties-common build-essential cmake ninja-build pkg-config python3 python3-venv python3-dev && rm -rf /var/lib/apt/lists/* # buildkit |
| RUN /bin/sh -c wget -O /tmp/llvm.sh https://apt.llvm.org/llvm.sh && chmod +x /tmp/llvm.sh && /tmp/llvm.sh 18 all && rm -f /tmp/llvm.sh # buildkit |
| RUN /bin/sh -c ln -sf /usr/bin/clang-18 /usr/local/bin/clang && ln -sf /usr/bin/clang++-18 /usr/local/bin/clang++ # buildkit |
| ENV CC=/usr/bin/clang-18 |
| ENV CXX=/usr/bin/clang++-18 |
| ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c git clone --recursive https://github.com/microsoft/BitNet.git /opt/bitnet/BitNet # buildkit |
| WORKDIR /opt/bitnet/BitNet |
| RUN /bin/sh -c python3 -m venv /opt/bitnet/venv # buildkit |
| ENV PATH=/opt/bitnet/venv/bin:/usr/local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| RUN /bin/sh -c pip install --upgrade pip setuptools wheel && pip install -r requirements.txt && pip install huggingface_hub # buildkit |
| RUN /bin/sh -c python3 - <<'PY'
from pathlib import Path
p = Path("/opt/bitnet/BitNet/src/ggml-bitnet-mad.cpp")
text = p.read_text()
text = text.replace(
" int8_t * y_col = y + col * by;",
" const int8_t * y_col = y + col * by;"
)
p.write_text(text)
print("patched y_col const fix")
PY # buildkit |
| RUN /bin/sh -c test -f preset_kernels/bitnet_b1_58-large/bitnet-lut-kernels-tl2.h && test -f preset_kernels/bitnet_b1_58-large/kernel_config_tl2.ini && cp preset_kernels/bitnet_b1_58-large/bitnet-lut-kernels-tl2.h include/bitnet-lut-kernels.h && cp preset_kernels/bitnet_b1_58-large/kernel_config_tl2.ini include/kernel_config.ini # buildkit |
| RUN /bin/sh -c which clang && clang --version && which clang++ && clang++ --version # buildkit |
| RUN /bin/sh -c ls -lah include/bitnet-lut-kernels.h include/kernel_config.ini # buildkit |
| RUN /bin/sh -c cmake -B build -DBITNET_X86_TL2=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ && cmake --build build --config Release -j"$(nproc)" # buildkit |
| RUN /bin/sh -c test -f /opt/bitnet/BitNet/build/bin/llama-server # buildkit |
| COPY scripts/entrypoint.sh /entrypoint.sh # buildkit |
| RUN /bin/sh -c chmod +x /entrypoint.sh # buildkit |
| EXPOSE [8080/tcp] |
| ENTRYPOINT ["/entrypoint.sh"] |