Dockerfile.sglang-wideep 4.48 KB
Newer Older
1
2
3
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

4
ARG SGLANG_IMAGE_TAG="v0.5.0rc2-cu126"
5

ishandhanani's avatar
ishandhanani committed
6
FROM lmsysorg/sglang:${SGLANG_IMAGE_TAG}
7

ishandhanani's avatar
ishandhanani committed
8
9
10
ARG MODE="hopper"
ARG ARCH="amd64"
ARG ARCH_ALT="x86_64"
11
ARG NIXL_UCX_REF="v1.19.0"
12
ARG NIXL_TAG="0.5.0"
ishandhanani's avatar
ishandhanani committed
13
ARG CMAKE_VERSION="3.31.8"
14
ARG RUST_VERSION="1.89.0"
ishandhanani's avatar
ishandhanani committed
15
ARG CARGO_BUILD_JOBS="16"
16

17
RUN apt-get update -y && \
ishandhanani's avatar
ishandhanani committed
18
19
20
    apt-get install -y \
      cmake meson ninja-build pybind11-dev patchelf net-tools \
      build-essential protobuf-compiler libssl-dev pkg-config \
21
      clang libclang-dev git rapidjson-dev zlib1g-dev jq && \
ishandhanani's avatar
ishandhanani committed
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
    pip install --break-system-packages meson-python wheel build

# Build UCX + NIXL for x86/hopper until its fully tested on GB200
RUN if [ "$MODE" = "hopper" ]; then \
      apt-get install -y --no-install-recommends \
        libibverbs-dev rdma-core ibverbs-utils libibumad-dev \
        libnuma-dev librdmacm-dev ibverbs-providers autoconf libtool && \
      # UCX from source
      rm -rf /opt/hpcx/ucx /usr/local/ucx && \
      cd /usr/local/src && \
      git clone https://github.com/openucx/ucx.git && \
      cd ucx && git checkout $NIXL_UCX_REF && \
      ./autogen.sh && \
      ./configure \
        --prefix=/usr/local/ucx \
        --enable-shared \
        --disable-static \
        --disable-doxygen-doc \
        --enable-optimizations \
        --enable-cma \
        --enable-devel-headers \
        --with-cuda=/usr/local/cuda \
        --with-verbs \
        --with-efa \
        --with-dm \
        --with-gdrcopy=/usr/local \
        --enable-mt && \
      make -j && make install-strip && ldconfig && \
      # NIXL
      git clone https://github.com/ai-dynamo/nixl.git /opt/nixl && \
      cd /opt/nixl && git checkout $NIXL_TAG && \
      pip install --break-system-packages . \
        --config-settings="setup-args=-Ducx_path=/usr/local/ucx"; \
    fi
56
57
58

ENV LD_LIBRARY_PATH=/usr/lib:/usr/local/ucx/lib:$LD_LIBRARY_PATH

ishandhanani's avatar
ishandhanani committed
59
# Dynamo
60
WORKDIR /sgl-workspace
61
RUN git clone https://github.com/ai-dynamo/dynamo.git
62
63
64

ENV RUSTUP_HOME=/usr/local/rustup \
    CARGO_HOME=/usr/local/cargo \
ishandhanani's avatar
ishandhanani committed
65
    PATH=/usr/local/cargo/bin:$PATH
66

ishandhanani's avatar
ishandhanani committed
67
68
RUN wget --tries=3 --waitretry=5 \
    "https://static.rust-lang.org/rustup/archive/1.28.1/${ARCH_ALT}-unknown-linux-gnu/rustup-init" && \
69
    chmod +x rustup-init && \
ishandhanani's avatar
ishandhanani committed
70
71
72
73
74
    ./rustup-init -y \
      --no-modify-path \
      --profile minimal \
      --default-toolchain $RUST_VERSION \
      --default-host ${ARCH_ALT}-unknown-linux-gnu && \
75
76
77
78
    rm rustup-init && \
    chmod -R a+w $RUSTUP_HOME $CARGO_HOME

ARG CARGO_BUILD_JOBS
ishandhanani's avatar
ishandhanani committed
79
80
81
ENV CARGO_BUILD_JOBS=${CARGO_BUILD_JOBS}

RUN cd dynamo && cargo build --release
82

ishandhanani's avatar
ishandhanani committed
83
84
85
86
RUN cd dynamo/lib/bindings/python && \
    pip install --break-system-packages -e . && \
    cd /sgl-workspace/dynamo && \
    pip install --break-system-packages .
87

88
RUN pip install --break-system-packages sglang-router==0.1.9
89

ishandhanani's avatar
ishandhanani committed
90
91
92
RUN wget --tries=3 --waitretry=5 \
      https://github.com/nats-io/nats-server/releases/download/v2.10.28/\
nats-server-v2.10.28-${ARCH}.deb && \
93
    dpkg -i nats-server-v2.10.28-${ARCH}.deb && rm nats-server-v2.10.28-${ARCH}.deb
94

95
ENV ETCD_VERSION="v3.5.21"
ishandhanani's avatar
ishandhanani committed
96
97
98
RUN wget --tries=3 --waitretry=5 \
      https://github.com/etcd-io/etcd/releases/download/${ETCD_VERSION}/\
etcd-${ETCD_VERSION}-linux-${ARCH}.tar.gz -O /tmp/etcd.tar.gz && \
99
    mkdir -p /usr/local/bin/etcd && \
ishandhanani's avatar
ishandhanani committed
100
101
    tar -xzf /tmp/etcd.tar.gz \
        -C /usr/local/bin/etcd --strip-components=1 && \
102
103
    rm /tmp/etcd.tar.gz

ishandhanani's avatar
ishandhanani committed
104
ENV PATH=/usr/local/bin/etcd:$PATH
105

ishandhanani's avatar
ishandhanani committed
106
# GenAI Perf
107
108
RUN apt-get purge -y cmake

ishandhanani's avatar
ishandhanani committed
109
110
111
112
113
114
115
116
117
RUN mkdir /sgl-workspace/cmake_build && \
    cd /sgl-workspace/cmake_build && \
    wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/\
cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz && \
    tar -xzf cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz && \
    mv cmake-${CMAKE_VERSION}-linux-$(uname -m) custom_cmake && \
    rm cmake-${CMAKE_VERSION}-linux-$(uname -m).tar.gz

ENV PATH=/sgl-workspace/cmake_build/custom_cmake/bin:$PATH
118
119
RUN cmake --version

ishandhanani's avatar
ishandhanani committed
120
121
RUN git clone --depth=1 \
      https://github.com/triton-inference-server/perf_analyzer.git && \
122
123
    mkdir perf_analyzer/build && \
    cmake -B perf_analyzer/build -S perf_analyzer && \
ishandhanani's avatar
ishandhanani committed
124
    cmake --build perf_analyzer/build -- -j$(nproc)
125
126
127
128

ENV PATH=/sgl-workspace/perf_analyzer/build/perf_analyzer/src/perf-analyzer-build:$PATH
RUN pip install --break-system-packages genai-perf

ishandhanani's avatar
ishandhanani committed
129
130
# Enable forceful shutdown of inflight requests
ENV SGL_FORCE_SHUTDOWN=1
131

132
WORKDIR /sgl-workspace/dynamo/components/backends/sglang