From cb99ba4fc6194e4feffa0fbb22223ab0119e5e36 Mon Sep 17 00:00:00 2001 From: Yineng Zhang Date: Mon, 12 Aug 2024 14:24:06 +0800 Subject: [PATCH] feat: update Dockerfile (#1033) Co-authored-by: vhain --- .github/workflows/release-docker.yml | 40 +++++++++++++-------- docker/Dockerfile | 53 ++++++++++++++++++---------- 2 files changed, 60 insertions(+), 33 deletions(-) diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml index abdaa169e..619b07fe3 100644 --- a/.github/workflows/release-docker.yml +++ b/.github/workflows/release-docker.yml @@ -1,4 +1,4 @@ -name: Release Docker +name: Release Docker Images on: push: branches: @@ -14,25 +14,28 @@ jobs: environment: 'prod' strategy: matrix: - cuda_version: ['12.1.1', '12.4.1'] + cuda_version: ['11.8.0', '12.1.1', '12.4.1'] + build_type: ['all', 'srt'] steps: - name: Delete huge unnecessary tools folder run: rm -rf /opt/hostedtoolcache - name: Checkout repository uses: actions/checkout@v3 - + - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - + - name: Build and Push run: | version=$(cat python/sglang/version.py | cut -d'"' -f2) - - if [ "${{ matrix.cuda_version }}" = "12.1.1" ]; then + + if [ "${{ matrix.cuda_version }}" = "11.8.0" ]; then + cuda_tag="cu118" + elif [ "${{ matrix.cuda_version }}" = "12.1.1" ]; then cuda_tag="cu121" elif [ "${{ matrix.cuda_version }}" = "12.4.1" ]; then cuda_tag="cu124" @@ -40,13 +43,22 @@ jobs: echo "Unsupported CUDA version" exit 1 fi - + tag=v${version}-${cuda_tag} - - docker build . -f docker/Dockerfile --build-arg CUDA_VERSION=${{ matrix.cuda_version }} -t lmsysorg/sglang:${tag} --no-cache - docker push lmsysorg/sglang:${tag} - - if [ "${{ matrix.cuda_version }}" = "12.1.1" ]; then - docker tag lmsysorg/sglang:${tag} lmsysorg/sglang:latest - docker push lmsysorg/sglang:latest + + if [ "${{ matrix.build_type }}" = "all" ]; then + tag_suffix="" + elif [ "${{ matrix.build_type }}" = "srt" ]; then + tag_suffix="-srt" + else + echo "Unsupported build type" + exit 1 + fi + + docker build . -f docker/Dockerfile --build-arg CUDA_VERSION=${{ matrix.cuda_version }} --build-arg BUILD_TYPE=${{ matrix.build_type }} -t lmsysorg/sglang:${tag}${tag_suffix} --no-cache + docker push lmsysorg/sglang:${tag}${tag_suffix} + + if [ "${{ matrix.cuda_version }}" = "12.1.1" ]; then + docker tag lmsysorg/sglang:${tag}${tag_suffix} lmsysorg/sglang:latest${tag_suffix} + docker push lmsysorg/sglang:latest${tag_suffix} fi diff --git a/docker/Dockerfile b/docker/Dockerfile index 9571d71a9..95127b33a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,34 +1,49 @@ ARG CUDA_VERSION=12.1.1 - -FROM nvidia/cuda:${CUDA_VERSION}-devel-ubuntu20.04 - -ARG PYTHON_VERSION=3 - +FROM nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu20.04 +ARG BUILD_TYPE=all ENV DEBIAN_FRONTEND=noninteractive RUN echo 'tzdata tzdata/Areas select America' | debconf-set-selections \ && echo 'tzdata tzdata/Zones/America select Los_Angeles' | debconf-set-selections \ - && apt-get update -y \ - && apt-get install -y ccache software-properties-common \ - && add-apt-repository ppa:deadsnakes/ppa \ - && apt-get update -y \ - && apt-get install -y python${PYTHON_VERSION} python${PYTHON_VERSION}-dev python${PYTHON_VERSION}-venv python${PYTHON_VERSION}-pip \ - && if [ "${PYTHON_VERSION}" != "3" ]; then update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1; fi \ + && apt update -y \ + && apt install software-properties-common -y \ + && add-apt-repository ppa:deadsnakes/ppa -y && apt update \ + && apt install python3.10 -y \ + && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2 \ + && update-alternatives --set python3 /usr/bin/python3.10 && apt install python3.10-distutils -y \ + && apt install curl git sudo -y \ + && curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py && python3 get-pip.py \ && python3 --version \ && python3 -m pip --version \ && rm -rf /var/lib/apt/lists/* \ - && apt-get clean - -RUN apt-get update -y \ - && apt-get install -y git curl sudo + && apt clean WORKDIR /sgl-workspace -RUN pip3 --no-cache-dir install --upgrade pip \ - && pip3 --no-cache-dir install --upgrade setuptools wheel \ +RUN python3 -m pip install --upgrade pip setuptools wheel html5lib six \ && git clone --depth=1 https://github.com/sgl-project/sglang.git \ && cd sglang \ - && pip --no-cache-dir install -e "python[all]" \ - && pip3 --no-cache-dir install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/ + && if [ "$BUILD_TYPE" = "srt" ]; then \ + python3 -m pip --no-cache-dir install -e "python[srt]"; \ + else \ + python3 -m pip --no-cache-dir install -e "python[all]"; \ + fi + +ARG CUDA_VERSION +RUN if [ "$CUDA_VERSION" = "12.1.1" ]; then \ + export CUDA_IDENTIFIER=cu121 && \ + python3 -m pip --no-cache-dir install flashinfer -i https://flashinfer.ai/whl/cu121/torch2.4/; \ + elif [ "$CUDA_VERSION" = "12.4.1" ]; then \ + export CUDA_IDENTIFIER=cu124 && \ + python3 -m pip --no-cache-dir install flashinfer -i https://flashinfer.ai/whl/cu124/torch2.4/; \ + elif [ "$CUDA_VERSION" = "11.8.0" ]; then \ + export CUDA_IDENTIFIER=cu118 && \ + python3 -m pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu118 && \ + python3 -m pip --no-cache-dir install flashinfer -i https://flashinfer.ai/whl/cu118/torch2.4/; \ + else \ + echo "Unsupported CUDA version: $CUDA_VERSION" && exit 1; \ + fi + +RUN python3 -m pip cache purge ENV DEBIAN_FRONTEND=interactive