@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 8b5fe6eb51
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 14, 05:30 UTC

[CI] Clean up actions: remove helm, publish workflows and improve pr … (#23377)

Simon Mo committed Aug 21, 2025 at 14:29 UTC 8b5fe6eb51464256bfc2a7ee33af228a6ace8aba
3 files changed +40 -211
.github/workflows/lint-and-deploy.yaml deleted
-89
@@ -1,89 +0,0 @@
1 -name: Lint and Deploy Charts
2 -
3 -on: pull_request
4 -
5 -concurrency:
6 - group: ${{ github.workflow }}-${{ github.ref }}
7 - cancel-in-progress: true
8 -
9 -permissions:
10 - contents: read
11 -
12 -jobs:
13 - lint-and-deploy:
14 - runs-on: ubuntu-latest
15 - steps:
16 - - name: Checkout
17 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18 - with:
19 - fetch-depth: 0
20 -
21 - - name: Set up Helm
22 - uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0
23 - with:
24 - version: v3.14.4
25 -
26 - #Python is required because ct lint runs Yamale and yamllint which require Python.
27 - - uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # v5.4.0
28 - with:
29 - python-version: '3.13'
30 -
31 - - name: Set up chart-testing
32 - uses: helm/chart-testing-action@0d28d3144d3a25ea2cc349d6e59901c4ff469b3b # v2.7.0
33 - with:
34 - version: v3.10.1
35 -
36 - - name: Run chart-testing (lint)
37 - run: ct lint --target-branch ${{ github.event.repository.default_branch }} --chart-dirs examples/online_serving/chart-helm --charts examples/online_serving/chart-helm
38 -
39 - - name: Setup minio
40 - run: |
41 - docker network create vllm-net
42 - docker run -d -p 9000:9000 --name minio --net vllm-net \
43 - -e "MINIO_ACCESS_KEY=minioadmin" \
44 - -e "MINIO_SECRET_KEY=minioadmin" \
45 - -v /tmp/data:/data \
46 - -v /tmp/config:/root/.minio \
47 - minio/minio server /data
48 - export AWS_ACCESS_KEY_ID=minioadmin
49 - export AWS_SECRET_ACCESS_KEY=minioadmin
50 - export AWS_EC2_METADATA_DISABLED=true
51 - mkdir opt-125m
52 - cd opt-125m && curl -O -Ls "https://huggingface.co/facebook/opt-125m/resolve/main/{pytorch_model.bin,config.json,generation_config.json,merges.txt,special_tokens_map.json,tokenizer_config.json,vocab.json}" && cd ..
53 - aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://testbucket
54 - aws --endpoint-url http://127.0.0.1:9000/ s3 cp opt-125m/ s3://testbucket/opt-125m --recursive
55 -
56 - - name: Create kind cluster
57 - uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0
58 -
59 - - name: Build the Docker image vllm cpu
60 - run: docker buildx build -f docker/Dockerfile.cpu -t vllm-cpu-env .
61 -
62 - - name: Configuration of docker images, network and namespace for the kind cluster
63 - run: |
64 - docker pull amazon/aws-cli:2.6.4
65 - kind load docker-image amazon/aws-cli:2.6.4 --name chart-testing
66 - kind load docker-image vllm-cpu-env:latest --name chart-testing
67 - docker network connect vllm-net "$(docker ps -aqf "name=chart-testing-control-plane")"
68 - kubectl create ns ns-vllm
69 -
70 - - name: Run chart-testing (install)
71 - run: |
72 - export AWS_ACCESS_KEY_ID=minioadmin
73 - export AWS_SECRET_ACCESS_KEY=minioadmin
74 - sleep 30 && kubectl -n ns-vllm logs -f "$(kubectl -n ns-vllm get pods | awk '/deployment/ {print $1;exit}')" &
75 - helm install --wait --wait-for-jobs --timeout 5m0s --debug --create-namespace --namespace=ns-vllm test-vllm examples/online_serving/chart-helm -f examples/online_serving/chart-helm/values.yaml --set secrets.s3endpoint=http://minio:9000 --set secrets.s3bucketname=testbucket --set secrets.s3accesskeyid=$AWS_ACCESS_KEY_ID --set secrets.s3accesskey=$AWS_SECRET_ACCESS_KEY --set resources.requests.cpu=1 --set resources.requests.memory=4Gi --set resources.limits.cpu=2 --set resources.limits.memory=5Gi --set image.env[0].name=VLLM_CPU_KVCACHE_SPACE --set image.env[1].name=VLLM_LOGGING_LEVEL --set image.env[2].name=VLLM_CPU_CI_ENV --set-string image.env[0].value="1" --set-string image.env[1].value="DEBUG" --set-string image.env[2].value="1" --set-string extraInit.s3modelpath="opt-125m/" --set-string 'resources.limits.nvidia\.com/gpu=0' --set-string 'resources.requests.nvidia\.com/gpu=0' --set-string image.repository="vllm-cpu-env"
76 -
77 - - name: curl test
78 - run: |
79 - kubectl -n ns-vllm port-forward service/test-vllm-service 8001:80 &
80 - sleep 10
81 - CODE="$(curl -v -f --location http://localhost:8001/v1/completions \
82 - --header "Content-Type: application/json" \
83 - --data '{
84 - "model": "opt-125m",
85 - "prompt": "San Francisco is a",
86 - "max_tokens": 7,
87 - "temperature": 0
88 - }'):$CODE"
89 - echo "$CODE"
.github/workflows/publish.yml deleted
-111
@@ -1,111 +0,0 @@
1 -# This workflow will upload a Python Package to Release asset
2 -# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions
3 -
4 -name: Create Release
5 -
6 -on:
7 - push:
8 - tags:
9 - - v*
10 -
11 -# Needed to create release and upload assets
12 -permissions:
13 - contents: write
14 -
15 -jobs:
16 - release:
17 - # Retrieve tag and create release
18 - name: Create Release
19 - runs-on: ubuntu-latest
20 - outputs:
21 - upload_url: ${{ steps.create_release.outputs.upload_url }}
22 - steps:
23 - - name: Checkout
24 - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
25 -
26 - - name: Extract branch info
27 - shell: bash
28 - run: |
29 - echo "release_tag=${GITHUB_REF#refs/*/}" >> "$GITHUB_ENV"
30 -
31 - - name: Create Release
32 - id: create_release
33 - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
34 - env:
35 - RELEASE_TAG: ${{ env.release_tag }}
36 - with:
37 - github-token: "${{ secrets.GITHUB_TOKEN }}"
38 - script: |
39 - const script = require('.github/workflows/scripts/create_release.js')
40 - await script(github, context, core)
41 -
42 - # NOTE(simon): No longer build wheel using GitHub Actions. See buildkite's release workflow.
43 - # wheel:
44 - # name: Build Wheel
45 - # runs-on: ${{ matrix.os }}
46 - # needs: release
47 -
48 - # strategy:
49 - # fail-fast: false
50 - # matrix:
51 - # os: ['ubuntu-20.04']
52 - # python-version: ['3.9', '3.10', '3.11', '3.12']
53 - # pytorch-version: ['2.4.0'] # Must be the most recent version that meets requirements/cuda.txt.
54 - # cuda-version: ['11.8', '12.1']
55 -
56 - # steps:
57 - # - name: Checkout
58 - # uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
59 -
60 - # - name: Setup ccache
61 - # uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14
62 - # with:
63 - # create-symlink: true
64 - # key: ${{ github.job }}-${{ matrix.python-version }}-${{ matrix.cuda-version }}
65 -
66 - # - name: Set up Linux Env
67 - # if: ${{ runner.os == 'Linux' }}
68 - # run: |
69 - # bash -x .github/workflows/scripts/env.sh
70 -
71 - # - name: Set up Python
72 - # uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
73 - # with:
74 - # python-version: ${{ matrix.python-version }}
75 -
76 - # - name: Install CUDA ${{ matrix.cuda-version }}
77 - # run: |
78 - # bash -x .github/workflows/scripts/cuda-install.sh ${{ matrix.cuda-version }} ${{ matrix.os }}
79 -
80 - # - name: Install PyTorch ${{ matrix.pytorch-version }} with CUDA ${{ matrix.cuda-version }}
81 - # run: |
82 - # bash -x .github/workflows/scripts/pytorch-install.sh ${{ matrix.python-version }} ${{ matrix.pytorch-version }} ${{ matrix.cuda-version }}
83 -
84 - # - name: Build wheel
85 - # shell: bash
86 - # env:
87 - # CMAKE_BUILD_TYPE: Release # do not compile with debug symbol to reduce wheel size
88 - # run: |
89 - # bash -x .github/workflows/scripts/build.sh ${{ matrix.python-version }} ${{ matrix.cuda-version }}
90 - # wheel_name=$(find dist -name "*whl" -print0 | xargs -0 -n 1 basename)
91 - # asset_name=${wheel_name//"linux"/"manylinux1"}
92 - # echo "wheel_name=${wheel_name}" >> "$GITHUB_ENV"
93 - # echo "asset_name=${asset_name}" >> "$GITHUB_ENV"
94 -
95 - # - name: Upload Release Asset
96 - # uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5 # v1.0.2
97 - # env:
98 - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
99 - # with:
100 - # upload_url: ${{ needs.release.outputs.upload_url }}
101 - # asset_path: ./dist/${{ env.wheel_name }}
102 - # asset_name: ${{ env.asset_name }}
103 - # asset_content_type: application/*
104 -
105 - # (Danielkinz): This last step will publish the .whl to pypi. Warning: untested
106 - # - name: Publish package
107 - # uses: pypa/gh-action-pypi-publish@release/v1.8
108 - # with:
109 - # repository-url: https://test.pypi.org/legacy/
110 - # password: ${{ secrets.PYPI_API_TOKEN }}
111 - # skip-existing: true
.github/workflows/reminder_comment.yml
+40 -11
@@ -12,16 +12,45 @@ jobs:
12 uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
13 with:
14 script: |
15 - github.rest.issues.createComment({
16 - owner: context.repo.owner,
17 - repo: context.repo.repo,
18 - issue_number: context.issue.number,
19 - body: '👋 Hi! Thank you for contributing to the vLLM project.\n\n' +
20 - '💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in #pr-reviews, coordinate on features in #feat- channels, or join special interest groups in #sig- channels.\n\n' +
21 - 'Just a reminder: PRs would not trigger full CI run by default. Instead, it would only run `fastcheck` CI which starts running only a small and essential subset of CI tests to quickly catch errors. You can run other CI tests on top of those by going to your `fastcheck` build on Buildkite UI (linked in the PR checks section) and unblock them. If you do not have permission to unblock, ping `simon-mo` or `khluu` to add you in our Buildkite org.\n\n' +
22 - 'Once the PR is approved and ready to go, your PR reviewer(s) can run CI to test the changes comprehensively before merging.\n\n' +
23 - 'To run CI, PR reviewers can either: Add `ready` label to the PR or enable auto-merge.\n\n' +
24 - '🚀'
25 - })
15 + try {
16 + // Get the PR author
17 + const prAuthor = context.payload.pull_request.user.login;
18 +
19 + // Check if this is the author's first PR in this repository
20 + const { data: allPRs } = await github.rest.pulls.list({
21 + owner: context.repo.owner,
22 + repo: context.repo.repo,
23 + state: 'all',
24 + per_page: 100
25 + });
26 +
27 + // Filter to find PRs by this author
28 + const authorPRs = allPRs.filter(pr => pr.user.login === prAuthor);
29 +
30 + console.log(`Found ${authorPRs.length} PRs by ${prAuthor}`);
31 +
32 + // Only post comment if this is the first PR (only one PR by this author)
33 + if (authorPRs.length === 1) {
34 + console.log(`Posting welcome comment for first-time contributor: ${prAuthor}`);
35 + await github.rest.issues.createComment({
36 + owner: context.repo.owner,
37 + repo: context.repo.repo,
38 + issue_number: context.issue.number,
39 + body: '👋 Hi! Thank you for contributing to the vLLM project.\n\n' +
40 + '💬 Join our developer Slack at https://slack.vllm.ai to discuss your PR in #pr-reviews, coordinate on features in #feat- channels, or join special interest groups in #sig- channels.\n\n' +
41 + 'Just a reminder: PRs would not trigger full CI run by default. Instead, it would only run `fastcheck` CI which starts running only a small and essential subset of CI tests to quickly catch errors. \n\n' +
42 + 'You ask your reviewers to trigger select CI tests on top of `fastcheck` CI. \n\n' +
43 + 'Once the PR is approved and ready to go, your PR reviewer(s) can run CI to test the changes comprehensively before merging.\n\n' +
44 + 'To run CI, PR reviewers can either: Add `ready` label to the PR or enable auto-merge.\n\n' +
45 + 'If you have any questions, please reach out to us on Slack at https://slack.vllm.ai.\n\n' +
46 + '🚀'
47 + });
48 + } else {
49 + console.log(`Skipping comment for ${prAuthor} - not their first PR (${authorPRs.length} PRs found)`);
50 + }
51 + } catch (error) {
52 + console.error('Error checking PR history or posting comment:', error);
53 + // Don't fail the workflow, just log the error
54 + }
55 env:
56 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}