Dockerfile 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # syntax=docker/dockerfile:1.7
  2. # GLM-5.2 NF3-Hybrid — rapid build atop community DGX Spark image
  3. # Base: ghcr.io/timothystewart6/vllm-gb10:v0.23.0-gb10.1
  4. # (torch 2.11.0+cu130, vLLM, flashinfer, aarch64/sm_121a)
  5. # Adds: b12x (voipmonitor NF3-hybrid fork) + Triton NF3 overlay
  6. ARG BASE_IMAGE=ghcr.io/timothystewart6/vllm-gb10:v0.24.0-gb10.5
  7. FROM ${BASE_IMAGE}
  8. ARG TORCH_CUDA_ARCH_LIST=12.1a
  9. ENV DEBIAN_FRONTEND=noninteractive \
  10. PIP_BREAK_SYSTEM_PACKAGES=1 \
  11. TORCH_CUDA_ARCH_LIST=${TORCH_CUDA_ARCH_LIST} \
  12. CUTE_DSL_ARCH=sm_121a
  13. # Install build tools + b12x deps
  14. RUN apt-get update && apt-get install -y --no-install-recommends \
  15. build-essential ninja-build cmake git curl wget python3-dev ccache \
  16. libibverbs-dev rdma-core \
  17. && rm -rf /var/lib/apt/lists/*
  18. # Build b12x from source (NVFP4 + NF3 CuTe-DSL kernels)
  19. RUN pip install --no-cache-dir uv setuptools-rust
  20. RUN git clone --recursive https://github.com/voipmonitor/b12x.git /opt/b12x \
  21. && cd /opt/b12x \
  22. && git checkout f3686b555d639823b276c2080f173145eed7f007
  23. WORKDIR /opt/b12x
  24. RUN pip install --no-cache-dir -e . --no-build-isolation \
  25. -C setup.args="--cuda-arch=${TORCH_CUDA_ARCH_LIST}"
  26. # Copy NF3 hybrid overlay
  27. COPY overlay/hybrid_loader.py /usr/local/lib/python3.12/dist-packages/hybrid_loader.py
  28. COPY overlay/nf3_kernel.py /usr/local/lib/python3.12/dist-packages/nf3_kernel.py
  29. COPY overlay/nvfp4_kernel.py /usr/local/lib/python3.12/dist-packages/nvfp4_kernel.py
  30. COPY overlay/nf3_replan.py /usr/local/lib/python3.12/dist-packages/nf3_replan.py
  31. COPY overlay/mxfp8_tier.json /usr/local/lib/python3.12/dist-packages/mxfp8_tier.json
  32. RUN python3 -c "open('/usr/local/lib/python3.12/dist-packages/hybrid_loader.pth','w').write('import hybrid_loader\n')"
  33. # Verify
  34. RUN python3 -c "import hybrid_loader; print('OK'); import nf3_kernel; print('OK'); import nvfp4_kernel; print('OK'); import nf3_replan; print('OK'); import b12x; print(f'OK b12x'); import torch; print(f'OK torch {torch.__version__} cuda {torch.version.cuda}'); import vllm; print(f'OK vllm {vllm.__version__}')"
  35. ENTRYPOINT ["vllm", "serve"]