系统学习 AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

ray-train

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)

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. Ray Train 和 PyTorch DDP/FSDP 的关系是什么?
  2. ScalingConfig(num_workers=8, use_gpu=True) 表示什么?
  3. 多机训练时 checkpoint 为什么要用共享存储或 Ray Checkpoint?
答案
  1. Ray Train 负责集群调度、worker 生命周期、容错和 checkpoint;DDP/FSDP 负责模型梯度同步/分片,二者配合使用。
  2. 启动 8 个训练 worker,每个 worker 申请 GPU;要与集群实际可用 GPU 数和每 worker 的 GPU 需求匹配。
  3. 多机 worker 的本地路径互不可见;共享存储或 Ray Checkpoint 能让主进程和其他 worker 读取同一份结果。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令