Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
3bc70bb
refactor(test): flatten CPU unit tests and centralize import stubs (#…
CalvinXKY Jun 14, 2026
535d5fc
docs: align vLLM docs with current defaults (#240)
aoshen02 Jun 14, 2026
491665d
refactor(weight-sync): use vLLM native /update_weights, remove worker…
aoshen02 Jun 14, 2026
4a550b6
Add Buildkite CI pipeline (CPU jobs + manual-gated GPU suites) and re…
khluu Jun 16, 2026
2864b34
[codex] update docs branding and fix Buildkite CPU tests (#249)
aoshen02 Jun 16, 2026
0d5bfe2
fix(arguments): include DP in TP auto-compute default (#252)
aoshen02 Jun 17, 2026
69d5fd1
[Example] Add tau-bench multi-turn tool-use example (#142)
CalvinXKY Jun 17, 2026
69cb849
[codex] drop stale unit CPU CI and tests (#268)
aoshen02 Jun 18, 2026
1a13bb8
docker: upgrade base to vLLM 0.23.0, remove CUDA 13 build path (#253)
aoshen02 Jun 18, 2026
289ee6d
refactor(vllm_engine): in-process launch + dataclass field introspect…
aoshen02 Jun 20, 2026
9a2427b
docs: fix Qwen3-4B download repo (#276)
aoshen02 Jun 21, 2026
7fc8beb
test: fix CPU unit test failures introduced by PR #264 (#284)
aoshen02 Jun 23, 2026
3af3f3c
fix(data): reuse stored multimodal_inputs in length filter (#257)
Meihan-chen Jun 23, 2026
5f55c33
docker: rename published image from inferactinc/public to vllm/vime (…
aoshen02 Jun 23, 2026
e62d44f
fix(examples/tau-bench): use RunConfig.agent_strategy in TAU_CONFIGS …
CalvinXKY Jun 23, 2026
7198547
scripts: complete slime-exact port of most scripts except for gpt-oss…
aoshen02 Jun 25, 2026
429b3d2
[Doc] Fix broken Qwen3-4B example link in rollout_buffer README (#295)
ajinkyajawale14499 Jun 27, 2026
d16d1dc
sync(slime #2014..#2125): 3-way merge [WIP — 45 conflict files need r…
aoshen02 Jun 29, 2026
d679c75
[Example] Add MemAgent long-context RL example (mem_agent) (#291)
CalvinXKY Jun 30, 2026
7e67282
fix(rollout): abort vLLM rollout via delete-type /abort_requests (#296)
aoshen02 Jul 1, 2026
5532763
[Bugfix][Rollout] Wire prefix_cache_hit_rate through vLLM usage (#303)
aoshen02 Jul 1, 2026
8d1f4cc
fix(docker): /abort_requests abort-all fix + cu13 image variant (#317)
aoshen02 Jul 3, 2026
e70b319
Initial ROCm support for vime (#273)
indianspeedster Jul 6, 2026
789b1bc
[Doc] Fix stale Qwen3-30B-A3B example: restore FP8-inference section …
aoshen02 Jul 8, 2026
2702eef
[Doc] Fix H800→H100 typo in Qwen3-30B-A3B example (#325)
aoshen02 Jul 8, 2026
8b197ff
[Doc] Add Ascend NPU platform tutorial and expand hardware support se…
CalvinXKY Jul 11, 2026
b929921
sync: update vime through slime #2185 (#338)
aoshen02 Jul 11, 2026
36a84ad
revert: sync through slime #2185 (#338)
aoshen02 Jul 12, 2026
edeb3a1
[bugfix] Fix distributed update weights for pipeline parallel (#329)
knlnguyen1802 Jul 13, 2026
8d8f255
weekly sync: update vime through slime #2185 (#343)
aoshen02 Jul 14, 2026
e0ca828
[Bugfix][Rollout] Validate batched RM reward lengths (#313)
BreezyB1n Jul 14, 2026
99a3f2c
feat: sync MTP draft weights online (#351)
aoshen02 Jul 14, 2026
3f0b42b
refactor(rollout): mirror slime router config — cache_aware default +…
aoshen02 Jul 14, 2026
6cefd84
Forward recompute flags to the bridge provider; two hybrid model fixe…
yuchenwang3 Jul 14, 2026
ee16693
docker: bump default CU13 image to vLLM 0.25.1 (#353)
aoshen02 Jul 15, 2026
db6c87d
[Bugfix][Rollout] Fix Geo3K VLM multi-turn rollout (#341)
FeathBow Jul 16, 2026
617da1d
perf: streamline vLLM weight updates (#340)
aoshen02 Jul 16, 2026
93182da
[Bugfix][Rollout] Fix IPv6 vLLM engine and health-check URLs (#357)
ShuoleiWang Jul 16, 2026
f275532
sync missing Slime runtime safeguards (#359)
aoshen02 Jul 16, 2026
5cabf1f
Add on-policy distillation example (Qwen3-8B + Qwen3-32B vLLM teacher…
CalvinXKY Jul 18, 2026
c0ed6d8
ci(rocm): AMD ROCm GPU CI on Buildkite (#356)
indianspeedster Jul 21, 2026
1fc199d
docs: document cache-aware vLLM router support (#371)
aoshen02 Jul 26, 2026
8144096
feat: add vLLM encoder-prefill disaggregation (#370)
Gianthard-cyh Aug 3, 2026
af29411
sync: update from Slime and upgrade to latest vLLM nightly (#386)
aoshen02 Aug 20, 2026
f1d3c6b
docker: split pull-weight patch and drop upstreamed vLLM fixes (#398)
aoshen02 Aug 23, 2026
8ca82e0
docs: surface agent workflows and fix vLLM response parsing (#401)
aoshen02 Aug 27, 2026
0ed9b58
[CI/Build] Run the CPU tests CI silently skips, and guard against new…
natedemoss Aug 29, 2026
dfb2775
[Training] Add Qwen3-Omni multimodal RL support (#378)
CalvinXKY Aug 29, 2026
4d25bff
feat: DSpark speculative decoding draft model training for RL rollout…
CalvinXKY Aug 30, 2026
85ac426
ci(rocm): rename ROCm queue to amd_mi355_vime_rl (#405)
indianspeedster Aug 31, 2026
f1483a0
refactor(npu): establish S0 platformized baseline
Meihan-chen Sep 1, 2026
5a273f7
[Sync] Update to Slime v0.3.2 and vLLM nightly (#402)
aoshen02 Sep 2, 2026
2543862
sync(main): merge S1 through 69cb849b
Meihan-chen Sep 2, 2026
31782f2
sync(main): merge S2 through e0ca8283
Meihan-chen Sep 3, 2026
7d9f977
fix(npu): adapt S2 arguments and VL memory budget
Meihan-chen Sep 3, 2026
4e90cfa
sync(main): merge S3-S4 through 8144096e
Meihan-chen Sep 4, 2026
edea686
fix(npu): adapt S3-S4 to vLLM 0.25.1
Meihan-chen Sep 4, 2026
ce92eff
ci: allow candidate image selection (#411)
aoshen02 Sep 5, 2026
b879eb1
sync(main): merge S5 through 85ac4267
Meihan-chen Sep 7, 2026
f930676
fix(npu): adapt S5 to vLLM 0.27.1
Meihan-chen Sep 7, 2026
e5f7e24
sync(main): merge S6 through ce92eff1
Meihan-chen Sep 8, 2026
4c182d4
fix(npu): adapt S6 to vLLM e6bfe03a
Meihan-chen Sep 8, 2026
9d72be5
sync(ascend): merge S7 through 745d952e
Meihan-chen Sep 9, 2026
7a27808
fix(npu): adapt S7 runtime and Qwen3.5 GDN
Meihan-chen Sep 9, 2026
81ae79d
fix(npu): isolate serving FLA libraries and force spawn
Meihan-chen Sep 9, 2026
46f325c
revert(npu): defer Qwen3.5 support beyond S7
Meihan-chen Sep 9, 2026
e0757f9
test(npu): enable torch_dist ref-load by default for Qwen3-30B
Meihan-chen Sep 9, 2026
95f6309
style(npu): satisfy pre-commit formatting checks
Meihan-chen Sep 9, 2026
1d55086
merge(npu): integrate GLM-4.7-Flash native G1 support
Meihan-chen Sep 10, 2026
edf744e
fix(npu): enable GLM MTP draft updates and graph execution
Meihan-chen Sep 10, 2026
207f5af
merge(ascend): integrate Qwen3.5 recipe follow-up
Meihan-chen Sep 15, 2026
affeab9
fix(npu): align scripts and examples with native runtime
Meihan-chen Sep 15, 2026
22dd660
chore: remove ROCm build assets and document NPU patches
Meihan-chen Sep 15, 2026
a687239
fix(npu): enable GLM MTP smoke test by default
Meihan-chen Sep 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
22 changes: 14 additions & 8 deletions .buildkite/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,18 @@ build (PR and push to `main`):
| Step | Purpose | Queue (machine) |
|---|---|---|
| `pre-commit` | pre-commit gate | `small_cpu_queue_premerge` (r6in.large) |
| `plugin-contracts` | plugin contract tests (19 files) | `medium_cpu_queue_premerge` (r6in.4xlarge) |
| `agent-adapter` | agent adapter tests (3 files) | `small_cpu_queue_premerge` |
| `plugin-contracts` | plugin contracts and CPU tests (27 files) | `medium_cpu_queue_premerge` (r6in.4xlarge) |
| `agent-adapter` | agent adapter tests (4 files) | `small_cpu_queue_premerge` |
| `upstream-sync-cpu` | mechanically synchronized upstream CPU tests | `medium_cpu_queue_premerge` |
| `utils` | utils tests (`pytest tests/utils`) | `medium_cpu_queue_premerge` |

The three test steps depend on the pre-commit gate. Each suite runs its files
The four test steps depend on the pre-commit gate. Each suite runs its files
sequentially inside one step because these queues boot a fresh EC2 instance
per job — a per-file matrix would be mostly boot + pip-install time. All
always-on CPU steps use the standard `python:3.11` image and install their
lightweight dependencies at runtime.
per job — a per-file matrix would be mostly boot + pip-install time.
Most always-on CPU steps use the standard `python:3.11` image and install their
lightweight dependencies at runtime. `upstream-sync-cpu` uses `VIME_CI_IMAGE`
(defaulting to `vllm/vime:latest`) because the synchronized GLM and checkpoint
tests import the image-pinned Megatron stack even though they do not allocate a GPU.

## Creating the pipeline (one-time, Buildkite UI)

Expand Down Expand Up @@ -49,7 +52,7 @@ No secrets are required for these steps (WANDB etc. is GPU-suite only).

The GPU suites are behind a **block step** (`:rocket: Run GPU test suites?`):
click it in the Buildkite UI, multi-select the suites (`short`,
`vllm-config`, `megatron`, `precision`, `ckpt`), and the follow-up step
`vllm-config`, `megatron`, `vime-customized`, `precision`, `ckpt`), and the follow-up step
generates one job per test via [`gpu_suites.py`](./gpu_suites.py) — the same
`gpu_lock_exec.py` + `docker run` invocations used by the GPU jobs, including
the per-test `VIME_TEST_USE_DEEPEP` / `VIME_TEST_USE_FP8_ROLLOUT` /
Expand All @@ -61,12 +64,15 @@ reports a passing commit status even if nobody unblocks the GPU gate.
GPU jobs run on the shared **`mithril-h100-pool`** queue, following the same
pattern vllm-omni uses for it: each job is a Kubernetes pod (agent-stack-k8s
`kubernetes` plugin) on an H100 SXM node, with GPUs allocated via
`nvidia.com/gpu` limits (4 or 8), a memory-backed `/dev/shm`, and the node's
`nvidia.com/gpu` limits (1 to 8), a memory-backed `/dev/shm`, and the node's
`/mnt/hf-cache` mounted as `HF_HOME`. vime tests `hf download` their models at
startup, so a warm HF cache is all they need. `WANDB_API_KEY` is not wired up
yet; runs report without wandb until it's added (e.g. as a k8s secret in the
pod spec).

Set `VIME_CI_IMAGE` to an immutable candidate digest for image-backed jobs;
otherwise they use `vllm/vime:latest`. Do not update `latest` before merge.

## Keeping it in sync

The test lists live in `pipeline.yml` and `gpu_suites.py`; update both together
Expand Down
56 changes: 33 additions & 23 deletions .buildkite/gpu_suites.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,31 +23,16 @@
import subprocess

GPU_QUEUE = "mithril-h100-pool"
CI_IMAGE = "inferactinc/public:vime-latest"
CI_IMAGE = os.environ.get("VIME_CI_IMAGE", "vllm/vime:latest")
HF_CACHE_HOST_PATH = "/mnt/hf-cache"
HF_HOME = "/root/.cache/huggingface"
NODE_INSTANCE_TYPE = "gpu-h100-sxm"

# Known hardware-fit failures on the pool's 80 GB H100s — test-level issues,
# not pipeline ones (PR #239, builds #6/#7):
# * gsm8k_async_short: FIXED — max-tokens-per-gpu reduced 9216→2048 (peak
# 39.6 GB on H200, well within H100 80 GB). Root cause was Qwen3.5 248k
# vocab × 5 logits copies in calculate_log_probs_and_entropy.
# * parallel_check: cross-layout grad-norm invariance (TP4+per-token-loss)
# diverges ~12% on ~11% of rollout data (bimodal: most <1.5%, outliers
# 10-20%). Confirmed same behavior in slime — Megatron FP reduction-order
# non-invariance, not a vime bug.
# soft_fail keeps them running and visible (orange) without failing the build.
SOFT_FAIL_ON_H100 = {
"test_qwen3_0.6B_parallel_check.py",
}

# (test_file, num_gpus, extra_args, env overrides)
SUITES = {
"short": [
("test_qwen3.5_0.8B_gsm8k_async_short.py", 4, "", {}),
("test_qwen3.5_0.8B_gsm8k_short.py", 4, "", {}),
("test_qwen2.5_0.5B_ppo_critic_only_short.py", 4, "", {}),
("test_qwen2.5_0.5B_fully_async_short.py", 4, "", {}),
],
"vllm-config": [
Expand All @@ -57,26 +42,48 @@
("test_vllm_config_mixed_offload_ft.py", 8, "", {}),
],
"megatron": [
("test_full_disk_weight_update.py", 4, "", {}),
("test_quick_start_glm4_9B.py", 8, "", {}),
("test_glm4.7_30B_A3B_pd_mooncake.py", 8, "", {}),
("test_qwen3_30B_A3B.py", 8, "", {"USE_DEEPEP": "1", "USE_FP8_ROLLOUT": "1"}),
(
"test_qwen3_30B_A3B.py",
8,
"",
{"USE_DEEPEP": "1", "USE_FP8_ROLLOUT": "1"},
),
("test_qwen3.6_35B_A3B_pd_mooncake.py", 8, "", {"USE_DEEPEP": "1"}),
("test_qwen3_30B_A3B_r3.py", 8, "", {"USE_DEEPEP": "1", "USE_FP8_ROLLOUT": "1", "ENABLE_EVAL": "0"}),
("test_qwen3_30B_A3B_r3.py", 8, "", {"ENABLE_EVAL": "0"}),
("test_qwen3_4B_ppo.py", 8, "", {}),
("test_qwen3_4B_ppo_disaggregate.py", 8, "", {}),
("test_qwen3_4B_ppo_train_critic_only.py", 8, "", {}),
("test_ppo_logprob_entropy_gpu.py", 2, "", {}),
("test_release_train.py", 4, "", {}),
("test_qwen3_4B_streaming_partial_rollout.py", 8, "", {}),
("test_moonlight_16B_A3B.py", 8, "", {}),
("test_moonlight_16B_A3B_r3.py", 8, "", {"ENABLE_EVAL": "0"}),
("test_mimo_7B_mtp_only_grad.py", 8, "", {}),
("test_qwen2.5_0.5B_debug_rollout_then_train.py", 8, "", {}),
("test_qwen2.5_0.5B_opd_vllm.py", 8, "", {}),
("test_qwen2.5_0.5B_fanout_short.py", 4, "", {}),
("test_qwen2.5_0.5B_debug_train_dump_e2e.py", 8, "", {}),
("test_qwen3_4B_external_pd.py", 6, "", {"VIME_TEST_UPDATE_MODE": "delta"}),
],
"vime-customized": [
("test_qwen2_5_0_5B_non_colocate_pp.py", 4, "", {}),
("test_geo3k_vlm_multi_turn_e2e.py", 1, "", {}),
("test_qwen2.5_vl_3B_ep_disaggregation.py", 3, "", {}),
("test_moonlight_16B_A3B_non_colocate_nccl.py", 8, "", {}),
("test_qwen3_5_0_8B_top_p_cp2.py", 4, "", {}),
],
"precision": [
("test_qwen3_0.6B_parallel_check.py", 8, "", {}),
],
"ckpt": [
("test_qwen3_4B_ckpt.py", 8, "", {}),
("test_qwen3_4B_ckpt.py", 8, "--save-optimizer gpu --load-optimizer gpu", {}),
("test_qwen3_4B_ckpt.py", 8, "--save-optimizer gpu --load-optimizer cpu", {}),
("test_qwen3_4B_ckpt.py", 8, "--save-optimizer cpu --load-optimizer cpu", {}),
("test_qwen3_4B_ckpt.py", 8, "--save-optimizer cpu --load-optimizer gpu", {}),
("test_qwen3_4B_ckpt.py", 8, "--async-save", {}),
],
}
Expand Down Expand Up @@ -107,9 +114,10 @@ def gpu_step(suite: str, test_file: str, num_gpus: int, extra_args: str, env: di
{"name": "VIME_TEST_USE_DEEPEP", "value": vime_flags.get("USE_DEEPEP", "0")},
{"name": "VIME_TEST_USE_FP8_ROLLOUT", "value": vime_flags.get("USE_FP8_ROLLOUT", "0")},
{"name": "VIME_TEST_ENABLE_EVAL", "value": vime_flags.get("ENABLE_EVAL", "1")},
{"name": "NCCL_NVLS_ENABLE", "value": env.get("NCCL_NVLS_ENABLE", "0")},
]
# anything else in env is passed to the pod verbatim (e.g. allocator knobs)
pod_env += [{"name": k, "value": v} for k, v in env.items() if k not in vime_flags]
pod_env += [{"name": k, "value": v} for k, v in env.items() if k not in vime_flags and k != "NCCL_NVLS_ENABLE"]
# Set a stable commit identifier for downstream tooling.
command = "\n".join(
[
Expand All @@ -130,7 +138,12 @@ def gpu_step(suite: str, test_file: str, num_gpus: int, extra_args: str, env: di
"command": command,
"agents": {"queue": GPU_QUEUE},
"timeout_in_minutes": 360,
"retry": {"automatic": [{"exit_status": -1, "limit": 2}]},
"retry": {
"automatic": [
{"exit_status": -1, "limit": 2},
{"exit_status": 1, "limit": 2},
]
},
"plugins": [
{
"kubernetes": {
Expand Down Expand Up @@ -159,9 +172,6 @@ def gpu_step(suite: str, test_file: str, num_gpus: int, extra_args: str, env: di
}
],
}
if test_file in SOFT_FAIL_ON_H100:
step["soft_fail"] = True
step["label"] = ":warning: " + step["label"]
return step


Expand Down
1 change: 0 additions & 1 deletion .buildkite/npu_suites.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
("test_qwen3_4B_npu.py", "npu-8", "", {}),
("test_qwen3_30B_A3B_npu.py", "npu-16", "", {}),
("test_qwen3_vl_8B_npu.py", "npu-8", "", {}),
("test_qwen3.5_35B_A3B_npu.py", "npu-16", "", {}),
("test_glm4.7_30B_A3B_npu.py", "npu-16", "", {}),
],
"nightly": [],
Expand Down
1 change: 0 additions & 1 deletion .buildkite/pipeline-npu-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ steps:
--local context=. \
--local dockerfile=./docker \
--opt filename=Dockerfile.npu \
--opt build-arg:BASE_IMAGE=swr.cn-southwest-2.myhuaweicloud.com/base_image/ascend-ci/vllm-ascend/vllm-ascend \
--opt build-arg:APTMIRROR=http://cache-service.nginx-pypi-cache.svc.cluster.local:8081 \
--opt build-arg:PIP_INDEX_URL=http://cache-service.nginx-pypi-cache.svc.cluster.local/pypi/simple \
--secret id=dockerconfig,src=/home/user/.docker/config.json \
Expand Down
97 changes: 87 additions & 10 deletions .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ steps:
automatic:
- exit_status: -1 # agent lost (fresh instance failed to boot)
limit: 2
- exit_status: 1 # transient package-index failure
limit: 2
- exit_status: 3 # pre-commit environment install failure
limit: 2
command: |
docker run --rm \
-e GIT_CONFIG_PARAMETERS="'safe.directory=/workspace'" \
Expand All @@ -46,6 +50,8 @@ steps:
automatic:
- exit_status: -1
limit: 2
- exit_status: 1
limit: 2
command: |
# GLOO/TP_SOCKET_IFNAME=lo: the torch.distributed tests (e.g.
# test_metric_report_dist) rendezvous over localhost; inside a
Expand All @@ -58,11 +64,13 @@ steps:
python:3.11 bash -c '
set -euo pipefail
pip install -q torch --index-url https://download.pytorch.org/whl/cpu
pip install -q pytest numpy packaging pyyaml omegaconf tqdm httpx requests ray pybase64 pylatexenc sympy aiohttp pillow safetensors transformers cloudpickle
pip install -q pytest numpy packaging pyyaml omegaconf tqdm httpx requests ray pybase64 pylatexenc sympy aiohttp pillow safetensors transformers cloudpickle blake3 xxhash zstandard psutil wandb
pip install -q -e . --no-deps
python tests/test_megatron_argument_validation.py
python tests/test_value_temperature.py
python tests/test_rollout_validation.py
python tests/test_docs_consistency.py
python tests/test_placement_group.py
python tests/test_external_vllm_engines.py
python tests/plugin_contracts/test_plugin_rollout_contracts.py
python tests/plugin_contracts/test_plugin_runtime_hook_contracts.py
python tests/plugin_contracts/test_plugin_path_loading_contracts.py
Expand All @@ -78,6 +86,12 @@ steps:
python tests/test_metric_report_dist.py
python tests/test_loss_cp_invariance.py
python tests/test_sample.py
python tests/test_cispo_loss.py
python tests/test_logprob_response_spans.py
python tests/test_empty_colocated_weight_bucket.py
python tests/test_expert_routing.py
python tests/test_reloadable_process_group_memory_check.py
python tests/test_ppo_logprob_entropy.py
python tests/utils/test_hf_checkpoint_saver.py
'

Expand All @@ -91,19 +105,78 @@ steps:
automatic:
- exit_status: -1
limit: 2
- exit_status: 1
limit: 2
command: |
docker run --rm --shm-size=2g \
-e GIT_CONFIG_PARAMETERS="'safe.directory=/workspace'" \
-v "$$PWD:/workspace" -w /workspace \
python:3.11 bash -c '
set -euo pipefail
pip install -q torch --index-url https://download.pytorch.org/whl/cpu
pip install -q pytest numpy packaging pyyaml omegaconf tqdm httpx requests ray pybase64 pylatexenc sympy aiohttp pillow safetensors transformers cloudpickle
pip install -q pytest numpy packaging pyyaml omegaconf tqdm httpx requests ray pybase64 pylatexenc sympy aiohttp pillow safetensors transformers cloudpickle blake3 xxhash zstandard wandb
pip install -q openai openai-agents anthropic
pip install -q -e . --no-deps
python tests/test_agent_trajectory.py
python tests/test_agent_adapters.py
python tests/test_agent_sdk_adapters.py
python tests/test_agent/test_adapters.py
python tests/test_agent/test_harness.py
python tests/test_agent/test_trajectory_manager_branching.py
python tests/test_agent/test_agent_rollout_cpu.py
'

- label: ":pytest: synchronized upstream CPU tests"
key: upstream-sync-cpu
depends_on: pre-commit
agents:
queue: medium_cpu_queue_premerge
timeout_in_minutes: 45
retry:
automatic:
- exit_status: -1
limit: 2
- exit_status: 1
limit: 2
command: |
docker run --rm --network host --ipc=host \
-e GIT_CONFIG_PARAMETERS="'safe.directory=/workspace'" \
-e GLOO_SOCKET_IFNAME=lo -e TP_SOCKET_IFNAME=lo \
-v "$$PWD:/workspace" -w /workspace \
"$${VIME_CI_IMAGE:-vllm/vime:latest}" bash -lc '
set -euo pipefail
pip install -q -e . --no-deps --break-system-packages
for test_file in \
tests/test_advantage_whiten_cp.py \
tests/test_accelerator.py \
tests/test_block_fp8_zero_block.py \
tests/test_deep_ep_tms_patch.py \
tests/test_discounted_returns.py \
tests/test_eval_config.py \
tests/test_filter_long_prompt.py \
tests/test_fully_async_rollout.py \
tests/test_glm52_layerwise_comparison.py \
tests/test_glm5_indexer_q_norm.py \
tests/test_glm5_indexer_short_context.py \
tests/test_hf_to_megatron.py \
tests/test_layerwise_alignment.py \
tests/test_model_provider_freeze.py \
tests/test_policy_loss.py \
tests/test_ppo_kl_metric.py \
tests/test_process_rollout_data.py \
tests/test_qwen3_5_vl_native.py \
tests/test_qwen3_linear_attention_cu_seqlens.py \
tests/test_read_file_slicing.py \
tests/test_reloadable_process_group_world.py \
tests/test_rollout_data_utils.py \
tests/test_rollout_metrics.py \
tests/test_rollout_sample_hooks.py \
tests/test_vllm_rollout.py \
tests/test_agent/test_sandbox_exec_and_wait.py \
tests/test_stateless_adam.py \
tests/test_tau_bench_token_delta.py \
tests/test_train_data_utils.py \
tests/test_update_weight_factory.py \
tests/observability/test_trace_utils.py; do
python -m pytest "$$test_file"
done
'

- label: ":pytest: utils tests"
Expand All @@ -116,14 +189,16 @@ steps:
automatic:
- exit_status: -1
limit: 2
- exit_status: 1
limit: 2
command: |
docker run --rm --network host --ipc=host \
-e GIT_CONFIG_PARAMETERS="'safe.directory=/workspace'" \
-v "$$PWD:/workspace" -w /workspace \
python:3.11 bash -lc '
set -euo pipefail
pip install -q torch --index-url https://download.pytorch.org/whl/cpu
pip install -q pytest numpy packaging pyyaml omegaconf tqdm httpx requests ray pybase64 pylatexenc sympy aiohttp pillow safetensors transformers cloudpickle
pip install -q pytest numpy packaging pyyaml omegaconf tqdm httpx requests ray pybase64 pylatexenc sympy aiohttp pillow safetensors transformers cloudpickle blake3 xxhash zstandard
pip install -q -e . --no-deps
python -m pytest tests/utils
'
Expand All @@ -143,15 +218,17 @@ steps:
multiple: true
required: true
options:
- label: "run-ci-short — 4 GPU, 4 tests"
- label: "run-ci-short — 4 GPU, 3 tests"
value: short
- label: "run-ci-vllm-config — 8 GPU, 4 tests"
value: vllm-config
- label: "run-ci-megatron — 8 GPU, 14 runs"
- label: "run-ci-megatron — up to 8 GPU, 21 runs"
value: megatron
- label: "run-ci-vime-customized — 1–8 GPU, 6 tests"
value: vime-customized
- label: "run-ci-precision — 8 GPU, 1 test"
value: precision
- label: "run-ci-ckpt — 8 GPU, 2 runs"
- label: "run-ci-ckpt — 8 GPU, 5 runs"
value: ckpt

- label: ":pipeline: upload selected GPU suites"
Expand Down
Loading