Dockerfile.sglang-wideep 4.64 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.3-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.90.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
    apt-get install -y \
      cmake meson ninja-build pybind11-dev patchelf net-tools \
20
      build-essential protobuf-compiler libssl-dev pkg-config git \
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
COPY . /sgl-workspace/dynamo
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

90
91
92
93
# Install dependencies
RUN --mount=type=bind,source=./container/deps/requirements.txt,target=/tmp/requirements.txt \
    pip install --break-system-packages --requirement /tmp/requirements.txt

ishandhanani's avatar
ishandhanani committed
94
95
96
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 && \
97
    dpkg -i nats-server-v2.10.28-${ARCH}.deb && rm nats-server-v2.10.28-${ARCH}.deb
98

99
ENV ETCD_VERSION="v3.5.21"
ishandhanani's avatar
ishandhanani committed
100
101
102
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 && \
103
    mkdir -p /usr/local/bin/etcd && \
ishandhanani's avatar
ishandhanani committed
104
105
    tar -xzf /tmp/etcd.tar.gz \
        -C /usr/local/bin/etcd --strip-components=1 && \
106
107
    rm /tmp/etcd.tar.gz

ishandhanani's avatar
ishandhanani committed
108
ENV PATH=/usr/local/bin/etcd:$PATH
109

ishandhanani's avatar
ishandhanani committed
110
# GenAI Perf
111
112
RUN apt-get purge -y cmake

ishandhanani's avatar
ishandhanani committed
113
114
115
116
117
118
119
120
121
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
122
123
RUN cmake --version

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

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

ishandhanani's avatar
ishandhanani committed
133
134
# Enable forceful shutdown of inflight requests
ENV SGL_FORCE_SHUTDOWN=1
135

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