Files
2026-07-13 13:17:40 +08:00

1012 lines
22 KiB
Python

load("@rules_python//python:defs.bzl", "py_library", "py_test")
load("//bazel:python.bzl", "doctest")
doctest(
name = "py_doctest[train]",
size = "large",
env = {
"RAY_TRAIN_V2_ENABLED": "1",
"TF_USE_LEGACY_KERAS": "1",
},
files = glob(
["**/*.py"],
exclude = [
"examples/**",
"tests/**",
"horovod/**", # CI do not have horovod installed
"mosaic/**", # CI do not have mosaicml installed
# GPU tests
"tensorflow/tensorflow_trainer.py",
"_internal/session.py",
"context.py",
],
),
tags = ["team:ml"],
)
doctest(
name = "py_doctest[train-gpu]",
size = "large",
# TODO: [V2] Migrate
env = {"RAY_TRAIN_V2_ENABLED": "0"},
files = [
"_internal/session.py",
"context.py",
"tensorflow/tensorflow_trainer.py",
],
gpu = True,
tags = ["team:ml"],
)
# --------------------------------------------------------------------
# Tests from the python/ray/train/examples directory.
# Please keep these sorted alphabetically.
# --------------------------------------------------------------------
py_library(
name = "conftest",
srcs = ["tests/conftest.py"],
)
############ Experiment tracking examples start ############
# no credentials needed
py_test(
name = "lightning_exp_tracking_mlflow",
size = "small",
srcs = [
"examples/experiment_tracking/lightning_exp_tracking_mlflow.py",
"examples/experiment_tracking/lightning_exp_tracking_model_dl.py",
],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/experiment_tracking/lightning_exp_tracking_mlflow.py",
tags = [
"exclusive",
"no_main",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "lightning_exp_tracking_tensorboard",
size = "small",
srcs = [
"examples/experiment_tracking/lightning_exp_tracking_model_dl.py",
"examples/experiment_tracking/lightning_exp_tracking_tensorboard.py",
],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/experiment_tracking/lightning_exp_tracking_tensorboard.py",
tags = [
"exclusive",
"no_main",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "torch_exp_tracking_mlflow",
size = "medium",
srcs = ["examples/experiment_tracking/torch_exp_tracking_mlflow.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/experiment_tracking/torch_exp_tracking_mlflow.py",
tags = [
"exclusive",
"no_main",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
# credentials needed
py_test(
name = "lightning_exp_tracking_wandb",
size = "medium",
srcs = [
"examples/experiment_tracking/lightning_exp_tracking_model_dl.py",
"examples/experiment_tracking/lightning_exp_tracking_wandb.py",
],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/experiment_tracking/lightning_exp_tracking_wandb.py",
tags = [
"exclusive",
"needs_credentials",
"no_main",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "lightning_exp_tracking_comet",
size = "medium",
srcs = [
"examples/experiment_tracking/lightning_exp_tracking_comet.py",
"examples/experiment_tracking/lightning_exp_tracking_model_dl.py",
],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/experiment_tracking/lightning_exp_tracking_comet.py",
tags = [
"exclusive",
"needs_credentials",
"no_main",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "torch_exp_tracking_wandb",
size = "medium",
srcs = ["examples/experiment_tracking/torch_exp_tracking_wandb.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/experiment_tracking/torch_exp_tracking_wandb.py",
tags = [
"exclusive",
"needs_credentials",
"no_main",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
############ Experiment tracking examples end ############
py_test(
name = "tensorflow_quick_start",
size = "medium",
srcs = ["examples/tf/tensorflow_quick_start.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "1",
"TF_USE_LEGACY_KERAS": "1",
},
main = "examples/tf/tensorflow_quick_start.py",
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "torch_quick_start",
size = "medium",
srcs = ["examples/pytorch/torch_quick_start.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/pytorch/torch_quick_start.py",
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
# Formerly AIR examples
py_test(
name = "distributed_sage_example",
size = "small",
srcs = ["examples/pytorch_geometric/distributed_sage_example.py"],
args = [
"--use-gpu",
"--num-workers=2",
"--epochs=1",
"--dataset=fake",
],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/pytorch_geometric/distributed_sage_example.py",
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "horovod_pytorch_example",
size = "small",
srcs = ["examples/horovod/horovod_pytorch_example.py"],
args = ["--num-epochs=1"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"manual",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "horovod_tune_example",
size = "small",
srcs = ["examples/horovod/horovod_tune_example.py"],
args = ["--smoke-test"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"manual",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "tensorflow_regression_example",
size = "medium",
srcs = ["examples/tf/tensorflow_regression_example.py"],
args = ["--smoke-test"],
env = {
"RAY_TRAIN_V2_ENABLED": "1",
"TF_USE_LEGACY_KERAS": "1",
},
main = "examples/tf/tensorflow_regression_example.py",
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
# This is tested in test_examples!
# py_test(
# name = "tensorflow_mnist_example",
# size = "medium",
# main = "examples/tf/tensorflow_mnist_example.py",
# srcs = ["examples/tf/tensorflow_mnist_example.py"],
# tags = ["team:ml", "exclusive"],
# deps = [":train_lib"],
# args = ["--smoke-test"]
# )
# This is tested in test_examples!
# py_test(
# name = "torch_fashion_mnist_example",
# size = "medium",
# main = "examples/pytorch/torch_fashion_mnist_example.py",
# srcs = ["examples/pytorch/torch_fashion_mnist_example.py"],
# tags = ["team:ml", "exclusive"],
# deps = [":train_lib"],
# args = ["--smoke-test"]
# )
# This is tested in test_gpu_examples!
# py_test(
# name = "torch_fashion_mnist_example_gpu",
# size = "medium",
# main = "examples/pytorch/torch_fashion_mnist_example.py",
# srcs = ["examples/pytorch/torch_fashion_mnist_example.py"],
# tags = ["team:ml", "exclusive", "gpu"],
# deps = [":train_lib"],
# args = ["--use-gpu"]
# )
py_test(
name = "torch_regression_example",
size = "medium",
srcs = ["examples/pytorch/torch_regression_example.py"],
args = ["--smoke-test"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
main = "examples/pytorch/torch_regression_example.py",
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
# This is tested in test_examples!
# py_test(
# name = "torch_linear_example",
# size = "small",
# main = "examples/pytorch/torch_linear_example.py",
# srcs = ["examples/pytorch/torch_linear_example.py"],
# tags = ["team:ml", "exclusive"],
# deps = [":train_lib"],
# args = ["--smoke-test"]
# )
# --------------------------------------------------------------------
# Tests from the python/ray/train/tests directory.
# Please keep these sorted alphabetically.
# --------------------------------------------------------------------
py_test(
name = "test_torch_accelerate",
size = "large",
srcs = ["tests/test_torch_accelerate.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_api_migrations",
size = "small",
srcs = ["tests/test_api_migrations.py"],
# NOTE: This test explicitly tests V1 -> V2 migration.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_backend",
size = "large",
srcs = ["tests/test_backend.py"],
# NOTE: Relevant tests have been migrated to
# test_torch_trainer.py and test_worker_group.py
# TODO: [V2] There are still some accelerator integration tests left.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_base_trainer",
size = "medium",
srcs = ["tests/test_base_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_base_worker_group",
size = "small",
srcs = ["tests/test_base_worker_group.py"],
tags = ["team:ml"],
deps = [":train_lib"],
)
py_test(
name = "test_checkpoint",
size = "small",
srcs = ["tests/test_checkpoint.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "test_checkpoint_manager",
size = "small",
srcs = ["tests/test_checkpoint_manager.py"],
# NOTE: This already has a V2 copy.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_data_parallel_trainer",
size = "medium",
srcs = ["tests/test_data_parallel_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_data_parallel_trainer_checkpointing",
size = "medium",
srcs = ["tests/test_data_parallel_trainer_checkpointing.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_examples",
size = "large",
srcs = ["tests/test_examples.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "1",
"TF_USE_LEGACY_KERAS": "1",
},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_gpu",
size = "large",
srcs = ["tests/test_gpu.py"],
# NOTE: Migrated relevant tests to v2/tests/test_torch_gpu.py
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"gpu",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_gpu_2",
size = "medium",
srcs = ["tests/test_gpu_2.py"],
# NOTE: Already covered by test_iter_torch_batches_gpu
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"gpu",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_iter_torch_batches_gpu",
size = "medium",
srcs = ["tests/test_iter_torch_batches_gpu.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"data_integration",
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_gpu_auto_transfer",
size = "medium",
srcs = ["tests/test_gpu_auto_transfer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_gpu_examples",
size = "large",
srcs = ["tests/test_gpu_examples.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "1",
"TF_USE_LEGACY_KERAS": "1",
},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_torch_fsdp",
size = "small",
srcs = ["tests/test_torch_fsdp.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "test_horovod_trainer",
size = "large",
srcs = ["tests/test_horovod_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"manual",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_lightgbm_trainer",
size = "medium",
srcs = ["tests/test_lightgbm_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_torch_lightning_train",
size = "large",
srcs = ["tests/test_torch_lightning_train.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"ptl_v1",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "test_torch_transformers_train",
size = "large",
srcs = ["tests/test_torch_transformers_train.py"],
# NOTE: There's already a copy in V2.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"gpu",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "accelerate_torch_trainer",
size = "large",
srcs = ["examples/accelerate/accelerate_torch_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "accelerate_torch_trainer_no_raydata",
size = "large",
srcs = ["examples/accelerate/accelerate_torch_trainer_no_raydata.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "deepspeed_torch_trainer",
size = "large",
srcs = ["examples/deepspeed/deepspeed_torch_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "deepspeed_torch_trainer_no_raydata",
size = "large",
srcs = ["examples/deepspeed/deepspeed_torch_trainer_no_raydata.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2_gpu",
],
deps = [":train_lib"],
)
py_test(
name = "test_minimal",
size = "small",
srcs = ["tests/test_minimal.py"],
# TODO: [V2] The minimal test needs to install pydantic,
# which is a Train V2 dependency.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"minimal",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_new_persistence",
size = "large",
srcs = ["tests/test_new_persistence.py"],
# NOTE: There's already a copy in V2.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_result",
size = "medium",
srcs = ["tests/test_result.py"],
# NOTE: There's already a copy in V2.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_session",
size = "small",
srcs = ["tests/test_session.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_storage",
size = "small",
srcs = ["tests/test_storage.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_state",
size = "medium",
srcs = ["tests/test_state.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_state_export",
size = "medium",
srcs = ["tests/test_state_export.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_tensorflow_checkpoint",
size = "medium",
srcs = ["tests/test_tensorflow_checkpoint.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "1",
"TF_USE_LEGACY_KERAS": "1",
},
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "test_tensorflow_trainer",
size = "medium",
srcs = ["tests/test_tensorflow_trainer.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "0",
"TF_USE_LEGACY_KERAS": "1",
},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_torch_checkpoint",
size = "small",
srcs = ["tests/test_torch_checkpoint.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_torch_device_manager",
size = "medium",
srcs = ["tests/test_torch_device_manager.py"],
# TODO: Fix accelerator integrations and move over.
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"gpu",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_torch_trainer",
size = "large",
srcs = ["tests/test_torch_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_torch_utils",
size = "small",
srcs = ["tests/test_torch_utils.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
"train_v2",
],
deps = [":train_lib"],
)
py_test(
name = "test_train_usage",
size = "medium",
srcs = ["tests/test_train_usage.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_training_iterator",
size = "large",
srcs = ["tests/test_training_iterator.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "0",
"TF_USE_LEGACY_KERAS": "1",
},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_tune",
size = "large",
srcs = ["tests/test_tune.py"],
env = {
"RAY_TRAIN_V2_ENABLED": "0",
"TF_USE_LEGACY_KERAS": "1",
},
tags = [
"exclusive",
"team:ml",
"tune",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_e2e_wandb_integration",
size = "small",
srcs = ["tests/test_e2e_wandb_integration.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_worker_group",
size = "medium",
srcs = ["tests/test_worker_group.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_windows",
size = "small",
srcs = ["tests/test_windows.py"],
env = {"RAY_TRAIN_V2_ENABLED": "1"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_xgboost_trainer",
size = "medium",
srcs = ["tests/test_xgboost_trainer.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [":train_lib"],
)
py_test(
name = "test_trainer_restore",
size = "large",
srcs = ["tests/test_trainer_restore.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
py_test(
name = "test_telemetry",
size = "medium",
srcs = ["tests/test_telemetry.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = ["team:ml"],
deps = [":train_lib"],
)
py_test(
name = "test_train_head",
size = "small",
srcs = ["tests/test_train_head.py"],
env = {"RAY_TRAIN_V2_ENABLED": "0"},
tags = [
"exclusive",
"team:ml",
],
deps = [
":conftest",
":train_lib",
],
)
# This is a dummy test dependency that causes the above tests to be
# re-run if any of these files changes.
py_library(
name = "train_lib",
srcs = glob(
["**/*.py"],
exclude = ["tests/*.py"],
),
visibility = [
"//python/ray/air:__pkg__",
"//python/ray/air:__subpackages__",
"//python/ray/train:__pkg__",
"//python/ray/train:__subpackages__",
],
)