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 }}