main
yml 766 lines 20.6 KB
Raw
1 pull_request_rules:
2 - name: label-documentation
3 description: Automatically apply documentation label
4 conditions:
5 - label != stale
6 - -closed
7 - or:
8 - files~=^docs/
9 - files~=^examples/
10 actions:
11 label:
12 add:
13 - documentation
14 comment:
15 message: "Documentation preview: https://vllm--{{number}}.org.readthedocs.build/en/{{number}}/"
16
17 - name: comment-pre-commit-failure
18 description: Comment on PR when pre-commit check fails
19 conditions:
20 - check-failure=pre-commit
21 - -check-cancelled=pre-commit
22 - -closed
23 - -draft
24 - or:
25 - label=ready
26 - label=verified
27 actions:
28 comment:
29 message: |
30 Hi @{{author}}, the pre-commit checks have failed. Please run:
31
32 ```bash
33 uv pip install pre-commit>=4.5.1
34 pre-commit install
35 pre-commit run --all-files
36 ```
37
38 Then, commit the changes and push to your branch.
39
40 For future commits, `pre-commit` will run automatically on changed files before each commit.
41
42 - name: comment-dco-failure
43 description: Comment on PR when DCO check fails
44 conditions:
45 - check-failure=dco
46 - -closed
47 - -draft
48 actions:
49 comment:
50 message: |
51 Hi @{{author}}, the DCO check has failed. Please click on DCO in the Checks section for instructions on how to resolve this.
52
53 - name: label-ci-build
54 description: Automatically apply ci/build label
55 conditions:
56 - label != stale
57 - or:
58 - files~=^\.github/
59 - files~=\.buildkite/
60 - files~=^cmake/
61 - files=CMakeLists.txt
62 - files~=^docker/Dockerfile
63 - files~=^requirements.*\.txt
64 - files=setup.py
65 actions:
66 label:
67 add:
68 - ci/build
69
70 - name: label-cohere
71 description: Automatically apply cohere label
72 conditions:
73 - label != stale
74 - or:
75 - files~=^examples/.*cohere.*\.py
76 - files~=^tests/.*cohere.*\.py
77 - files~=^vllm/model_executor/models/.*cohere.*\.py
78 - files~=^vllm/tool_parsers/.*cohere.*\.py
79 - files~=^vllm/reasoning/.*cohere.*\.py
80 - files~=^vllm/transformers_utils/.*cohere.*\.py
81 - title~=(?i)Cohere
82 actions:
83 label:
84 add:
85 - cohere
86
87 - name: label-deepseek
88 description: Automatically apply deepseek label
89 conditions:
90 - label != stale
91 - or:
92 - files~=^examples/.*deepseek.*\.py
93 - files~=^tests/.*deepseek.*\.py
94 - files~=^vllm/model_executor/models/.*deepseek.*\.py
95 - files~=^vllm/models/deepseek.*/
96 - files~=^vllm/tool_parsers/.*deepseek.*\.py
97 - files~=^vllm/reasoning/.*deepseek.*\.py
98 - files~=^vllm/transformers_utils/.*deepseek.*\.py
99 - title~=(?i)DeepSeek
100 actions:
101 label:
102 add:
103 - deepseek
104
105 - name: label-frontend
106 description: Automatically apply frontend label
107 conditions:
108 - label != stale
109 - files~=^vllm/entrypoints/
110 actions:
111 label:
112 add:
113 - frontend
114
115 - name: label-rust
116 description: Automatically apply rust label
117 conditions:
118 - label != stale
119 - or:
120 - files~=(?i)rust
121 - title~=(?i)rust
122 - title~=(?i)vllm-rs
123 actions:
124 label:
125 add:
126 - rust
127
128 - name: label-llama
129 description: Automatically apply llama label
130 conditions:
131 - label != stale
132 - or:
133 - files~=^examples/.*llama.*\.py
134 - files~=^tests/.*llama.*\.py
135 - files~=^vllm/model_executor/models/.*llama.*\.py
136 - files~=^vllm/tool_parsers/.*llama.*\.py
137 - title~=(?i)llama
138 actions:
139 label:
140 add:
141 - llama
142
143 - name: label-multi-modality
144 description: Automatically apply multi-modality label
145 conditions:
146 - label != stale
147 - or:
148 - files~=^vllm/multimodal/
149 - files~=^tests/multimodal/
150 - files~=^tests/models/multimodal/
151 - files=tests/models/test_vision.py
152 actions:
153 label:
154 add:
155 - multi-modality
156
157 - name: label-mistral
158 description: Automatically apply mistral label
159 conditions:
160 - label != stale
161 - or:
162 - files~=^examples/.*mistral.*\.py
163 - files~=^tests/.*(?:mistral|voxtral|mixtral|pixtral).*\.py
164 - files~=^vllm/model_executor/models/.*(?:mistral|voxtral|mixtral|pixtral).*\.py
165 - files~=^vllm/reasoning/.*mistral.*\.py
166 - files~=^vllm/tool_parsers/.*mistral.*\.py
167 - files~=^vllm/transformers_utils/.*(?:mistral|voxtral|pixtral).*\.py
168 - title~=(?i)(?:mistral|ministral|voxtral|mixtral|pixtral)
169 actions:
170 label:
171 add:
172 - mistral
173
174 - name: label-new-model
175 description: Automatically apply new-model label
176 conditions:
177 - label != stale
178 - or:
179 # A model file is added alongside a registry entry. added-files rather
180 # than files: touching an existing model file is a fix or a refactor,
181 # and a PR that removes a model is not a new one.
182 - and:
183 - added-files~=^vllm/model_executor/models/.*\.py$
184 - files=vllm/model_executor/models/registry.py
185 # A new top-level package under vllm/models/. common/ is shared kernel
186 # code rather than a model, and nested packages belong to a model that
187 # already exists.
188 - added-files~=^vllm/models/(?!common/)[^/]+/__init__\.py$
189 actions:
190 label:
191 add:
192 - new-model
193
194 - name: label-performance
195 description: Automatically apply performance label
196 conditions:
197 - label != stale
198 - or:
199 - files~=^benchmarks/
200 - files~=^vllm/benchmarks/
201 - files~=^tests/benchmarks/
202 - files~=^\.buildkite/performance-benchmarks/
203 actions:
204 label:
205 add:
206 - performance
207
208 - name: label-quantization
209 description: Automatically apply quantization label
210 conditions:
211 - label != stale
212 - or:
213 - files~=^vllm/model_executor/layers/quantization/
214 - title~=(?i)quant
215 actions:
216 label:
217 add:
218 - quantization
219
220 - name: label-qwen
221 description: Automatically apply qwen label
222 conditions:
223 - label != stale
224 - or:
225 - files~=^examples/.*qwen.*\.py
226 - files~=^tests/.*qwen.*\.py
227 - files~=^vllm/model_executor/models/.*qwen.*\.py
228 - files~=^vllm/tool_parsers/.*qwen.*\.py
229 - files~=^vllm/reasoning/.*qwen.*\.py
230 - files~=^vllm/transformers_utils/.*qwen.*\.py
231 - title~=(?i)Qwen
232 actions:
233 label:
234 add:
235 - qwen
236
237 - name: label-gpt-oss
238 description: Automatically apply gpt-oss label
239 conditions:
240 - label != stale
241 - or:
242 - files~=^tests/.*gpt[-_]?oss.*\.py
243 - files~=^vllm/model_executor/models/.*gpt[-_]?oss.*\.py
244 - files~=^vllm/model_executor/layers/.*gpt[-_]?oss.*\.py
245 - files~=^vllm/entrypoints/openai/parser/harmony_utils.py
246 # Harmony rendering now lives in the Rust frontend.
247 - files~=^rust/src/chat/src/.*/harmony/
248 - title~=(?i)gpt[-_]?oss
249 - title~=(?i)harmony
250 actions:
251 label:
252 add:
253 - gpt-oss
254
255 - name: label-kimi
256 description: Automatically apply kimi label
257 conditions:
258 - label != stale
259 - or:
260 - files~=(?i)kimi
261 - title~=(?i)(?:kimi|moonshot)
262 actions:
263 label:
264 add:
265 - kimi
266
267 - name: label-k3
268 description: Automatically apply k3 label (launch triage; retire after ramp-down)
269 conditions:
270 - label != stale
271 - or:
272 - files~=(?i)kimi[-_]?k3
273 - title~=(?i)(?:kimi[-\s]?k3|\bk3\b)
274 actions:
275 label:
276 add:
277 - k3
278
279 - name: label-glm
280 description: Automatically apply glm label
281 conditions:
282 - label != stale
283 - or:
284 # Anchored to the start of the filename so midashenglm.py (an unrelated
285 # model) does not match.
286 - files~=^vllm/model_executor/models/(?:chat)?glm[^/]*\.py
287 - files~=^tests/.*[/_](?:chat)?glm[^/]*\.py
288 - files~=^vllm/tool_parsers/.*glm.*\.py
289 - files~=^vllm/transformers_utils/.*/(?:chat)?glm[^/]*\.py
290 - title~=(?i)\b(?:chat)?glm
291 actions:
292 label:
293 add:
294 - glm
295
296 - name: label-minimax
297 description: Automatically apply minimax label
298 conditions:
299 - label != stale
300 - or:
301 - files~=^vllm/models/minimax.*/
302 - files~=^vllm/model_executor/models/.*minimax.*\.py
303 - files~=^vllm/tool_parsers/.*minimax.*\.py
304 - files~=^tests/.*minimax.*\.py
305 - title~=(?i)minimax
306 actions:
307 label:
308 add:
309 - minimax
310
311 - name: label-inkling
312 description: Automatically apply inkling label
313 conditions:
314 - label != stale
315 - or:
316 - files~=^vllm/models/inkling/
317 - files~=^vllm/tool_parsers/inkling.*\.py
318 - files~=^vllm/renderers/inkling.*\.py
319 - files~=^tests/.*inkling.*\.py
320 - title~=(?i)inkling
321 actions:
322 label:
323 add:
324 - inkling
325
326 - name: label-dsv4
327 description: Automatically apply DSv4 label
328 conditions:
329 - label != stale
330 - or:
331 - files~=^vllm/models/deepseek_v4/
332 # Trailing (?![._]?1) keeps V4.1 out: DeepseekV41ForCausalLM is a
333 # distinct architecture with its own tree and label (DSv4.1).
334 - title~=(?i)(?:\bDSv4\b|deepseek[-\s_]?v4)(?![._]?1)
335 actions:
336 label:
337 add:
338 - DSv4
339
340 - name: label-dsv4-1
341 description: Automatically apply DSv4.1 label
342 conditions:
343 - label != stale
344 - or:
345 # The 4.1 sources use deepseek_v41 and deepseekv41 (tool parsers).
346 - files~=^vllm/models/deepseek_v41/
347 - files~=^vllm/(?:parser|tokenizers|reasoning|transformers_utils/configs)/deepseek_v41.*\.py
348 - files~=^vllm/tool_parsers/deepseekv41.*\.py
349 - files~=^rust/src/(?:chat|parser)/src/.*deepseek_v41
350 - files~=^tests/.*deepseek_?v41
351 - title~=(?i)(?:\bDSv4[._]?1\b|deepseek[-\s_]?v4[._]?1)
352 actions:
353 label:
354 add:
355 - DSv4.1
356
357 - name: label-nvidia
358 description: Automatically apply nvidia label
359 conditions:
360 - label != stale
361 - or:
362 # Exclude requirements/: a dependency bump touching requirements/cuda.txt
363 # is not NVIDIA backend work.
364 - files~=^(?!requirements/).*cuda
365 - files~=cutlass
366 - files~=flashinfer
367 - files~=trtllm
368 - title~=(?i)NVIDIA
369 - title~=(?i)CUDA
370 - title~=(?i)CUTLASS
371 actions:
372 label:
373 add:
374 - nvidia
375
376 - name: label-rocm
377 description: Automatically apply rocm label
378 conditions:
379 - label != stale
380 - or:
381 - files~=^csrc/rocm/
382 - files~=^docker/Dockerfile.rocm
383 - files~=^requirements/rocm.*\.txt
384 - files~=^vllm/model_executor/layers/fused_moe/.*rocm.*\.py
385 - files~=^vllm/v1/attention/backends/rocm.*\.py
386 - files~=^vllm/v1/attention/backends/mla/rocm.*\.py
387 - files~=^vllm/v1/attention/ops/rocm.*\.py
388 - files~=^tests/kernels/.*_rocm.*\.py
389 - files=vllm/platforms/rocm.py
390 - title~=(?i)AMD
391 - title~=(?i)ROCm
392 actions:
393 label:
394 add:
395 - rocm
396
397 - name: label-xpu
398 description: Automatically apply intel-gpu label
399 conditions:
400 - label != stale
401 - or:
402 - files~=^docker/Dockerfile.xpu
403 - files~=^\.buildkite/intel_jobs/
404 - files=.buildkite/ci_config_intel.yaml
405 - files=vllm/model_executor/layers/fused_moe/experts/xpu_moe.py
406 - files=vllm/model_executor/kernels/linear/mixed_precision/xpu.py
407 - files=vllm/model_executor/kernels/linear/mxfp8/xpu.py
408 - files=vllm/model_executor/kernels/linear/scaled_mm/xpu.py
409 - files=vllm/distributed/device_communicators/xpu_communicator.py
410 - files=vllm/v1/attention/backends/mla/xpu_mla_sparse.py
411 - files=vllm/v1/attention/ops/xpu_mla_sparse.py
412 - files=vllm/v1/worker/xpu_worker.py
413 - files=vllm/v1/worker/xpu_model_runner.py
414 - files=vllm/_xpu_ops.py
415 - files~=^vllm/lora/ops/xpu_ops
416 - files=vllm/lora/punica_wrapper/punica_xpu.py
417 - files=vllm/platforms/xpu.py
418 - title~=(?i)Intel gpu
419 - title~=(?i)XPU
420 - title~=(?i)Intel
421 - title~=(?i)BMG
422 actions:
423 label:
424 add:
425 - intel-gpu
426
427 - name: label-cpu
428 description: Automatically apply cpu label
429 conditions:
430 - label != stale
431 - files~=^(?!.*kv_offload)(?!.*cpu_offload).*\bcpu.*
432 actions:
433 label:
434 add:
435 - cpu
436 assign:
437 users:
438 - "fadara01"
439 - "aditew01"
440
441 - name: label-structured-output
442 description: Automatically apply structured-output label
443 conditions:
444 - label != stale
445 - or:
446 - files~=^benchmarks/structured_schemas/
447 - files=benchmarks/benchmark_serving_structured_output.py
448 - files=benchmarks/run_structured_output_benchmark.sh
449 - files=docs/features/structured_outputs.md
450 - files~=^examples/features/structured_outputs/
451 - files~=^tests/v1/structured_output/
452 - files=tests/entrypoints/llm/test_struct_output_generate.py
453 - files~=^vllm/v1/structured_output/
454 actions:
455 label:
456 add:
457 - structured-output
458
459 - name: label-speculative-decoding
460 description: Automatically apply speculative-decoding label
461 conditions:
462 - label != stale
463 - or:
464 - files~=^vllm/v1/spec_decode/
465 # Model Runner V2 keeps its speculators in a separate subtree.
466 - files~=^vllm/v1/worker/gpu/spec_decode/
467 - files~=^tests/v1/spec_decode/
468 - files~=^tests/v1/e2e/spec_decode/
469 - files~=^examples/features/speculative_decoding/
470 - files~=^vllm/model_executor/models/.*eagle.*\.py
471 - files=vllm/model_executor/models/mlp_speculator.py
472 - files~=^vllm/transformers_utils/configs/(eagle|medusa|mlp_speculator)\.py
473 actions:
474 label:
475 add:
476 - speculative-decoding
477
478 # dflash covers the DFlash and DSpark speculative decoding techniques as one
479 # workstream, matching how they are tracked in the sprint board. It is applied
480 # in addition to speculative-decoding, never instead of it.
481 - name: label-dflash
482 description: Automatically apply dflash label
483 conditions:
484 - label != stale
485 - or:
486 - files~=^vllm/v1/spec_decode/dflash\.py
487 - files~=^vllm/v1/worker/gpu/spec_decode/dflash/
488 - files~=^vllm/model_executor/models/.*dflash.*\.py
489 - files~=^tests/.*dflash.*\.py
490 - title~=(?i)dflash
491 - files~=^vllm/v1/worker/gpu/spec_decode/dspark/
492 - files~=^vllm/model_executor/models/.*dspark.*\.py
493 - files~=^vllm/models/deepseek_v4/nvidia/dspark\.py
494 - files~=^vllm/models/deepseek_v4/amd/dspark\.py
495 - files~=^vllm/models/deepseek_v4/xpu/dspark\.py
496 - files~=^vllm/models/kimi_k3/nvidia/dspark_mla\.py
497 - files~=^vllm/transformers_utils/configs/k3_dspark\.py
498 - files~=^tests/.*dspark.*\.py
499 - title~=(?i)dspark
500 actions:
501 label:
502 add:
503 - dflash
504
505 - name: label-mrv2
506 description: Automatically apply mrv2 label
507 conditions:
508 - label != stale
509 - or:
510 # Model Runner V2 subtree. The trailing slash is required: the MRv1
511 # files (gpu_model_runner.py, gpu_worker.py, ...) sit one level up.
512 - files~=^vllm/v1/worker/gpu/
513 - title~=(?i)(?:\bmrv2\b|model[-\s]?runner[-\s]?v2)
514 actions:
515 label:
516 add:
517 - mrv2
518
519 - name: label-tpu
520 description: Automatically apply tpu label
521 # Keep this list in sync with `label-tpu-remove` conditions
522 conditions:
523 - label != stale
524 - or:
525 - files~=tpu.py
526 - files~=_tpu
527 - files~=tpu_
528 - files~=/tpu/
529 actions:
530 label:
531 add:
532 - tpu
533
534 - name: label-tpu-remove
535 description: Automatically remove tpu label
536 # Keep this list in sync with `label-tpu` conditions
537 conditions:
538 - label != stale
539 - and:
540 - -files~=tpu.py
541 - -files~=_tpu
542 - -files~=tpu_
543 - -files~=/tpu/
544 actions:
545 label:
546 remove:
547 - tpu
548
549 - name: label-tool-calling
550 description: Automatically add tool-calling label
551 conditions:
552 - label != stale
553 - or:
554 - files~=^tests/tool_use/
555 - files~=^tests/tool_parsers/
556 - files~=^tests/parser/
557 - files~=^tests/reasoning/
558 - files~=^tests/entrypoints/openai/.*tool.*
559 - files~=^vllm/tool_parsers/
560 - files~=^vllm/parser/
561 - files~=^vllm/reasoning/
562 - files=docs/features/tool_calling.md
563 - files~=^examples/tool_calling/
564 actions:
565 label:
566 add:
567 - tool-calling
568
569 - name: auto-rebase to keep merge candidate within 1 day behind main
570 conditions:
571 - base = main
572 - label=ready
573 - "#approved-reviews-by >= 1"
574 - "#commits-behind >= 100"
575 - "#check-failure = 0"
576 - -closed
577 - -draft
578 - -conflict
579 actions:
580 update: {}
581
582 - name: ping author on conflicts and add 'needs-rebase' label
583 conditions:
584 - label != stale
585 - conflict
586 - -closed
587 actions:
588 label:
589 add:
590 - needs-rebase
591 comment:
592 message: |
593 This pull request has merge conflicts that must be resolved before it can be
594 merged. Please rebase the PR, @{{author}}.
595
596 https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork
597
598 - name: assign reviewer for tensorizer changes
599 conditions:
600 - label != stale
601 - or:
602 - files~=^vllm/model_executor/model_loader/tensorizer.py
603 - files~=^vllm/model_executor/model_loader/tensorizer_loader.py
604 - files~=^tests/entrypoints/openai/completion/test_tensorizer_entrypoint.py
605 - files~=^tests/model_executor/model_loader/tensorizer_loader/
606 actions:
607 assign:
608 users:
609 - "sangstar"
610
611 - name: assign reviewer for modelopt changes
612 conditions:
613 - label != stale
614 - or:
615 - files~=^vllm/model_executor/layers/quantization/modelopt\.py$
616 - files~=^vllm/model_executor/layers/quantization/__init__\.py$
617 - files~=^tests/models/quantization/test_modelopt\.py$
618 - files~=^tests/quantization/test_modelopt\.py$
619 - files~=^tests/models/quantization/test_nvfp4\.py$
620 - files~=^docs/features/quantization/modelopt\.md$
621 actions:
622 assign:
623 users:
624 - "Edwardf0t1"
625
626 - name: remove 'needs-rebase' label when conflict is resolved
627 conditions:
628 - -conflict
629 - -closed
630 actions:
631 label:
632 remove:
633 - needs-rebase
634
635 - name: label-bug
636 description: Automatically apply bug label
637 conditions:
638 - label != stale
639 - or:
640 - title~=(?i)\bbug\b
641 - title~=(?i)\bbugfix\b
642 actions:
643 label:
644 add:
645 - bug
646
647 - name: label-kv-connector
648 description: Automatically apply kv-connector label
649 conditions:
650 - label != stale
651 - or:
652 - files~=^examples/disaggregated/
653 - files~=^tests/v1/kv_connector/
654 - files~=^vllm/distributed/kv_transfer/
655 - title~=(?i)\bP/?D\b
656 - title~=(?i)NIXL
657 - title~=(?i)LMCache
658 actions:
659 label:
660 add:
661 - kv-connector
662
663 - name: label-mooncake
664 description: Automatically apply mooncake label
665 conditions:
666 - label != stale
667 - or:
668 - files~=^vllm/distributed/kv_transfer/kv_connector/v1/mooncake/
669 # Covers the mooncake/ connector dir, mooncake_store_embedding/ and
670 # mooncake_ec_connector.py.
671 - files~=^vllm/distributed/ec_transfer/ec_connector/mooncake
672 - files=vllm/distributed/mooncake_store.py
673 - files~=^tests/v1/kv_connector/.*mooncake
674 - files~=^tests/v1/ec_connector/.*mooncake
675 - files~=^docs/features/mooncake.*\.md
676 - files=.buildkite/test_areas/disaggregated_mooncake.yaml
677 - title~=(?i)mooncake
678 actions:
679 label:
680 add:
681 - mooncake
682 assign:
683 users:
684 - "stmatengss"
685 - "LCAIZJ"
686
687 - name: label-scheduler
688 description: Automatically apply scheduler label
689 conditions:
690 - label != stale
691 - or:
692 - files~=^vllm/v1/core/sched/
693 - files~=^tests/v1/core/test_scheduler.*\.py
694 actions:
695 label:
696 add:
697 - scheduler
698
699 - name: label-kv-cache-manager
700 description: Automatically apply kv-cache-manager label
701 conditions:
702 - label != stale
703 - or:
704 # Scoped to the block/cache allocator in v1/core. KV transfer between
705 # instances is kv-connector, not this.
706 - files~=^vllm/v1/core/(?:kv_cache|block_pool|single_type_kv_cache)
707 - files~=^tests/v1/core/test_(?:kv_cache|single_type_kv_cache|prefix_caching).*\.py
708 actions:
709 label:
710 add:
711 - kv-cache-manager
712
713 - name: label-torch-compile
714 description: Automatically apply torch.compile label
715 conditions:
716 - label != stale
717 - or:
718 - files~=^vllm/compilation/
719 - files~=^tests/compile/
720 - title~=(?i)torch\.compile
721 actions:
722 label:
723 add:
724 - torch.compile
725
726 - name: label-ray
727 description: Automatically apply ray label
728 conditions:
729 - label != stale
730 - or:
731 - files~=^vllm/v1/executor/ray_
732 - files~=^tests/.*ray_.*\.py
733 - title~=(?i)\bray\b
734 actions:
735 label:
736 add:
737 - ray
738
739 - name: label-vllm-ir
740 description: Automatically apply vllm-ir label
741 conditions:
742 - label != stale
743 - or:
744 - files~=^vllm/ir/
745 - files~=^tests/ir/
746 - title~=(?i)vllm[-\s]?ir
747 actions:
748 label:
749 add:
750 - vllm-ir
751
752 - name: label-agents
753 description: Automatically apply agents label
754 conditions:
755 - label != stale
756 - or:
757 - files~=(?:^|/)AGENTS\.md$
758 - files~=^\.agents/
759 - files~=^\.claude/
760 # The [Agents] title tag only: a bare "agents" also matches CI, K8s and
761 # NIXL agents.
762 - title~=(?i)\[agents\]
763 actions:
764 label:
765 add:
766 - agents