diff --git a/.github/workflows/build_image.yml b/.github/workflows/build_image.yml new file mode 100644 index 00000000..5e7211ac --- /dev/null +++ b/.github/workflows/build_image.yml @@ -0,0 +1,19 @@ +name: "build" + +on: + pull_request: + branches: + - 'main' + paths: + - '.github/workflows/build_image.yml' + - '.github/workflows/publish_image.yml' + - '.github/workflows/image.yml' + - 'Dockerfile' + - 'vllm_ascend/**' + +jobs: + run-build: + secrets: inherit + uses: ./.github/workflows/image.yml + with: + publish: false diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml new file mode 100644 index 00000000..5a8e6b26 --- /dev/null +++ b/.github/workflows/image.yml @@ -0,0 +1,93 @@ +name: 'image' + +on: + workflow_call: + inputs: + publish: + description: Publish the image or not. + required: false + type: boolean + default: false + +jobs: + + build: + name: image + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Prepare + run: | + REPO_OWNER=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]') + echo "REPO_OWNER=${REPO_OWNER}" >> "$GITHUB_ENV" + + - name: Print + run: | + echo "REPO_OWNER:""${REPO_OWNER}" + + - name: Free up disk space + run: | + # Copy from https://github.com/apache/spark/blob/d6ad7798a9f77b611edb8d9f8648f726fcaa6938/dev/free_disk_space + echo "==================================" + echo "Free up disk space on CI system" + echo "==================================" + + echo "Listing top 100 largest packages (from large to small)" + printf "Installed-Size\tPackage\n" + dpkg-query -Wf '${Installed-Size}\t${Package}\n' | sort -n -r | head -n 100 + df -h + + echo "Removing large packages" + sudo rm -rf /usr/share/dotnet/ + sudo rm -rf /usr/share/php/ + sudo rm -rf /usr/local/graalvm/ + sudo rm -rf /usr/local/.ghcup/ + sudo rm -rf /usr/local/share/powershell + sudo rm -rf /usr/local/share/chromium + sudo rm -rf /usr/local/lib/android + sudo rm -rf /usr/local/lib/node_modules + + sudo rm -rf /opt/az + sudo rm -rf /opt/hostedtoolcache/CodeQL + sudo rm -rf /opt/hostedtoolcache/go + sudo rm -rf /opt/hostedtoolcache/node + + sudo apt-get remove --purge -y '^aspnet.*' + sudo apt-get remove --purge -y '^dotnet-.*' + sudo apt-get remove --purge -y '^llvm-.*' + sudo apt-get remove --purge -y 'php.*' + sudo apt-get remove --purge -y '^mongodb-.*' + sudo apt-get remove --purge -y snapd google-chrome-stable microsoft-edge-stable firefox + sudo apt-get remove --purge -y azure-cli google-cloud-sdk mono-devel powershell libgl1-mesa-dri + sudo apt-get autoremove --purge -y + sudo apt-get clean + + df -h + + - name: Build - Set up QEMU + uses: docker/setup-qemu-action@v2 + # TODO(yikun): remove this after https://github.com/docker/setup-qemu-action/issues/198 resolved + with: + image: tonistiigi/binfmt:qemu-v7.0.0-28 + + - name: Build - Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Publish - Login to GitHub Container Registry + if: ${{ inputs.publish }} + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build - Build image + uses: docker/build-push-action@v3 + with: + platforms: linux/amd64,linux/arm64 + cache-from: type=gha + cache-to: type=gha,mode=max + push: ${{ inputs.publish }} + tags: ghcr.io/${{ env.REPO_OWNER }}/vllm-ascend:dev diff --git a/.github/workflows/publish_image.yml b/.github/workflows/publish_image.yml new file mode 100644 index 00000000..206f1638 --- /dev/null +++ b/.github/workflows/publish_image.yml @@ -0,0 +1,20 @@ +name: "publish" + +on: + # Publish dev image for every commit + push: + branches: + - 'main' + paths: + - '.github/workflows/build_image.yml' + - '.github/workflows/publish_image.yml' + - '.github/workflows/image.yml' + - 'Dockerfile' + - 'vllm_ascend/**' + +jobs: + run-build: + secrets: inherit + uses: ./.github/workflows/image.yml + with: + publish: true diff --git a/Dockerfile b/Dockerfile index 63c8bd68..e806c324 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,13 +15,15 @@ # limitations under the License. # -FROM quay.io/ascend/cann:8.0.rc3.beta1-910b-ubuntu22.04-py3.10 +FROM quay.io/ascend/cann:8.0.0.beta1-910b-ubuntu22.04-py3.10 # Define environments ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update -y && \ - apt-get install -y python3-pip git vim + apt-get install -y python3-pip git vim && \ + rm -rf /var/cache/apt/* && \ + rm -rf /var/lib/apt/lists/* WORKDIR /workspace @@ -35,6 +37,9 @@ RUN git clone --depth 1 $VLLM_REPO /workspace/vllm RUN VLLM_TARGET_DEVICE="empty" python3 -m pip install /workspace/vllm/ # Install vllm-ascend main -RUN python3 -m pip install /workspace/vllm-ascend/ +RUN python3 -m pip install /workspace/vllm-ascend/ -f https://download.pytorch.org/whl/torch/ + +# Install modelscope +RUN python3 -m pip install modelscope CMD ["/bin/bash"]