[ROCm][CI] Adding Rust parity (#47478)
Signed-off-by: Andreas Karatzas <akaratza@amd.com>
Andreas Karatzas committed
Jul 6, 2026 at 17:05 UTC
8484ca5d456acb716b3a6a7f4871709506139d61
3 files changed
+153
-1
.buildkite/scripts/run-rust-frontend-cargo-ci.sh
+6
-1
@@ -8,7 +8,12 @@ if [[ "$MODE" != "style-clippy" && "$MODE" != "test" ]]; then
8
exit 2
9
fi
10
11
-ROOT_DIR="$(git rev-parse --show-toplevel)"
11
+if ROOT_DIR="$(git rev-parse --show-toplevel 2>/dev/null)"; then
12
+ :
13
+else
14
+ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
15
+ ROOT_DIR="$(cd -- "${SCRIPT_DIR}/../.." && pwd -P)"
16
+fi
17
cd "$ROOT_DIR"
18
19
export CARGO_TERM_COLOR="${CARGO_TERM_COLOR:-always}"
.buildkite/test-amd.yaml
+142
@@ -404,6 +404,36 @@ steps:
404
- pytest -v -s transformers_utils
405
- pytest -v -s config
406
407
+#------------------------------------------------------------ mi250 · rust -----------------------------------------------------------#
408
+
409
+- label: Rust Frontend Cargo Style + Clippy # TBD
410
+ timeout_in_minutes: 180
411
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
412
+ agent_pool: mi250_1
413
+ no_gpu: true
414
+ working_dir: "/vllm-workspace"
415
+ source_file_dependencies:
416
+ - rust/
417
+ - rust-toolchain.toml
418
+ - .buildkite/test_areas/rust_frontend_cargo.yaml
419
+ - .buildkite/scripts/run-rust-frontend-cargo-ci.sh
420
+ commands:
421
+ - bash .buildkite/scripts/run-rust-frontend-cargo-ci.sh style-clippy
422
+
423
+- label: Rust Frontend Cargo Tests # TBD
424
+ timeout_in_minutes: 180
425
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx90anightly, amdmi250]
426
+ agent_pool: mi250_1
427
+ no_gpu: true
428
+ working_dir: "/vllm-workspace"
429
+ source_file_dependencies:
430
+ - rust/
431
+ - rust-toolchain.toml
432
+ - .buildkite/test_areas/rust_frontend_cargo.yaml
433
+ - .buildkite/scripts/run-rust-frontend-cargo-ci.sh
434
+ commands:
435
+ - bash .buildkite/scripts/run-rust-frontend-cargo-ci.sh test
436
+
437
#----------------------------------------------------------- mi250 · docker ----------------------------------------------------------#
438
439
- label: Docker Build Metadata (ROCm) # TBD
@@ -1930,6 +1960,118 @@ steps:
1960
- pip install "vllm-gguf-plugin >= 0.0.2"
1961
- pytest -v -s plugins_tests/gguf
1962
1963
+#------------------------------------------------------- mi300 · rust_frontend -------------------------------------------------------#
1964
+
1965
+- label: Rust Frontend OpenAI Coverage # TBD
1966
+ timeout_in_minutes: 180
1967
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx942nightly, amdmi300]
1968
+ agent_pool: mi300_1
1969
+ optional: true
1970
+ working_dir: "/vllm-workspace/tests"
1971
+ source_file_dependencies:
1972
+ - rust/
1973
+ - vllm/benchmarks/
1974
+ - vllm/entrypoints/openai/
1975
+ - vllm/entrypoints/serve/
1976
+ - vllm/v1/sample/
1977
+ - tests/utils.py
1978
+ - tests/benchmarks/test_serve_cli.py
1979
+ - tests/entrypoints/openai/chat_completion/test_chat_completion.py
1980
+ - tests/entrypoints/openai/completion/test_shutdown.py
1981
+ - tests/v1/sample/test_logprobs_e2e.py
1982
+ - vllm/platforms/rocm.py
1983
+ commands:
1984
+ - export VLLM_USE_RUST_FRONTEND=1
1985
+ - export VLLM_WORKER_MULTIPROC_METHOD=spawn
1986
+ - pytest -v -s benchmarks/test_serve_cli.py -k "not insecure and not (test_bench_serve and not test_bench_serve_chat)"
1987
+ - pytest -v -s entrypoints/openai/chat_completion/test_chat_completion.py -k "not test_invalid_json_schema and not test_invalid_regex"
1988
+ - pytest -v -s entrypoints/openai/completion/test_shutdown.py -k "not engine_failure and not test_abort_timeout_exits_quickly"
1989
+ - pytest -v -s v1/sample/test_logprobs_e2e.py -k "test_prompt_logprobs_e2e_server"
1990
+
1991
+- label: Rust Frontend Serve Admin Coverage # TBD
1992
+ timeout_in_minutes: 180
1993
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx942nightly, amdmi300]
1994
+ agent_pool: mi300_1
1995
+ optional: true
1996
+ working_dir: "/vllm-workspace/tests"
1997
+ source_file_dependencies:
1998
+ - rust/
1999
+ - vllm/entrypoints/openai/
2000
+ - vllm/entrypoints/serve/
2001
+ - vllm/v1/engine/
2002
+ - tests/utils.py
2003
+ - tests/entrypoints/serve/disagg/test_serving_tokens.py
2004
+ - tests/entrypoints/serve/instrumentator/test_basic.py
2005
+ - tests/entrypoints/serve/instrumentator/test_metrics.py
2006
+ - vllm/platforms/rocm.py
2007
+ commands:
2008
+ - export VLLM_USE_RUST_FRONTEND=1
2009
+ - export VLLM_WORKER_MULTIPROC_METHOD=spawn
2010
+ - pytest -v -s entrypoints/serve/instrumentator/test_basic.py -k "not show_version and not server_load"
2011
+ - pytest -v -s entrypoints/serve/disagg/test_serving_tokens.py -k "not stream and not lora and not test_generate_logprobs and not stop_string_workflow"
2012
+ - pytest -v -s entrypoints/serve/instrumentator/test_metrics.py -k "text and not show and not run_batch and not test_metrics_counts and not test_metrics_exist"
2013
+
2014
+- label: Rust Frontend Core Correctness # TBD
2015
+ timeout_in_minutes: 180
2016
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx942nightly, amdmi300]
2017
+ agent_pool: mi300_1
2018
+ optional: true
2019
+ working_dir: "/vllm-workspace/tests"
2020
+ source_file_dependencies:
2021
+ - rust/
2022
+ - vllm/entrypoints/openai/
2023
+ - tests/utils.py
2024
+ - tests/entrypoints/openai/correctness/test_lmeval.py
2025
+ - vllm/platforms/rocm.py
2026
+ commands:
2027
+ - export VLLM_USE_RUST_FRONTEND=1
2028
+ - export VLLM_WORKER_MULTIPROC_METHOD=spawn
2029
+ - pytest -s entrypoints/openai/correctness/test_lmeval.py::test_lm_eval_accuracy_v1_engine
2030
+
2031
+- label: Rust Frontend Tool Use # TBD
2032
+ timeout_in_minutes: 180
2033
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx942nightly, amdmi300]
2034
+ agent_pool: mi300_1
2035
+ optional: true
2036
+ working_dir: "/vllm-workspace/tests"
2037
+ source_file_dependencies:
2038
+ - rust/
2039
+ - vllm/entrypoints/openai/
2040
+ - vllm/tool_parsers/
2041
+ - tests/utils.py
2042
+ - tests/tool_use/
2043
+ - vllm/platforms/rocm.py
2044
+ commands:
2045
+ - export VLLM_USE_RUST_FRONTEND=1
2046
+ - export VLLM_WORKER_MULTIPROC_METHOD=spawn
2047
+ - pytest -v -s tool_use --ignore=tool_use/mistral --models llama3.2 -k "not test_response_format_with_tool_choice_required and not test_parallel_tool_calls_false and not test_tool_call_and_choice"
2048
+
2049
+- label: Rust Frontend Distributed # TBD
2050
+ timeout_in_minutes: 180
2051
+ mirror_hardwares: [amdexperimental, amdproduction, amdgfx942nightly, amdmi300]
2052
+ agent_pool: mi300_4
2053
+ num_gpus: 4
2054
+ optional: true
2055
+ working_dir: "/vllm-workspace/tests"
2056
+ source_file_dependencies:
2057
+ - rust/
2058
+ - vllm/distributed/
2059
+ - vllm/engine/
2060
+ - vllm/executor/
2061
+ - vllm/v1/engine/
2062
+ - vllm/v1/worker/
2063
+ - tests/utils.py
2064
+ - tests/v1/distributed/test_external_lb_dp.py
2065
+ - tests/v1/distributed/test_hybrid_lb_dp.py
2066
+ - tests/v1/distributed/test_internal_lb_dp.py
2067
+ - vllm/platforms/rocm.py
2068
+ commands:
2069
+ - export VLLM_USE_RUST_FRONTEND=1
2070
+ - export VLLM_WORKER_MULTIPROC_METHOD=spawn
2071
+ - TP_SIZE=1 DP_SIZE=4 pytest -v -s v1/distributed/test_internal_lb_dp.py -k "not 4 and not server_info"
2072
+ - TP_SIZE=1 DP_SIZE=2 pytest -v -s v1/distributed/test_external_lb_dp.py -k "not 4 and not server_info"
2073
+ - TP_SIZE=1 DP_SIZE=4 pytest -v -s v1/distributed/test_hybrid_lb_dp.py -k "not 4 and not server_info"
2074
+
2075
#------------------------------------------------------- mi300 · quantization --------------------------------------------------------#
2076
2077
- label: Quantization # TBD
docker/Dockerfile.rocm
+5
@@ -252,6 +252,8 @@ COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/docker/docker-bake.hcl /docker/doc
252
COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/docker/docker-bake-rocm.hcl /docker/docker-bake-rocm.hcl
253
COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/.buildkite /.buildkite
254
COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/pyproject.toml /pyproject.toml
255
+COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/rust /rust
256
+COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/rust-toolchain.toml /rust-toolchain.toml
257
COPY --from=build_vllm ${COMMON_WORKDIR}/vllm/vllm/v1 /vllm_v1
258
259
# RIXL/UCX build stages
@@ -543,6 +545,8 @@ COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/docker/docker-bake.h
545
COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/docker/docker-bake-rocm.hcl /docker/docker-bake-rocm.hcl
546
COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/.buildkite /.buildkite
547
COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/pyproject.toml /pyproject.toml
548
+COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/rust /rust
549
+COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/rust-toolchain.toml /rust-toolchain.toml
550
COPY --from=build_vllm_wheel_release ${COMMON_WORKDIR}/vllm/vllm/v1 /vllm_v1
551
552
# -----------------------
@@ -576,6 +580,7 @@ RUN apt-get update -q -y && apt-get install -q -y --no-install-recommends \
580
libibverbs1 \
581
ibverbs-providers \
582
ibverbs-utils \
583
+ unzip \
584
pkg-config ffmpeg libavcodec-dev libavformat-dev libavutil-dev \
585
libswscale-dev libavdevice-dev libavfilter-dev libswresample-dev \
586
&& rm -rf /var/lib/apt/lists/*