# Global release test configuration file. # All your release test configuration should go here. Adding release tests here # will automatically enable them in the Buildkite release testing schedules # (unless they have frequency: manual). # Here is an example configuration for reference: #- name: example_test # # Tests with the same group will be grouped in the Buildkite UI # group: Example group # # Provide the working directory which will be uploaded to the cluster # working_dir: example_dir # # # How often to run the tests. # # One of [manual, any, multi, nightly, nightly-3x, weekly]. # # Descriptions of each frequency (that's not immediately obvious): # # - manual: Not run on a schedule, but can be manually run through the buildkite UI. # # - nightly-3x: Run 3 times a week (Monday, Wednesday, Friday). # frequency: weekly # # Owning team. This field will be persisted to the database # team: ml # # # Python version. This optional field determines which Python version to run tests # # on. This must be a string! # python: "3.7" # # # Cluster information # cluster: # # Location of cluster compute, relative to working_dir # cluster_compute: cluster_compute.yaml # # Autosuspend parameter passed to the cluster. # # The cluster will automatically terminate if inactive for this # # many minutes. Defaults to 10 if not set. # autosuspend_mins: 10 # # Optional cloud_id to use instead of the default cloud # cloud_id: cld_12345678 # # # Run configuration for the test # run: # # If you want to wait for nodes to be ready, you can specify this here: # wait_for_nodes: # # Number of nodes # num_nodes: 16 # # Timeout for waiting for nodes. If nodes are not up by then, the # # test will fail. # timeout: 600 # # # Optional prepare script to be run on the cluster before the test script # prepare: python prepare.py # # The prepare command can have a separate timeout # prepare_timeout: 300 # # # Main script to run as the test script # script: python workloads/train_small.py # # Timeout in seconds. After this time the test is considered as failed. # timeout: 600 # # # You can specify smoke test definitions here. If a smoke test is triggered, # # it will deep update the main test configuration with the values provided # # here. Smoke tests will automatically run with IS_SMOKE_TEST=1 as en # # environment variable and receive the --smoke-test flag as a parameter in the # # run script. # smoke_test: # # Smoke tests can have different frequencies. A smoke test is only triggered # # when the regular test is not matched. # frequency: nightly # # Here we adjust the run timeout down and run on less nodes. The test script # # remains the same. # run: # timeout: 300 # wait_for_nodes: # num_nodes: 4 # timeout: 600 # # # After the test finished, this handler (in alerts/) will process the results. # # It can then let the test fail, e.g. if a metric regression is observed. # alert: default ####################### # Baseline test ####################### - name: hello_world python: "3.10" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true cluster_compute: hello_world_compute_config.yaml run: timeout: 1800 num_retries: 3 script: python hello_world.py variations: - __suffix__: aws - __suffix__: gce env: gce cluster: anyscale_sdk_2026: true cluster_compute: hello_world_compute_config_gce.yaml - __suffix__: azure env: azure cluster: anyscale_sdk_2026: true cluster_compute: hello_world_compute_config_azure.yaml - __suffix__: released cluster: ray_version: 2.50.0 - name: hello_world_custom_byod python: "3.10" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true byod: post_build_script: byod_hello_world.sh python_depset: emoji.lock cluster_compute: hello_world_compute_config.yaml run: timeout: 1800 script: python hello_world_emoji.py variations: - __suffix__: aws - __suffix__: gce env: gce cluster: anyscale_sdk_2026: true cluster_compute: hello_world_compute_config_gce.yaml - __suffix__: released cluster: anyscale_sdk_2026: true ray_version: 2.50.0 - name: hello_world_custom_runtime_env python: "3.10" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true byod: runtime_env: - HELLO_WORLD_TEST=1 cluster_compute: hello_world_compute_config.yaml run: timeout: 1800 script: python hello_world.py variations: - __suffix__: aws - name: hello_world_custom_byod_depset_only python: "3.10" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true byod: type: gpu python_depset: emoji.lock cluster_compute: hello_world_compute_config.yaml run: timeout: 1800 script: bash test.sh variations: - __suffix__: aws - name: hello_world_py313 python: "3.13" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true byod: {} cluster_compute: hello_world_compute_config.yaml run: timeout: 1800 num_retries: 3 script: python hello_world.py variations: - __suffix__: aws - name: "hello_world_cu130_py{{python}}" python: "{{python}}" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests matrix: setup: python: ["3.10", "3.11", "3.12", "3.13"] cluster: anyscale_sdk_2026: true byod: type: gpu-cu130 cluster_compute: hello_world_compute_config.yaml run: timeout: 1800 num_retries: 3 script: python hello_world.py ####################### # SSH sanity checks ####################### - name: ssh_sanity_check python: "3.11" team: reef group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true cluster_compute: hello_world_compute_config.yaml run: timeout: 600 script: bash sanity_check_ssh.sh variations: - __suffix__: aws - name: ssh_sanity_check_llm python: "3.12" team: llm group: hello_world frequency: nightly working_dir: hello_world_tests cluster: anyscale_sdk_2026: true byod: type: llm-cu130 # Doesn't need GPUs to run ssh sanity check cluster_compute: hello_world_compute_config.yaml run: timeout: 600 script: bash sanity_check_ssh.sh variations: - __suffix__: aws ####################### # Cluster scaling tests ####################### - name: cluster_tune_scale_up_down python: "3.10" group: Cluster tests working_dir: cluster_tests frequency: nightly team: ml cluster: cluster_compute: cpt_autoscaling_1-3_aws.yaml run: timeout: 3600 script: python workloads/tune_scale_up_down.py wait_for_nodes: num_nodes: 0 variations: - __suffix__: aws cluster: anyscale_sdk_2026: true - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: cpt_autoscaling_1-3_gce.yaml - __suffix__: kuberay env: kuberay frequency: nightly cluster: cluster_compute: cpt_autoscaling_1-3_kuberay.yaml alert: default ######################### # AIR release tests ######################### # Ray Train distributed Torch benchmarks - name: air_benchmark_torch_mnist_gpu_4x4 python: "3.10" group: AIR tests working_dir: air_tests/air_benchmarks frequency: weekly team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_gpu_4x4_aws.yaml run: timeout: 4800 script: RAY_TRAIN_V2_ENABLED=1 python workloads/torch_benchmark.py run --num-runs 3 --num-epochs 120 --num-workers 16 --cpus-per-worker 4 --batch-size 1024 --use-gpu wait_for_nodes: num_nodes: 4 smoke_test: frequency: weekly cluster: anyscale_sdk_2026: true cluster_compute: compute_gpu_2x2_aws.yaml run: timeout: 3600 script: python workloads/torch_benchmark.py run --num-runs 3 --num-epochs 60 --num-workers 2 --cpus-per-worker 4 --batch-size 512 --use-gpu wait_for_nodes: num_nodes: 2 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: compute_gpu_4x4_gce.yaml smoke_test: frequency: manual alert: default - name: air_benchmark_tune_torch_mnist python: "3.10" group: AIR tests working_dir: air_tests/air_benchmarks frequency: nightly team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_cpu_4_aws.yaml run: timeout: 3600 script: RAY_TRAIN_V2_ENABLED=1 python workloads/tune_torch_benchmark.py --num-runs 1 --num-trials 2 --num-workers 2 wait_for_nodes: num_nodes: 4 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: compute_cpu_4_gce.yaml alert: default # Ray Train distributed Tensorflow benchmarks - name: air_benchmark_tensorflow_mnist_gpu_4x4 python: "3.10" group: AIR tests working_dir: air_tests/air_benchmarks # https://github.com/ray-project/ray/issues/46687 frequency: manual team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_gpu_4x4_aws.yaml run: timeout: 5400 script: RAY_TRAIN_V2_ENABLED=1 python workloads/tensorflow_benchmark.py run --num-runs 3 --num-epochs 200 --num-workers 16 --cpus-per-worker 4 --batch-size 1024 --use-gpu wait_for_nodes: num_nodes: 4 smoke_test: frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: compute_gpu_2x2_aws.yaml run: script: python workloads/tensorflow_benchmark.py run --num-runs 3 --num-epochs 60 --num-workers 2 --cpus-per-worker 4 --batch-size 512 --use-gpu wait_for_nodes: num_nodes: 2 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: compute_gpu_4x4_gce.yaml smoke_test: frequency: manual alert: default ####################### # AIR examples ####################### # Test additional CPU nodes for preprocessing. - name: air_example_dreambooth_finetuning python: "3.10" group: AIR examples working_dir: air_examples/dreambooth # https://github.com/ray-project/ray/issues/49847 frequency: manual team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: dreambooth_compute_aws.yaml run: timeout: 1800 script: pip install -Ur dreambooth/requirements.txt && bash dreambooth_run.sh artifact_path: /tmp/artifacts/example_out.jpg # variations: A10G not available on GCE, yet. - name: air_example_dreambooth_finetuning_lora python: "3.10" group: AIR examples working_dir: air_examples/dreambooth # https://github.com/ray-project/ray/issues/49846 frequency: manual team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: dreambooth_compute_aws.yaml run: timeout: 1800 script: pip install -Ur dreambooth/requirements.txt && bash dreambooth_run.sh --lora artifact_path: /tmp/artifacts/example_out.jpg - name: air_example_gptj_deepspeed_fine_tuning python: "3.10" group: AIR examples working_dir: air_examples/gptj_deepspeed_finetuning frequency: manual team: ml cluster: anyscale_sdk_2026: true byod: type: gpu post_build_script: byod_gptj_test.sh cluster_compute: gptj_deepspeed_compute_aws.yaml run: timeout: 4500 script: RAY_TRAIN_V2_ENABLED=1 python test_myst_doc.py --path gptj_deepspeed_fine_tuning.ipynb - name: air_example_dolly_v2_lightning_fsdp_finetuning python: "3.10" group: AIR examples working_dir: air_examples/dolly_v2_lightning_fsdp_finetuning frequency: manual team: ml cluster: anyscale_sdk_2026: true byod: type: gpu post_build_script: byod_dolly_test.sh cluster_compute: dolly_v2_fsdp_compute_aws.yaml run: timeout: 4700 script: RAY_TRAIN_V2_ENABLED=1 python test_myst_doc.py --path lightning-llm-finetuning-7b.ipynb # variations: TODO(jungong): add GCP variation. - name: air_example_vicuna_13b_lightning_deepspeed_finetuning python: "3.10" group: AIR examples working_dir: air_examples/vicuna_13b_lightning_deepspeed_finetuning frequency: manual team: ml cluster: anyscale_sdk_2026: true byod: type: gpu post_build_script: byod_vicuna_test.sh cluster_compute: vicuna_13b_deepspeed_compute_aws.yaml run: timeout: 4700 script: python test_myst_doc.py --path vicuna_13b_lightning_deepspeed_finetune.ipynb ####################### # Tune tests ####################### - name: tune_with_frequent_pausing python: "3.10" group: Tune tests working_dir: tune_tests frequency: nightly-3x team: ml cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_memory_usage_threshold=0.5 - automatic_object_spilling_enabled=0 cluster_compute: frequent_pausing/compute_config_aws.yaml run: timeout: 600 # 10min long_running: true script: RAY_TRAIN_V2_ENABLED=1 python frequent_pausing/script.py variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: frequent_pausing/compute_config_gce.yaml alert: default - name: tune_cloud_long_running_cloud_storage python: "3.10" group: Tune cloud tests working_dir: tune_tests/cloud_tests frequency: weekly team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_aws_1x4.yaml run: # 14 hours timeout: 50400 long_running: true script: RAY_TRAIN_V2_ENABLED=1 python workloads/long_running_cloud_storage.py s3://tune-cloud-tests/long_running_cloud_storage # NOTE: This smoke test is not useful to run because the point of the test # is to be long running. This is just for debugging updates to the test quickly. smoke_test: frequency: manual run: timeout: 600 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: tpl_gce_1x4.yaml run: # 14 hours timeout: 50400 long_running: true script: RAY_TRAIN_V2_ENABLED=1 python workloads/long_running_cloud_storage.py gs://tune-cloud-tests/long_running_cloud_storage wait_for_nodes: num_nodes: 1 alert: long_running_tests ######################## # Tune scalability tests ######################## - name: tune_scalability_bookkeeping_overhead python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: nightly team: ml cluster: cluster_compute: tpl_1x16.yaml run: timeout: 1200 script: python workloads/test_bookkeeping_overhead.py alert: tune_tests variations: - __suffix__: aws cluster: anyscale_sdk_2026: true - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: tpl_gce_1x16.yaml - __suffix__: kuberay env: kuberay frequency: nightly cluster: cluster_compute: kuberay.yaml - name: tune_scalability_durable_trainable python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: nightly team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_16x2.yaml run: timeout: 900 script: python workloads/test_durable_trainable.py --bucket s3://tune-cloud-tests/scalability_durable_trainable wait_for_nodes: num_nodes: 16 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual run: timeout: 900 script: python workloads/test_durable_trainable.py --bucket gs://tune-cloud-tests/scalability_durable_trainable wait_for_nodes: num_nodes: 16 cluster: cluster_compute: tpl_gce_16x2.yaml alert: tune_tests - name: tune_scalability_durable_multifile_checkpoints python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: nightly team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_16x2.yaml run: timeout: 900 script: python workloads/test_durable_multifile_checkpoints.py --bucket s3://tune-cloud-tests/scalability_durable_multifile_checkpoints wait_for_nodes: num_nodes: 16 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual run: timeout: 900 script: python workloads/test_durable_multifile_checkpoints.py --bucket gs://tune-cloud-tests/scalability_durable_multifile_checkpoints wait_for_nodes: num_nodes: 16 cluster: cluster_compute: tpl_gce_16x2.yaml alert: tune_tests - name: tune_scalability_long_running_large_checkpoints python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: weekly team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_1x32_hd.yaml run: timeout: 86400 script: python workloads/test_long_running_large_checkpoints.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: tune_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual cluster: cluster_compute: tpl_gce_1x32_hd.yaml - name: tune_scalability_network_overhead python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: weekly team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_100x2.yaml run: timeout: 750 prepare_timeout: 1200 script: python workloads/test_network_overhead.py wait_for_nodes: num_nodes: 100 alert: tune_tests variations: - __suffix__: aws - __suffix__: smoke-test frequency: nightly cluster: cluster_compute: tpl_20x2.yaml run: timeout: 750 prepare_timeout: 600 script: python workloads/test_network_overhead.py --smoke-test wait_for_nodes: num_nodes: 20 - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: tpl_gce_100x2.yaml - name: tune_scalability_result_throughput_cluster python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: nightly-3x team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_16x64.yaml run: timeout: 600 script: python workloads/test_result_throughput_cluster.py wait_for_nodes: num_nodes: 16 alert: tune_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: tpl_gce_16x64.yaml - name: tune_scalability_result_throughput_single_node python: "3.10" group: Tune scalability tests working_dir: tune_tests/scalability_tests frequency: nightly team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_1x96.yaml run: timeout: 600 script: python workloads/test_result_throughput_single_node.py alert: tune_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: tpl_gce_1x96.yaml ############################ # Tune fault tolerance tests ############################ - name: tune_worker_fault_tolerance python: "3.10" group: Tune fault tolerance tests working_dir: tune_tests/fault_tolerance_tests frequency: nightly-3x team: ml cluster: anyscale_sdk_2026: true cluster_compute: tpl_aws_16x1.yaml run: timeout: 5400 script: python workloads/test_tune_worker_fault_tolerance.py --bucket s3://tune-cloud-tests/worker_fault_tolerance wait_for_nodes: num_nodes: 16 # Disabled until we can kill nodes in GCE # variations: # - __suffix__: aws # - __suffix__: gce # env: gce # frequency: manual # run: # timeout: 5400 # script: python workloads/test_tune_worker_fault_tolerance.py --bucket gs://tune-cloud-tests/worker_fault_tolerance # # wait_for_nodes: # num_nodes: 16 # cluster: # cluster_compute: tpl_gce_16x1.yaml ####################### # Long running tests ####################### - name: long_running_actor_deaths python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1.yaml run: timeout: 86400 script: python workloads/actor_deaths.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual cluster: cluster_compute: tpl_cpu_1_gce.yaml - name: long_running_many_actor_tasks python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1.yaml run: timeout: 86400 script: python workloads/many_actor_tasks.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_1_gce.yaml - name: long_running_many_drivers python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_4.yaml run: timeout: 86400 script: python workloads/many_drivers.py --iteration-num=4000 long_running: true wait_for_nodes: num_nodes: 4 smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_4_gce.yaml - name: long_running_many_tasks python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1.yaml run: timeout: 86400 script: python workloads/many_tasks.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_1_gce.yaml - name: long_running_many_tasks_serialized_ids python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1.yaml run: timeout: 86400 script: python workloads/many_tasks_serialized_ids.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_1_gce.yaml - name: long_running_node_failures python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1.yaml run: timeout: 86400 script: python workloads/node_failures.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_1_gce.yaml - name: long_running_serve python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: serve cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1_large.yaml run: timeout: 86400 script: python workloads/serve.py long_running: true smoke_test: frequency: nightly run: timeout: 3600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_1_gce.yaml - name: long_running_serve_failure python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: serve cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1_c5.yaml run: timeout: 86400 script: python workloads/serve_failure.py long_running: true smoke_test: frequency: nightly run: timeout: 600 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 86400 cluster: cluster_compute: tpl_cpu_1_c5_gce.yaml - name: long_running_many_jobs python: "3.10" group: Long running tests working_dir: long_running_tests frequency: weekly team: serve cluster: anyscale_sdk_2026: true byod: runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: tpl_cpu_1.yaml run: timeout: 86400 script: python workloads/long_running_many_jobs.py --num-clients=1 long_running: true smoke_test: frequency: nightly run: timeout: 1800 alert: long_running_tests variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual smoke_test: frequency: manual run: timeout: 3600 cluster: cluster_compute: tpl_cpu_1_gce.yaml ######################## # Jobs tests ######################## - name: jobs_basic_local_working_dir python: "3.10" group: Jobs tests working_dir: jobs_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_4_xlarge.yaml run: timeout: 600 script: python workloads/jobs_basic.py --working-dir "workloads" wait_for_nodes: num_nodes: 4 alert: default variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: compute_tpl_gce_4_xlarge.yaml - name: jobs_basic_remote_working_dir python: "3.10" group: Jobs tests working_dir: jobs_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_4_xlarge.yaml run: timeout: 600 script: python workloads/jobs_basic.py --working-dir "https://github.com/anyscale/job-services-cuj-examples/archive/refs/heads/main.zip" wait_for_nodes: num_nodes: 4 alert: default variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: compute_tpl_gce_4_xlarge.yaml - name: jobs_remote_multi_node python: "3.10" group: Jobs tests team: serve frequency: nightly working_dir: jobs_tests cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_4_xlarge.yaml run: timeout: 600 script: python workloads/jobs_remote_multi_node.py wait_for_nodes: num_nodes: 4 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: compute_tpl_gce_4_xlarge.yaml - name: jobs_check_cuda_available python: "3.10" group: Jobs tests team: serve frequency: nightly working_dir: jobs_tests cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_gpu_node.yaml run: timeout: 600 script: python workloads/jobs_check_cuda_available.py wait_for_nodes: num_nodes: 2 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: compute_tpl_gce_gpu_node.yaml - __suffix__: py310_cu130 python: "3.10" cluster: byod: type: gpu-cu130 python_depset: gpu_cu130_py3.10.lock cluster_compute: compute_tpl_gpu_node.yaml - __suffix__: py311_cu130 python: "3.11" cluster: byod: type: gpu-cu130 python_depset: gpu_cu130_py3.11.lock cluster_compute: compute_tpl_gpu_node.yaml - __suffix__: py312_cu130 python: "3.12" cluster: byod: type: gpu-cu130 python_depset: gpu_cu130_py3.12.lock cluster_compute: compute_tpl_gpu_node.yaml - __suffix__: py313_cu130 python: "3.13" cluster: byod: type: gpu-cu130 python_depset: gpu_cu130_py3.13.lock cluster_compute: compute_tpl_gpu_node.yaml - name: "jobs_check_cuda_version_cu130_py{{python}}" python: "{{python}}" group: Jobs tests team: serve frequency: nightly working_dir: jobs_tests matrix: setup: python: ["3.10", "3.11", "3.12", "3.13"] cluster: anyscale_sdk_2026: true byod: type: gpu-cu130 python_depset: gpu_cu130_py{{python}}.lock cluster_compute: compute_tpl_gpu_node.yaml run: timeout: 600 script: python workloads/jobs_check_cuda_version.py --expected-cuda-version 13.0 wait_for_nodes: num_nodes: 2 - name: jobs_specify_num_gpus python: "3.10" group: Jobs tests team: serve frequency: nightly working_dir: jobs_tests cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_gpu_worker.yaml run: timeout: 600 script: python workloads/jobs_specify_num_gpus.py --working-dir "workloads" wait_for_nodes: num_nodes: 2 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: compute_tpl_gce_gpu_worker.yaml ######################## # Runtime env tests ######################## - name: runtime_env_rte_many_tasks_actors python: "3.10" group: Runtime env tests working_dir: runtime_env_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: rte_small.yaml run: timeout: 600 script: python workloads/rte_many_tasks_actors.py wait_for_nodes: num_nodes: 4 alert: default variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: rte_gce_small.yaml - name: runtime_env_wheel_urls python: "3.10" group: Runtime env tests working_dir: runtime_env_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: rte_minimal.yaml run: timeout: 9000 script: python workloads/wheel_urls.py wait_for_nodes: num_nodes: 1 alert: default variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: rte_gce_minimal.yaml # It seems like the consensus is that this should be tested in CI, and not in a nightly test. # - name: runtime_env_rte_ray_client # group: Runtime env tests # working_dir: runtime_env_tests # frequency: nightly # team: core # cluster: # cluster_compute: rte_minimal.yaml # run: # timeout: 600 # script: python workloads/rte_ray_client.py # wait_for_nodes: # num_nodes: 1 # alert: default ######################## # Serve tests ######################## - name: pytest_serve_scale_replicas python: "3.10" group: Serve tests working_dir: serve_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true cluster_compute: compute_tpl_single_node_32_cpu.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false script: python workloads/replica_scalability.py alert: default variations: - __suffix__: aws - __suffix__: aws.haproxy cluster: byod: runtime_env: - RAY_SERVE_ENABLE_HA_PROXY=1 - name: pytest_serve_multi_deployment_1k_noop_replica python: "3.10" group: Serve tests working_dir: serve_tests frequency: weekly team: serve cluster: anyscale_sdk_2026: true cluster_compute: compute_tpl_32_cpu.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false script: python workloads/multi_deployment_1k_noop_replica.py alert: default variations: - __suffix__: aws - __suffix__: aws.py312 python: "3.12" - __suffix__: aws.haproxy cluster: byod: runtime_env: - RAY_SERVE_ENABLE_HA_PROXY=1 - __suffix__: gce env: gce frequency: manual cluster: project_id: prj_xqmpk8ps6civt438u1hp5pi88g cloud_id: cld_vy7xqacrvddvbuy95auinvuqmt cluster_compute: compute_tpl_32_cpu_gce.yaml - name: pytest_serve_autoscaling_load_test python: "3.10" group: Serve tests working_dir: serve_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_single_node_32_cpu.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false script: python workloads/autoscaling_load_test.py alert: default variations: - __suffix__: aws - __suffix__: aws.haproxy cluster: byod: runtime_env: - RAY_SERVE_ENABLE_HA_PROXY=1 - name: serve_controller_benchmark_haproxy python: "3.10" group: Serve tests working_dir: serve_tests frequency: weekly team: serve cluster: anyscale_sdk_2026: true byod: runtime_env: # specifically testing haproxy here because with serve # proxy the benchmark profile changes significantly. # Given that haproxy is going to be the path forward, make sense # to use that here. - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DIRECT_INGRESS_MIN_DRAINING_PERIOD_S=0.01 cluster_compute: compute_tpl_8_cpu_autoscaling.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 14400 long_running: false script: python workloads/microbenchmarks.py --run-controller alert: default variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: project_id: prj_xqmpk8ps6civt438u1hp5pi88g cloud_id: cld_vy7xqacrvddvbuy95auinvuqmt cluster_compute: compute_tpl_single_node_gce.yaml - name: pytest_serve_microbenchmarks python: "3.10" group: Serve tests working_dir: serve_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true cluster_compute: compute_tpl_single_node_16_cpu.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false script: python workloads/microbenchmarks.py --run-all alert: default variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: project_id: prj_xqmpk8ps6civt438u1hp5pi88g cloud_id: cld_vy7xqacrvddvbuy95auinvuqmt cluster_compute: compute_tpl_single_node_gce.yaml - name: pytest_serve_throughput_optimized_microbenchmarks python: "3.10" group: Serve tests working_dir: serve_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_SERVE_THROUGHPUT_OPTIMIZED=1 - RAY_SERVE_DIRECT_INGRESS_MIN_DRAINING_PERIOD_S=0.01 - RAY_SERVE_REPLICA_GRPC_MAX_MESSAGE_LENGTH=10500000 cluster_compute: compute_tpl_single_node_16_cpu.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false script: python workloads/microbenchmarks.py --run-all alert: default variations: - __suffix__: aws - __suffix__: aws.haproxy cluster: byod: runtime_env: - RAY_SERVE_THROUGHPUT_OPTIMIZED=1 - RAY_SERVE_DIRECT_INGRESS_MIN_DRAINING_PERIOD_S=0.01 - RAY_SERVE_REPLICA_GRPC_MAX_MESSAGE_LENGTH=10500000 - RAY_SERVE_ENABLE_HA_PROXY=1 run: timeout: 7200 long_running: false # HAProxy is HTTP-only and does not proxy the gRPC server bound by # gRPCOptions(port=9000); --run-grpc would crash with connection refused # under RAY_SERVE_ENABLE_HA_PROXY=1. Run the HAProxy-proxied transports # only. script: >- python workloads/microbenchmarks.py --run-http --run-handle --run-latency --run-throughput --run-streaming - __suffix__: gce env: gce frequency: manual cluster: project_id: prj_xqmpk8ps6civt438u1hp5pi88g cloud_id: cld_vy7xqacrvddvbuy95auinvuqmt cluster_compute: compute_tpl_single_node_gce.yaml - name: pytest_serve_router_benchmark python: "3.10" group: Serve tests working_dir: serve_tests frequency: weekly team: serve cluster: anyscale_sdk_2026: true cluster_compute: compute_tpl_8_cpu_autoscaling.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false # Every variation fully overrides this script: "false" alert: default variations: # Low-latency / high-throughput workload - __suffix__: aws.standard cluster: byod: runtime_env: - RAY_SERVE_RUN_USER_CODE_IN_SEPARATE_THREAD=0 - RAY_SERVE_RUN_ROUTER_IN_SEPARATE_LOOP=0 run: timeout: 7200 long_running: false script: >- python workloads/router_microbenchmark.py --simulated-latency-mean-s 0.01 --simulated-latency-cap-s 0.1 --max-ongoing-requests-child 5 --max-ongoing-requests-parent 5 --max-users-per-task 24 --router-type pow2 # Supply-constrained workload - __suffix__: aws.supply_constraint run: timeout: 7200 long_running: false script: >- python workloads/router_microbenchmark.py --simulated-latency-mean-s 1 --simulated-latency-cap-s 10 --max-ongoing-requests-child 2 --max-ongoing-requests-parent 5 --router-type pow2 --router-type capacity_queue - name: pytest_serve_resnet_benchmark python: "3.10" group: Serve tests working_dir: serve_tests frequency: nightly team: serve cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_tpl_gpu_node.yaml cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 7200 long_running: false script: python workloads/serve_resnet_benchmark.py --gpu-env alert: default variations: - __suffix__: aws - __suffix__: aws.haproxy cluster: byod: runtime_env: - RAY_SERVE_ENABLE_HA_PROXY=1 - __suffix__: gce env: gce frequency: manual cluster: project_id: prj_xqmpk8ps6civt438u1hp5pi88g cloud_id: cld_vy7xqacrvddvbuy95auinvuqmt cluster_compute: compute_tpl_gpu_node_gce.yaml ######################## # Train tests ######################## - name: training_ingest_benchmark-task=image_classification python: "3.10" group: Train tests working_dir: train_tests/benchmark frequency: nightly team: ml cluster: byod: runtime_env: # Enable verbose stats for resource manager - RAY_DATA_DEBUG_RESOURCE_MANAGER=1 # Fail the test if a worker OOMs - RAYTEST_FAIL_ON_WORKER_OOM=1 # 'type: gpu' means: use the 'ray-ml' image. type: gpu anyscale_sdk_2026: true cluster_compute: compute_configs/compute_gpu_4x4_aws.yaml variations: - __suffix__: full_training.parquet run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --image_classification_data_format=parquet - __suffix__: full_training.parquet.preserve_order frequency: weekly run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --image_classification_data_format=parquet --preserve_order=True - __suffix__: full_training.parquet.torch_dataloader frequency: manual run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=torch --num_workers=16 --image_classification_data_format=parquet - __suffix__: skip_training.parquet run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True --image_classification_data_format=parquet - __suffix__: skip_training.parquet.preserve_order frequency: weekly run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True --image_classification_data_format=parquet --preserve_order=True - __suffix__: skip_training.parquet.torch_dataloader frequency: manual run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=torch --num_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True --image_classification_data_format=parquet - __suffix__: skip_training.parquet.slow_consumer run: timeout: 3000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True --image_classification_data_format=parquet --train_step_sleep_s=5.0 --max_train_batches=500 --limit_training_rows=-1 --image_classification_use_1t_dataset=True - __suffix__: skip_training.parquet.fault_tolerance frequency: weekly run: timeout: 2700 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --mock_gpu=True --skip_train_step=True --skip_validation_step=True --num_epochs=5 --max_failures=4 --image_classification_data_format=parquet prepare: python setup_chaos.py --kill-interval 480 --max-to-kill 2 --kill-delay 360 cluster: byod: runtime_env: - RAY_DATA_DEBUG_RESOURCE_MANAGER=1 - RAYTEST_FAIL_ON_WORKER_OOM=0 # Workers are intentionally killed cluster_compute: compute_configs/compute_mock_gpu_4x4_aws.yaml - __suffix__: full_training.s3_url run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --image_classification_data_format=s3_url - __suffix__: skip_training.s3_url run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step True --skip_validation_at_epoch_end True --image_classification_data_format=s3_url - __suffix__: full_training.jpeg run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --dataloader_type=ray_data --num_workers=16 - __suffix__: full_training.jpeg.preserve_order frequency: weekly run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --dataloader_type=ray_data --num_workers=16 --preserve_order=True - __suffix__: full_training.jpeg.torch_dataloader frequency: manual run: timeout: 2000 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --dataloader_type=torch --num_workers=16 --num_torch_workers=16 - __suffix__: skip_training.jpeg run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --dataloader_type=ray_data --num_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True - __suffix__: skip_training.jpeg.preserve_order frequency: weekly run: timeout: 2400 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --dataloader_type=ray_data --num_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True --preserve_order=True - __suffix__: skip_training.jpeg.torch_dataloader frequency: manual run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --dataloader_type=torch --num_workers=16 --num_torch_workers=16 --skip_train_step=True --skip_validation_at_epoch_end=True - __suffix__: skip_training.jpeg.local_fs run: timeout: 1200 script: bash image_classification/jpeg/download_input_data_from_s3.sh && RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --image_classification_local_dataset=True --dataloader_type=ray_data --num_workers=1 --skip_train_step=True --skip_validation_at_epoch_end=True cluster: cluster_compute: compute_configs/compute_gpu_1x1_aws.yaml - __suffix__: skip_training.jpeg.local_fs.preserve_order frequency: manual run: timeout: 1200 script: bash image_classification/jpeg/download_input_data_from_s3.sh && RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --image_classification_local_dataset=True --dataloader_type=ray_data --num_workers=1 --skip_train_step=True --skip_validation_at_epoch_end=True --preserve_order=True cluster: cluster_compute: compute_configs/compute_gpu_1x1_aws.yaml - __suffix__: skip_training.jpeg.local_fs.torch_dataloader frequency: manual run: timeout: 1200 script: bash image_classification/jpeg/download_input_data_from_s3.sh && RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --image_classification_local_dataset=True --dataloader_type=torch --num_workers=1 --num_torch_workers=32 --skip_train_step=True --skip_validation_at_epoch_end=True cluster: cluster_compute: compute_configs/compute_gpu_1x1_aws.yaml - __suffix__: skip_training.jpeg.local_fs_multi_gpus run: timeout: 1200 script: bash image_classification/jpeg/download_input_data_from_s3.sh && RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --image_classification_local_dataset=True --dataloader_type=ray_data --num_workers=4 --skip_train_step=True --skip_validation_at_epoch_end=True cluster: cluster_compute: compute_configs/compute_gpu_1x4_aws.yaml - __suffix__: skip_training.jpeg.local_fs_multi_gpus.preserve_order frequency: manual run: timeout: 1200 script: bash image_classification/jpeg/download_input_data_from_s3.sh && RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --image_classification_local_dataset=True --dataloader_type=ray_data --num_workers=4 --skip_train_step=True --skip_validation_at_epoch_end=True --preserve_order=True cluster: cluster_compute: compute_configs/compute_gpu_1x4_aws.yaml - __suffix__: skip_training.jpeg.local_fs_multi_gpus.torch_dataloader frequency: manual run: timeout: 1200 script: bash image_classification/jpeg/download_input_data_from_s3.sh && RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --image_classification_data_format=jpeg --image_classification_local_dataset=True --dataloader_type=torch --num_workers=4 --num_torch_workers=9 --skip_train_step=True --skip_validation_at_epoch_end=True cluster: cluster_compute: compute_configs/compute_gpu_1x4_aws.yaml - name: training_ingest_benchmark-task=image_classification-heterogenous_fixed_size python: "3.10" group: Train tests working_dir: train_tests/benchmark frequency: nightly team: ml cluster: byod: runtime_env: # Enable verbose stats for resource manager - RAY_DATA_DEBUG_RESOURCE_MANAGER=1 # Fail the test if a worker OOMs - RAYTEST_FAIL_ON_WORKER_OOM=1 # Fail the test if a node dies - RAYTEST_FAIL_ON_DEAD_NODES=1 # 'type: gpu' means: use the 'ray-ml' image. type: gpu anyscale_sdk_2026: true cluster_compute: compute_configs/heterogenous_fixed_size_gpu_4x4_aws.yaml variations: - __suffix__: skip_training.parquet run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step True --skip_validation_at_epoch_end True --image_classification_data_format=parquet - __suffix__: skip_training.s3_url run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step True --skip_validation_at_epoch_end True --image_classification_data_format=s3_url - name: training_ingest_benchmark-task=image_classification-heterogenous_autoscaling python: "3.10" group: Train tests working_dir: train_tests/benchmark frequency: nightly team: ml cluster: byod: runtime_env: # Enable verbose stats for resource manager - RAY_DATA_DEBUG_RESOURCE_MANAGER=1 # Fail the test if a worker OOMs - RAYTEST_FAIL_ON_WORKER_OOM=1 # Fail the test if a node dies - RAYTEST_FAIL_ON_DEAD_NODES=1 # 'type: gpu' means: use the 'ray-ml' image. type: gpu anyscale_sdk_2026: true cluster_compute: compute_configs/heterogenous_autoscaling_gpu_4x4_aws.yaml variations: - __suffix__: skip_training.parquet run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step True --skip_validation_at_epoch_end True --image_classification_data_format=parquet - __suffix__: skip_training.s3_url run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --skip_train_step True --skip_validation_at_epoch_end True --image_classification_data_format=s3_url - name: training_ingest_benchmark-task=recsys python: "3.10" group: Train tests working_dir: train_tests/benchmark # TODO: Keep these manual for now -- there are a still a few issues to resolve. frequency: manual team: ml cluster: byod: runtime_env: # Fail the test if a worker OOMs - RAYTEST_FAIL_ON_WORKER_OOM=1 type: gpu post_build_script: byod_install_torchrec.sh anyscale_sdk_2026: true cluster_compute: compute_configs/compute_gpu_8xA100_aws.yaml variations: - __suffix__: skip_training.mock_dataloader run: timeout: 600 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=recsys --dataloader_type=mock --num_workers=8 --train_batch_size=8192 --num_epochs=1 --skip_train_step=True --skip_validation_at_epoch_end=True - __suffix__: skip_training.ray_data run: timeout: 600 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=recsys --dataloader_type=ray_data --num_workers=8 --train_batch_size=8192 --num_epochs=1 --skip_train_step=True --skip_validation_at_epoch_end=True - __suffix__: full_training.mock_dataloader run: timeout: 600 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=recsys --dataloader_type=mock --num_workers=8 --train_batch_size=8192 --validation_batch_size=16384 --num_epochs=1 - __suffix__: full_training.ray_data run: timeout: 1200 script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=recsys --dataloader_type=ray_data --num_workers=8 --train_batch_size=8192 --validation_batch_size=16384 --num_epochs=1 - name: training_ingest_benchmark-soak_test python: "3.10" group: Train tests working_dir: train_tests/benchmark frequency: weekly team: ml cluster: byod: type: gpu anyscale_sdk_2026: true cluster_compute: compute_configs/compute_gpu_4x4_cpu_4_aws.yaml run: timeout: 43200 long_running: true script: RAY_TRAIN_V2_ENABLED=1 python train_benchmark.py --task=image_classification --dataloader_type=ray_data --num_workers=16 --image_classification_data_format=parquet --num_epochs=50 - name: train_multinode_persistence python: "3.10" group: Train tests working_dir: train_tests/multinode_persistence frequency: nightly team: ml cluster: anyscale_sdk_2026: true byod: post_build_script: byod_train_persistence_test.sh cluster_compute: compute_aws.yaml run: timeout: 3000 script: pytest -v test_persistence.py -s wait_for_nodes: num_nodes: 4 variations: - __suffix__: aws_v1 - __suffix__: aws_v2 run: script: RAY_TRAIN_V2_ENABLED=1 pytest -v test_persistence.py -s - __suffix__: gce_v1 env: gce frequency: manual cluster: cluster_compute: compute_gce.yaml - __suffix__: gce_v2 env: gce frequency: manual cluster: cluster_compute: compute_gce.yaml run: script: RAY_TRAIN_V2_ENABLED=1 pytest -v test_persistence.py -s alert: default - name: train_async_checkpointing_validation_benchmark python: "3.10" group: Train tests working_dir: train_tests/async_checkpointing_validation_benchmark frequency: nightly team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_aws.yaml run: timeout: 10800 script: RAY_TRAIN_V2_ENABLED=1 python test_async_checkpointing_validation_benchmark.py wait_for_nodes: num_nodes: 2 alert: default - name: train_colocate_trainer python: "3.10" group: Train tests working_dir: train_tests/colocate_trainer # Ray Train V2 doesn't support colocation. # TODO: Decide whether to remove this test or re-enable it if we add support again. frequency: manual team: ml cluster: anyscale_sdk_2026: true cluster_compute: compute_aws.yaml run: timeout: 3000 script: pytest -v test_colocate_trainer.py -s wait_for_nodes: num_nodes: 4 alert: default - name: torch_local_mode python: "3.10" group: Train tests working_dir: train_tests/local_mode frequency: nightly team: ml cluster: byod: type: gpu anyscale_sdk_2026: true cluster_compute: compute_gpu_2x4_aws.yaml run: timeout: 1800 script: python torch_local_mode_launcher.py # Reference: how to run a release test on the torchft Ray ML image variant. # The custom BYOD image is the core Ray CUDA image (py3.13) with the torchft ML # dependency lock (release/ray_release/byod/ml_torchft_py3.13.lock, generated by # ci/raydepsets/configs/release_ml_torchft_tests.depsets.yaml) installed on top. # Setting `python_depset` is enough: the BYOD build automatically runs # `uv pip install --system --no-deps -r python_depset.lock`, so no # post_build_script is needed to install the deps. - name: torchft_hello_world python: "3.13" group: Train tests team: ml frequency: manual working_dir: train_tests/torchft cluster: anyscale_sdk_2026: true byod: type: cu123 python_depset: ml_torchft_py3.13.lock cluster_compute: compute_aws.yaml run: timeout: 1800 script: python torchft_hello_world.py - name: torch_lightning python: "3.10" group: Train tests working_dir: train_tests/pytorch_lightning frequency: nightly team: ml cluster: anyscale_sdk_2026: true byod: type: gpu post_build_script: byod_pytorch_lightning_test.sh cluster_compute: compute_aws.yaml run: timeout: 1800 script: RAY_TRAIN_V2_ENABLED=1 python test_lightning.py - name: huggingface_transformers python: "3.10" group: Train tests working_dir: train_tests/huggingface_transformers frequency: nightly team: ml cluster: anyscale_sdk_2026: true byod: type: gpu post_build_script: byod_huggingface_transformers_test.sh cluster_compute: compute_aws.yaml run: timeout: 1800 script: RAY_TRAIN_V2_ENABLED=1 python test_huggingface_transformers.py - name: huggingface_accelerate python: "3.10" group: Train tests working_dir: train_tests/huggingface_accelerate frequency: nightly team: ml cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: compute_aws.yaml run: timeout: 1800 script: RAY_TRAIN_V2_ENABLED=1 python test_huggingface_accelerate.py - name: "{{framework}}_train_batch_inference_benchmark_{{size}}" python: "3.10" group: Train tests working_dir: train_tests/xgboost_lightgbm matrix: setup: framework: [xgboost, lightgbm] size: [10G, 100G] frequency: nightly-3x team: ml cluster: byod: type: gpu anyscale_sdk_2026: true cluster_compute: compute_aws_{{size}}.yaml run: timeout: 1800 script: RAY_TRAIN_V2_ENABLED=1 python train_batch_inference_benchmark.py "{{framework}}" --size={{size}} smoke_test: frequency: manual run: timeout: 1800 alert: default - name: train_elastic_e2e_with_node_killing python: "3.10" group: Train tests working_dir: train_tests/elastic_training frequency: weekly team: ml cluster: byod: type: gpu anyscale_sdk_2026: true cluster_compute: compute_gpu_aws.yaml run: timeout: 4800 script: RAY_TRAIN_V2_ENABLED=1 python torch_elastic_e2e.py run --num-epochs 60 wait_for_nodes: num_nodes: 1 variations: - __suffix__: aws alert: default - name: elastic_benchmark python: "3.10" group: Train tests working_dir: train_tests/benchmark frequency: weekly team: ml cluster: byod: type: gpu anyscale_sdk_2026: true cluster_compute: compute_configs/compute_gpu_8x4_aws.yaml run: timeout: 7200 script: RAY_TRAIN_V2_ENABLED=1 python -m elastic_training.elastic_e2e --task="image_classification" --image_classification_data_format="parquet" --dataloader_type=ray_data --checkpoint_every_n_steps=100 --min_workers=8 --max_workers=32 --num_epochs=4 wait_for_nodes: num_nodes: 1 variations: - __suffix__: aws alert: default ############### # RLlib tests # ############### # ----------------- # RLlib - APPO test # ----------------- - name: rllib_learning_tests_pong_appo_torch python: "3.10" group: RLlib tests working_dir: rllib_tests frequency: nightly team: rllib cluster: anyscale_sdk_2026: true byod: type: gpu post_build_script: byod_rllib.sh runtime_env: - RLLIB_TEST_NO_JAX_IMPORT=1 cluster_compute: 1gpu_16cpus.yaml run: timeout: 1500 # expected 1000 seconds script: python example_algorithms/appo/pong_appo.py --num-learners=1 --num-env-runners=12 --as-release-test ######################## # Core Nightly Tests ######################## - name: shuffle_100gb python: "3.10" group: core-multi-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: shuffle/shuffle_compute_multi.yaml run: timeout: 3000 script: python shuffle/shuffle_test.py --num-partitions=200 --partition-size=500e6 wait_for_nodes: num_nodes: 4 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: shuffle/shuffle_compute_multi_gce.yaml - name: stress_test_placement_group python: "3.10" group: core-multi-test working_dir: nightly_tests env: aws_perf frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/placement_group_tests_compute.yaml run: timeout: 7200 script: python stress_tests/test_placement_group.py variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/placement_group_tests_compute_gce.yaml - name: autoscaling_shuffle_1tb_1000_partitions python: "3.10" group: core-multi-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: shuffle/shuffle_compute_autoscaling.yaml run: timeout: 4000 script: python shuffle/shuffle_test.py --num-partitions=1000 --partition-size=1e9 --no-streaming variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: shuffle/shuffle_compute_autoscaling_gce.yaml - name: microbenchmark python: "3.10" group: core-daily-test team: core frequency: nightly env: aws_perf working_dir: microbenchmark cluster: anyscale_sdk_2026: true cluster_compute: tpl_64.yaml run: timeout: 1800 script: OMP_NUM_THREADS=64 RAY_ADDRESS=local python run_microbenchmark.py variations: - __suffix__: aws repeated_run: 5 - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: tpl_64_gce.yaml - __suffix__: aws.py312 frequency: weekly python: "3.12" - name: compiled_graphs python: "3.10" group: core-daily-test team: core frequency: manual working_dir: microbenchmark cluster: anyscale_sdk_2026: true cluster_compute: tpl_64.yaml run: timeout: 1800 script: OMP_NUM_THREADS=64 RAY_ADDRESS=local python run_microbenchmark.py --experimental - name: compiled_graphs_GPU python: "3.10" group: core-daily-test team: core frequency: manual working_dir: microbenchmark cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: experimental/compute_t4_gpu.yaml run: timeout: 1800 script: python experimental/compiled_graph_gpu_microbenchmark.py - name: compiled_graphs_GPU_multinode python: "3.10" group: core-daily-test team: core frequency: manual working_dir: microbenchmark cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: experimental/compute_gpu_2x1_aws.yaml run: timeout: 1800 script: python experimental/compiled_graph_gpu_microbenchmark.py --distributed - name: "compiled_graphs_GPU_cu130_py{{python}}" python: "{{python}}" group: core-daily-test team: core frequency: manual working_dir: microbenchmark matrix: setup: python: ["3.10", "3.11", "3.12", "3.13"] cluster: anyscale_sdk_2026: true byod: type: gpu-cu130 python_depset: gpu_cu130_py{{python}}.lock cluster_compute: experimental/compute_l4_gpu.yaml run: timeout: 1800 script: python experimental/compiled_graph_gpu_microbenchmark.py - name: "compiled_graphs_GPU_multinode_cu130_py{{python}}" python: "{{python}}" group: core-daily-test team: core frequency: manual working_dir: microbenchmark matrix: setup: python: ["3.10", "3.11", "3.12", "3.13"] cluster: anyscale_sdk_2026: true byod: type: gpu-cu130 python_depset: gpu_cu130_py{{python}}.lock cluster_compute: experimental/compute_l4_gpu_2x1_aws.yaml run: timeout: 1800 script: python experimental/compiled_graph_gpu_microbenchmark.py --distributed - name: rdt_single_node_T4_microbenchmark python: "3.10" group: core-daily-test team: core frequency: nightly working_dir: microbenchmark cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: experimental/compute_t4_gpu.yaml run: timeout: 1800 # NIXL currently only works on T4's for <100mb tensors so not enabling. script: python experimental/rdt_single_node_microbenchmark.py - name: rdt_single_node_A100_microbenchmark python: "3.12" group: core-daily-test team: core frequency: weekly working_dir: microbenchmark cluster: anyscale_sdk_2026: true byod: type: llm-cu130 # llm image already has nixl post_build_script: byod_llm_pin_cupy_cuda12x.sh # match cupy-cuda12x to ray-llm base lock (BYOD testdeps can float major) runtime_env: # env vars for nixl - UCX_TLS=all - UCX_NET_DEVICES=all cluster_compute: experimental/compute_a100_gpu.yaml run: timeout: 1800 script: python experimental/rdt_single_node_microbenchmark.py --enable_10gb --enable_nixl # TODO(dayshah): Add multi-node benchmarks with actual hardware RDMA support # - name: rdt_GPU_multinode # python: "3.10" # group: core-daily-test # team: core # frequency: nightly # working_dir: microbenchmark # cluster: # byod: # type: gpu # cluster_compute: experimental/compute_gpu_2x1_aws.yaml # run: # timeout: 1800 # script: python experimental/rdt_microbenchmark.py --distributed - name: benchmark_worker_startup python: "3.10" group: core-daily-test team: core frequency: nightly working_dir: benchmark-worker-startup cluster: anyscale_sdk_2026: true byod: type: gpu cluster_compute: only_head_node_1gpu_64cpu.yaml run: timeout: 7200 script: python benchmark_worker_startup.py --num_cpus_in_cluster 64 --num_gpus_in_cluster 64 --num_tasks_or_actors_per_run 64 --num_measurements_per_configuration 5 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: only_head_node_1gpu_64cpu_gce.yaml - name: dask_on_ray_100gb_sort group: core-daily-test working_dir: nightly_tests frequency: manual # was nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: dask_on_ray/dask_on_ray_sort_compute_template.yaml run: timeout: 7200 script: python dask_on_ray/dask_on_ray_sort.py --nbytes 100_000_000_000 --npartitions 200 --num-nodes 1 --ray --data-dir /tmp/ray --file-path /tmp/ray variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: dask_on_ray/dask_on_ray_sort_compute_template_gce.yaml - name: stress_test_state_api_scale python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_MAX_LIMIT_FROM_API_SERVER=1000000000 - RAY_MAX_LIMIT_FROM_DATA_SOURCE=1000000000 cluster_compute: stress_tests/stress_tests_compute_large.yaml run: timeout: 4200 script: python stress_tests/test_state_api_scale.py wait_for_nodes: num_nodes: 7 smoke_test: frequency: nightly cluster: anyscale_sdk_2026: true app_config: stress_tests/state_api_app_config.yaml cluster_compute: stress_tests/smoke_test_compute.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 5 script: python stress_tests/test_state_api_scale.py --smoke-test variations: - __suffix__: aws - __suffix__: aws.py312 frequency: manual python: "3.12" smoke_test: frequency: nightly-3x - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/stress_tests_compute_large_gce.yaml smoke_test: frequency: manual cluster: cluster_compute: stress_tests/smoke_test_compute_gce.yaml - name: shuffle_20gb_with_state_api python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_MAX_LIMIT_FROM_API_SERVER=1000000000 - RAY_MAX_LIMIT_FROM_DATA_SOURCE=1000000000 cluster_compute: shuffle/shuffle_compute_single.yaml run: timeout: 1000 script: python stress_tests/test_state_api_with_other_tests.py nightly_tests/shuffle/shuffle_test.py --test-args="--num-partitions=100 --partition-size=200e6" variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: shuffle/shuffle_compute_single_gce.yaml - name: stress_test_many_tasks python: "3.10" group: core-daily-test working_dir: nightly_tests env: aws_perf frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/stress_tests_compute.yaml run: timeout: 14400 wait_for_nodes: num_nodes: 101 script: python stress_tests/test_many_tasks.py smoke_test: frequency: nightly cluster: anyscale_sdk_2026: true app_config: stress_tests/stress_tests_app_config.yaml cluster_compute: stress_tests/smoke_test_compute.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 5 script: python stress_tests/test_many_tasks.py --num-nodes=4 --smoke-test variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/stress_tests_compute_gce.yaml smoke_test: frequency: manual cluster: cluster_compute: stress_tests/smoke_test_compute_gce.yaml - name: stress_test_dead_actors python: "3.10" group: core-daily-test working_dir: nightly_tests env: aws_perf frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/stress_tests_compute.yaml run: timeout: 7200 wait_for_nodes: num_nodes: 101 script: python stress_tests/test_dead_actors.py smoke_test: frequency: nightly cluster: anyscale_sdk_2026: true app_config: stress_tests/stress_tests_app_config.yaml cluster_compute: stress_tests/smoke_test_compute.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 5 script: python stress_tests/test_dead_actors.py --num-nodes=4 --num-parents=3 --num-children=3 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/stress_tests_compute_gce.yaml smoke_test: frequency: manual cluster: cluster_compute: stress_tests/smoke_test_compute_gce.yaml # The full test is not stable, so run the smoke test only. # See https://github.com/ray-project/ray/issues/23244. - name: threaded_actors_stress_test python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/smoke_test_compute.yaml run: timeout: 3600 script: python stress_tests/test_threaded_actors.py --test-runtime 1800 --kill-interval_s 30 wait_for_nodes: num_nodes: 5 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/smoke_test_compute_gce.yaml # - name: threaded_actors_stress_test # group: core-daily-test # working_dir: nightly_tests # # frequency: nightly # team: core # cluster: # cluster_compute: stress_tests/stress_test_threaded_actor_compute.yaml # # run: # timeout: 7200 # script: python stress_tests/test_threaded_actors.py --test-runtime 3600 --kill-interval_s # 60 # # wait_for_nodes: # num_nodes: 201 # timeout: 600 # # smoke_test: # frequency: nightly # cluster: # app_config: stress_tests/stress_tests_app_config.yaml # cluster_compute: stress_tests/smoke_test_compute.yaml # # run: # timeout: 3600 # script: python stress_tests/test_threaded_actors.py --test-runtime 1800 --kill-interval_s # 30 # # wait_for_nodes: # num_nodes: 5 # timeout: 600 - name: stress_test_many_runtime_envs python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/smoke_test_compute.yaml run: timeout: 14400 wait_for_nodes: num_nodes: 5 script: python stress_tests/test_many_runtime_envs.py --num_runtime_envs=100 --num_tasks=10000 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/smoke_test_compute_gce.yaml smoke_test: frequency: manual - name: single_node_oom python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: # Lower the memory usage threshold at which the Ray memory monitor will kill # running tasks so that it does not compete with the system OOM killer. - RAY_memory_usage_threshold=0.7 cluster_compute: stress_tests/stress_tests_single_node_oom_compute.yaml run: # The script parameters are tuned to run for ~30min. timeout: 3600 # The memory allocated per task is tuned along with the `RAY_memory_usage_threshold` setting above # to trigger the Ray memory monitor to kick in before the Ray worker cgroup OOMs. script: python stress_tests/test_parallel_tasks_memory_pressure.py --num-tasks 64 --mem-pct-per-task .5 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: stress_tests/stress_tests_single_node_oom_compute_gce.yaml - name: dask_on_ray_1tb_sort group: core-daily-test working_dir: nightly_tests frequency: manual # was nightly-3x team: core cluster: anyscale_sdk_2026: true cluster_compute: dask_on_ray/1tb_sort_compute.yaml run: timeout: 7200 script: python dask_on_ray/dask_on_ray_sort.py --nbytes 1_000_000_000_000 --npartitions 1000 --num-nodes 31 --ray --data-dir /tmp/ray --s3-bucket core-nightly-test wait_for_nodes: num_nodes: 32 - name: many_nodes_actor_test_on_v2 python: "3.10" group: core-daily-test working_dir: benchmarks frequency: nightly-3x team: core cluster: anyscale_sdk_2026: true cluster_compute: distributed/many_nodes_tests/compute_config.yaml run: timeout: 3600 # 2cpus per node x 1000 nodes / 0.2 cpus per actor = 10k # 2cpus per node x 2000 nodes / 0.2 cpus per actor = 20k script: python distributed/many_nodes_tests/actor_test.py --no-wait --cpus-per-actor=0.2 --total-actors 10000 20000 wait_for_nodes: num_nodes: 500 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: distributed/many_nodes_tests/compute_config_gce.yaml #- name: many_nodes_multi_master_test # group: core-daily-test # working_dir: nightly_tests # # frequency: nightly-3x # team: core # cluster: # cluster_compute: many_nodes_tests/compute_config.yaml # # run: # timeout: 7200 # script: python many_nodes_tests/multi_master_test.py # wait_for_nodes: # num_nodes: 251 # - name: pg_autoscaling_regression_test python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: placement_group_tests/compute.yaml run: timeout: 1200 script: python placement_group_tests/pg_run.py variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: placement_group_tests/compute_gce.yaml - name: placement_group_performance_test python: "3.10" group: core-daily-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: placement_group_tests/pg_perf_test_compute.yaml run: timeout: 1200 script: python placement_group_tests/placement_group_performance_test.py wait_for_nodes: num_nodes: 5 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: placement_group_tests/pg_perf_test_compute_gce.yaml ######################### # Core Scalability Tests ######################### - name: single_node python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core env: aws_perf cluster: byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: single_node.yaml anyscale_sdk_2026: true run: timeout: 12000 prepare: sleep 0 script: python single_node/test_single_node.py variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: single_node_gce.yaml - name: object_store python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: object_store.yaml run: timeout: 3600 script: python object_store/test_object_store.py wait_for_nodes: num_nodes: 50 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: object_store_gce.yaml - name: callback_throughput python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: object_store/callback_throughput.yaml run: timeout: 600 script: python object_store/test_callback_throughput.py wait_for_nodes: num_nodes: 11 variations: - __suffix__: aws - name: small_objects python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: object_store/small_objects.yaml run: timeout: 3600 script: python object_store/test_small_objects.py wait_for_nodes: num_nodes: 5 variations: - __suffix__: aws - name: large_objects python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: object_store/large_objects.yaml run: timeout: 3600 script: python object_store/test_large_objects.py wait_for_nodes: num_nodes: 10 variations: - __suffix__: aws - name: many_actors python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly-3x team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: distributed.yaml run: timeout: 3600 script: python distributed/test_many_actors.py wait_for_nodes: num_nodes: 65 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: distributed_gce.yaml - name: many_actors_smoke_test python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: distributed_smoke_test.yaml run: timeout: 3600 script: SMOKE_TEST=1 python distributed/test_many_actors.py wait_for_nodes: num_nodes: 2 - name: many_tasks python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: distributed.yaml run: timeout: 3600 script: python distributed/test_many_tasks.py --num-tasks=10000 wait_for_nodes: num_nodes: 65 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: distributed_gce.yaml - name: many_pgs python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly-3x team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: distributed.yaml run: timeout: 3600 script: python distributed/test_many_pgs.py wait_for_nodes: num_nodes: 65 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: anyscale_sdk_2026: true cluster_compute: distributed_gce.yaml - name: many_pgs_smoke_test python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: distributed_smoke_test.yaml run: timeout: 3600 script: SMOKE_TEST=1 python distributed/test_many_pgs.py wait_for_nodes: num_nodes: 2 - name: many_nodes python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly-3x team: core env: aws_perf cluster: anyscale_sdk_2026: true byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: many_nodes.yaml run: timeout: 3600 script: python distributed/test_many_tasks.py --num-tasks=1000 wait_for_nodes: num_nodes: 250 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: many_nodes_gce.yaml - name: scheduling_test_many_0s_tasks_many_nodes python: "3.10" group: core-scalability-test working_dir: benchmarks frequency: nightly team: core cluster: byod: runtime_env: - LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so cluster_compute: scheduling.yaml anyscale_sdk_2026: true run: timeout: 3600 script: python distributed/test_scheduling.py --total-num-task=1984000 --num-cpu-per-task=1 --task-duration-s=0 --total-num-actors=32 --num-actors-per-nodes=1 wait_for_nodes: num_nodes: 32 variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: scheduling_gce.yaml # - name: scheduling_test_many_5s_tasks_single_node # group: core-scalability-test # working_dir: benchmarks # frequency: nightly # team: core # cluster: # cluster_compute: scheduling.yaml # run: # timeout: 3600 # script: python distributed/test_scheduling.py --total-num-task=1984000 --num-cpu-per-task=1 # --task-duration-s=5 --total-num-actors=1 --num-actors-per-nodes=1 # wait_for_nodes: # num_nodes: 32 # timeout: 600 # - name: scheduling_test_many_5s_tasks_many_nodes # group: core-scalability-test # working_dir: benchmarks # frequency: nightly # team: core # cluster: # cluster_compute: scheduling.yaml # run: # timeout: 3600 # script: python distributed/test_scheduling.py --total-num-task=1984000 --num-cpu-per-task=1 # --task-duration-s=5 --total-num-actors=32 --num-actors-per-nodes=1 # wait_for_nodes: # num_nodes: 32 # timeout: 600 ################## # Core Chaos tests ################## - name: chaos_many_tasks_baseline python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 script: python chaos_test/test_chaos.py --workload=tasks --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_many_tasks_kill_raylet python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start script: python chaos_test/test_chaos.py --workload=tasks variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_many_tasks_terminate_instance python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start --chaos TerminateEC2Instance script: python chaos_test/test_chaos.py --workload=tasks variations: - __suffix__: aws - name: chaos_many_tasks_iptable_failure_injection python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_health_check_period_ms=10000 - RAY_health_check_timeout_ms=100000 - RAY_health_check_failure_threshold=10 - RAY_gcs_rpc_server_connect_timeout_s=60 cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 script: > python simulate_cross_az_network_failure.py --network-failure-interval 60 --network-failure-duration 5 --command python chaos_test/test_chaos.py --workload=tasks --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_many_actors_baseline python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 4200 wait_for_nodes: num_nodes: 10 script: python chaos_test/test_chaos.py --workload=actors --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_many_actors_kill_raylet python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 4200 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start script: python chaos_test/test_chaos.py --workload=actors variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_many_actors_terminate_instance python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 4200 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start --chaos TerminateEC2Instance script: python chaos_test/test_chaos.py --workload=actors variations: - __suffix__: aws - name: chaos_many_actors_iptable_failure_injection python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_health_check_period_ms=10000 - RAY_health_check_timeout_ms=100000 - RAY_health_check_failure_threshold=10 - RAY_gcs_rpc_server_connect_timeout_s=60 cluster_compute: chaos_test/compute_template.yaml run: timeout: 4200 wait_for_nodes: num_nodes: 10 script: > python simulate_cross_az_network_failure.py --network-failure-interval 60 --network-failure-duration 5 --command python chaos_test/test_chaos.py --workload=actors --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_streaming_generator_baseline python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 script: python chaos_test/test_chaos.py --workload=streaming --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_streaming_generator_kill_raylet python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start --max-to-kill 10 script: python chaos_test/test_chaos.py --workload=streaming variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_streaming_generator_terminate_instance python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start --chaos TerminateEC2Instance --max-to-kill 10 script: python chaos_test/test_chaos.py --workload=streaming variations: - __suffix__: aws - name: chaos_streaming_generator_iptable_failure_injection python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_health_check_period_ms=10000 - RAY_health_check_timeout_ms=100000 - RAY_health_check_failure_threshold=10 - RAY_gcs_rpc_server_connect_timeout_s=60 cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 script: > python simulate_cross_az_network_failure.py --network-failure-interval 60 --network-failure-duration 5 --command python chaos_test/test_chaos.py --workload=streaming --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_object_ref_borrowing_baseline python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 script: python chaos_test/test_chaos.py --workload=borrowing --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_object_ref_borrowing_kill_raylet python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start script: python chaos_test/test_chaos.py --workload=borrowing variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml - name: chaos_object_ref_borrowing_terminate_instance python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 prepare: python setup_chaos.py --no-start --chaos TerminateEC2Instance script: python chaos_test/test_chaos.py --workload=borrowing variations: - __suffix__: aws - name: chaos_object_ref_borrowing_iptable_failure_injection python: "3.10" group: core-nightly-test working_dir: nightly_tests frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: runtime_env: - RAY_health_check_period_ms=10000 - RAY_health_check_timeout_ms=100000 - RAY_health_check_failure_threshold=10 - RAY_gcs_rpc_server_connect_timeout_s=60 cluster_compute: chaos_test/compute_template.yaml run: timeout: 3600 wait_for_nodes: num_nodes: 10 script: > python simulate_cross_az_network_failure.py --network-failure-interval 60 --network-failure-duration 5 --command python chaos_test/test_chaos.py --workload=borrowing --disable-resource-killer variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: chaos_test/compute_template_gce.yaml ##################### # Observability tests ##################### - name: agent_stress_test python: "3.10" group: core-observability-test working_dir: dashboard frequency: nightly team: core cluster: anyscale_sdk_2026: true byod: type: gpu runtime_env: - RAY_INTERNAL_MEM_PROFILE_COMPONENTS=dashboard_agent post_build_script: byod_agent_stress_test.sh cluster_compute: agent_stress_compute.yaml run: timeout: 14400 script: python mem_check.py --working-dir . variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: agent_stress_compute_gce.yaml - name: k8s_serve_ha_test group: k8s-test working_dir: k8s_tests # Failing since Oct 2024. # https://github.com/ray-project/ray/issues/36190 frequency: manual team: serve cluster: anyscale_sdk_2026: true cluster_compute: compute_tpl.yaml run: timeout: 28800 # 8h prepare: bash prepare.sh script: python run_gcs_ft_on_k8s.py - name: azure_cluster_launcher python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ # TODO: the test seems to be leaking resources, and will # start failing over time; needs more investigation. frequency: manual team: clusters cluster: byod: post_build_script: byod_azure_cluster_launcher.sh cluster_compute: azure/tests/azure_compute.yaml run: timeout: 2400 script: bash release/azure_docker_login.sh && python -I launch_and_verify_cluster.py azure/tests/azure-cluster.yaml --num-expected-nodes 3 --retries 10 variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python -I launch_and_verify_cluster.py azure/tests/azure-cluster.yaml --num-expected-nodes 3 --retries 10 - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python -I launch_and_verify_cluster.py azure/tests/azure-cluster.yaml --num-expected-nodes 3 --retries 10 - name: aws_cluster_launcher python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ frequency: nightly team: clusters cluster: cluster_compute: aws/tests/aws_compute.yaml run: timeout: 2400 script: python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 - name: aws_cluster_launcher_nightly_image python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ frequency: manual team: clusters cluster: cluster_compute: aws/tests/aws_compute.yaml run: timeout: 2400 script: python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override nightly variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override nightly - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override nightly - name: aws_cluster_launcher_latest_image python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ frequency: manual team: clusters cluster: cluster_compute: aws/tests/aws_compute.yaml run: timeout: 2400 script: python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override latest variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override latest - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override latest - name: aws_cluster_launcher_release_image python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ frequency: manual team: clusters cluster: cluster_compute: aws/tests/aws_compute.yaml run: timeout: 2400 script: python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override commit variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override commit - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python launch_and_verify_cluster.py aws/tests/aws_cluster.yaml --num-expected-nodes 2 --retries 10 --docker-override commit - name: aws_cluster_launcher_minimal python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ frequency: nightly team: clusters cluster: cluster_compute: aws/tests/aws_compute.yaml run: timeout: 1200 script: python launch_and_verify_cluster.py aws/example-minimal.yaml variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python launch_and_verify_cluster.py aws/example-minimal.yaml - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python launch_and_verify_cluster.py aws/example-minimal.yaml - name: aws_cluster_launcher_full python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ frequency: nightly team: clusters cluster: cluster_compute: aws/tests/aws_compute.yaml run: timeout: 3000 script: python launch_and_verify_cluster.py aws/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override latest variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 python launch_and_verify_cluster.py aws/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override latest - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 python launch_and_verify_cluster.py aws/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override latest - name: gcp_cluster_launcher_minimal python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ env: gce frequency: nightly team: clusters cluster: cluster_compute: gcp/tests/single_node_32_cpu_gce.yaml run: timeout: 1200 script: python launch_and_verify_cluster.py gcp/example-minimal-pinned.yaml variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-minimal-pinned.yaml - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-minimal-pinned.yaml - name: gcp_cluster_launcher_full python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ env: gce frequency: nightly team: clusters cluster: cluster_compute: gcp/tests/single_node_32_cpu_gce.yaml run: timeout: 4800 script: python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 30 variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 30 --docker-override latest - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 30 --docker-override latest - name: gcp_cluster_launcher_latest_image group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ env: gce frequency: manual team: clusters cluster: cluster_compute: gcp/tests/single_node_32_cpu_gce.yaml run: timeout: 3600 script: python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override latest variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override latest - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override latest - name: gcp_cluster_launcher_nightly_image python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ env: gce frequency: manual team: clusters cluster: cluster_compute: gcp/tests/single_node_32_cpu_gce.yaml run: timeout: 3600 script: python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override nightly variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override nightly - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override nightly - name: gcp_cluster_launcher_release_image python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ env: gce frequency: manual team: clusters cluster: cluster_compute: gcp/tests/single_node_32_cpu_gce.yaml run: timeout: 3600 script: python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override commit variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override commit - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-full.yaml --num-expected-nodes 2 --retries 20 --docker-override commit - name: gcp_cluster_launcher_gpu_docker python: "3.10" group: cluster-launcher-test working_dir: ../python/ray/autoscaler/ env: gce frequency: weekly team: clusters cluster: cluster_compute: gcp/tests/single_node_32_cpu_gce.yaml run: timeout: 1200 script: python launch_and_verify_cluster.py gcp/example-gpu-docker.yaml variations: - __suffix__: v1 run: script: RAY_UP_enable_autoscaler_v2=0 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-gpu-docker.yaml - __suffix__: v2 run: script: RAY_UP_enable_autoscaler_v2=1 RAY_TRIM_AUTOSCALER_SSH_KEYS=1 python launch_and_verify_cluster.py gcp/example-gpu-docker.yaml - name: autoscaler_aws python: "3.10" group: autoscaler-test working_dir: autoscaling_tests frequency: nightly team: core cluster: cluster_compute: aws.yaml run: timeout: 1800 script: python run.py ############## # LLM Serve ############## # Runs performance benchmark tests against vLLM service - name: llm_serve_llama_3dot1_8B_quantized_tp_1 frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1.yaml --run-vllm-profiler --run-serve-llm-profiler - name: llm_serve_llama_3dot1_8B_quantized_tp_1_direct_streaming frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1.yaml --run-vllm-profiler --run-serve-llm-profiler # Direct streaming with the prefix-cache-aware request router. Guards #64326, # where a body-aware router got no routing key on the direct-streaming path. - name: llm_serve_llama_3dot1_8B_quantized_tp_1_direct_streaming_prefix_cache frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1_prefix_cache.yaml # Runs performance benchmark tests against vLLM service - name: llm_serve_llama_3dot1_8B_tp_2 frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_tp2.yaml --run-vllm-profiler --run-serve-llm-profiler - name: llm_serve_llama_3dot1_8B_tp_2_direct_streaming frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_tp2.yaml --run-vllm-profiler --run-serve-llm-profiler - name: llm_serve_multi_node frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_USE_COMPACT_SCHEDULING_STRATEGY=1 # For test_llm_serve_prefill_decode_with_data_parallelism anyscale_sdk_2026: true cluster_compute: llm_2x_4xl4.yaml run: timeout: 3600 script: > pytest -sv test_llm_serve_multi_node_integration.py - name: llm_serve_multi_node_direct_streaming frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_USE_COMPACT_SCHEDULING_STRATEGY=1 # For test_llm_serve_prefill_decode_with_data_parallelism - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 anyscale_sdk_2026: true cluster_compute: llm_2x_4xl4.yaml run: timeout: 3600 script: > pytest -sv test_llm_serve_multi_node_integration.py - name: llm_serve_dp_engine_fault frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_2x_4xl4.yaml run: timeout: 3600 script: > pytest -sv test_llm_serve_dp_engine_fault.py - name: llm_serve_llama_3dot2_1B_no_accelerator frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_g5-4xlarge.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot2_1b_no_accelerator.yaml --run-serve-llm-profiler - name: llm_serve_llama_3dot1_8B_lora frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_lora.yaml --timeout 900 - name: llm_serve_llama_3dot2_1B_s3 frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot2_1b_s3.yaml --skip-hf-token true - name: llm_serve_correctness frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: pytest -vs test_llm_serve_correctness.py - name: llm_serve_vllm_integration_tests frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: pytest -vs test_llm_serve_integration.py test_llm_serve_fault_tolerance.py - name: llm_serve_vllm_integration_tests_direct_streaming frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: pytest -vs test_llm_serve_integration.py test_llm_serve_fault_tolerance.py - name: llm_serve_sleep_wakeup frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: pytest -vs test_llm_serve_sleep_wakeup.py - name: llm_serve_pause_resume frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: pytest -vs test_llm_serve_pause_resume.py - name: llm_serve_rlhf frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python test_llm_serve_rlhf.py - name: llm_serve_llama_3dot1_8B_quantized_tp1_1p1d frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1_1p1d.yaml --skip-hf-token true - name: llm_serve_llama_3dot1_8B_quantized_tp1_1p1d_direct_streaming frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1_1p1d.yaml --skip-hf-token true - name: llm_serve_llama_3dot1_8B_quantized_tp1_2p6d frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1_2p6d.yaml --skip-hf-token true - name: llm_serve_llama_3dot1_8B_quantized_tp1_2p6d_direct_streaming frequency: nightly python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1_2p6d.yaml --skip-hf-token true - name: llm_serve_llama_3dot1_8B_quantized_tp1_2p6d_lmcache frequency: manual # todo(ray-llm): fix this test with new/old lmcache version and new vllm version and re-enable it. python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 post_build_script: byod_llm_lmcache_test.sh anyscale_sdk_2026: true cluster_compute: llm_auto_select_worker.yaml # NOTE: Important for getting the correct secrets cloud_id: cld_wy5a6nhazplvu32526ams61d98 project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 long_running: false script: python run_llm_serve_test_and_bms.py --serve-config-file configs/serve_llama_3dot1_8b_quantized_tp1_2p6d_lmcache.yaml --skip-hf-token true - name: llm_serve_sglang_e2e frequency: manual python: "3.12" group: llm-serve team: llm working_dir: llm_tests/serve cluster: byod: type: llm-cu130 runtime_env: - RAY_EXPERIMENTAL_NOSET_CUDA_VISIBLE_DEVICES=1 post_build_script: byod_llm_sglang_test.sh anyscale_sdk_2026: true cluster_compute: llm_four_L4_gpu_head_node.yaml run: timeout: 3600 script: pytest -vs test_llm_serve_sglang.py - name: llm_serve_kv_router frequency: manual python: "3.12" group: llm-serve team: llm working_dir: llm_tests/kv_router_test cluster: byod: type: llm-cu130 runtime_env: - RAY_SERVE_LLM_ENABLE_DIRECT_STREAMING=1 - RAY_SERVE_ENABLE_HA_PROXY=1 - RAY_SERVE_DEFAULT_HTTP_HOST=0.0.0.0 post_build_script: byod_llm_kv_router_test.sh anyscale_sdk_2026: true # Kept in this working_dir rather than referenced across dirs # so it ships in the test's runfiles. cluster_compute: llm_4xl4.yaml run: timeout: 3600 script: pytest -vs . ############## # LLM Batch ############## - name: llm_batch_vllm frequency: nightly python: "3.12" group: llm-batch team: llm working_dir: llm_tests/batch cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_4xl4.yaml # NOTE: Important for getting the correct secrets cloud: serve_release_tests_cloud project_id: prj_lhlrf1u5yv8qz9qg3xzw8fkiiq run: timeout: 3600 script: > pytest -sv test_batch_vllm.py - name: llm_batch_sglang_llama frequency: nightly python: "3.12" group: llm-batch team: llm working_dir: llm_tests/batch cluster: byod: type: llm-cu130 post_build_script: byod_llm_sglang_test.sh anyscale_sdk_2026: true cluster_compute: llm_4xl4.yaml run: timeout: 3600 script: > pytest -sv test_batch_sglang.py - name: llm_batch_vllm_multi_node frequency: nightly python: "3.12" group: llm-batch team: llm working_dir: llm_tests/batch cluster: byod: type: llm-cu130 anyscale_sdk_2026: true cluster_compute: llm_2x_4xl4.yaml run: timeout: 3600 script: > pytest -sv test_batch_multi_node_vllm.py - name: llm_batch_single_node_baseline_benchmark python: "3.12" group: llm-batch working_dir: llm_tests/batch frequency: nightly team: llm cluster: byod: runtime_env: - VLLM_DISABLE_COMPILE_CACHE=1 type: llm-cu130 post_build_script: byod_llm_single_node_baseline_benchmark.sh python_depset: llm_batch/llm_batch_single_node_benchmark_py312_cu130.lock anyscale_sdk_2026: true cluster_compute: llm_single_node_benchmark_l4.yaml run: timeout: 3600 script: pytest -v test_batch_single_node_vllm.py::test_single_node_baseline_benchmark ####################### # Ray examples tests ####################### - name: video_analysis_pipeline # do not use dashes (regex sensitive) frequency: weekly python: "3.10" group: ray-examples team: serve working_dir: //doc/source/serve/tutorials/video-analysis cluster: byod: type: cpu post_build_script: byod_serve_video_analysis.sh cluster_compute: ci/aws.yaml run: timeout: 3600 script: bash ci/tests.sh # relative to working_dir variations: - __suffix__: aws # uses default specs above # probably wont work on gce as tests depend on s3 access - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: ci/gce.yaml # relative to working_dir - name: transformers_reinforcement_learning # do not use dashes (regex sensitive) python: "3.10" frequency: weekly group: ray-examples team: ml working_dir: //doc/source/train/examples/transformers/transformer_reinforcement_learning cluster: byod: type: gpu post_build_script: byod_huggingface_trl.sh # release/ray_release/byod/ cluster_compute: ci/aws.yaml # relative to working_dir run: timeout: 3600 script: bash ci/tests.sh # relative to working_dir variations: - __suffix__: aws - __suffix__: gce env: gce frequency: manual cluster: cluster_compute: ci/gce.yaml # relative to working_dir