Files
ray-project--ray/python/ray/train/tests/test_torch_fsdp.py
T
2026-07-13 13:17:40 +08:00

46 lines
1.1 KiB
Python

import pytest
import torch
from torch.distributed.fsdp import FullyShardedDataParallel
import ray
from ray import train
from ray.train import ScalingConfig
from ray.train.torch import TorchTrainer
@pytest.fixture
def ray_start_4_cpus_2_gpus():
address_info = ray.init(num_cpus=4, num_gpus=2)
yield address_info
# The code after the yield will run as teardown code.
ray.shutdown()
def test_torch_fsdp(ray_start_4_cpus_2_gpus):
"""Tests if ``prepare_model`` correctly wraps in FSDP."""
def train_fn():
model = torch.nn.Linear(1, 1)
# Wrap in FSDP.
model = train.torch.prepare_model(model, parallel_strategy="fsdp")
# Make sure model is wrapped in FSDP.
assert isinstance(model, FullyShardedDataParallel)
# Make sure the model is on cuda.
assert next(model.parameters()).is_cuda
trainer = TorchTrainer(
train_fn, scaling_config=ScalingConfig(num_workers=2, use_gpu=True)
)
trainer.fit()
if __name__ == "__main__":
import sys
import pytest
sys.exit(pytest.main(["-v", "-x", "-s", __file__]))