Ray Train:在 Ray 集群上编排分布式训练、容错与 GPU 调度
Ray Train 是 Ray 生态里的分布式训练编排层,负责把训练函数/类分发到多个 worker,申请 GPU、初始化进程组、处理失败重试和 checkpoint。它不替代 PyTorch DDP/FSDP/DeepSpeed,而是站在它们之上做集群调度和生命周期管理;单机多卡可以用 TorchTrainer,多机则依赖 Ray 集群。
Ray Train 适合“训练任务多、需要排队和弹性资源”的场景,也适合把 Hugging Face Trainer、XGBoost、LightGBM 等接入统一调度。它引入了 Ray 的 actor/object store 模型,调试时要比原生 torchrun 多一层。
import ray
from ray.train import ScalingConfig, RunConfig
from ray.train.torch import TorchTrainer
def train_func(config):
# 这里写单进程训练逻辑;Ray 会为每个 worker 设置分布式环境
import torch
model = MyModel().cuda()
model = ray.train.torch.prepare_model(model)
dataloader = ray.train.torch.prepare_data_loader(loader)
for batch in dataloader:
loss = model(batch).sum()
loss.backward()
optimizer.step()
optimizer.zero_grad()
trainer = TorchTrainer(
train_func,
scaling_config=ScalingConfig(num_workers=8, use_gpu=True),
run_config=RunConfig(name="my-training", storage_path="/tmp/ray-results"),
)
result = trainer.fit()
print(result.metrics)
# 本地启动 Ray 集群
ray start --head --num-gpus=8
# 提交作业
ray job submit --address http://127.0.0.1:8265 \
-- python train_ray.py
# 查看集群资源
ray status
# 恢复训练:保存并加载 checkpoint
from ray.train import Checkpoint
checkpoint = Checkpoint.from_directory("/tmp/checkpoint")
trainer = TorchTrainer(..., resume_from_checkpoint=checkpoint)
ray.train.torch.prepare_model 等接口。init_process_group,否则可能冲突。ScalingConfig(use_gpu=True) 只表示每个 worker 用 GPU;num_workers 要和集群可用 GPU 数匹配。RunConfig 的失败策略和日志。合上页面,先回答,再展开对照。
ScalingConfig(num_workers=8, use_gpu=True) 表示什么?
小程序版
微信扫码,随时查命令