GCP 上的 PyTorch Lightning 多节点训练错误

Posted

技术标签:

【中文标题】GCP 上的 PyTorch Lightning 多节点训练错误【英文标题】:PyTorch Lightning multi node training error on GCP 【发布时间】:2021-12-26 12:18:18 【问题描述】:

我们目前正在开展一个涉及 Pytorch Lightning 培训的项目。该代码通过 DistributedDataParallel (DDP) 使用 GPU。目前,它在 Vertex AI Training 作业的单台机器和/或笔记本上运行时运行良好。

但是当我们对多节点训练(涉及主池和工作池)进行相同尝试时,训练不会启动,因为代码只是在主节点上运行,而不使用工作机器。这是训练的代码 -

trainer = pl.Trainer(
        max_epochs=num_epochs,
        weights_summary='full',
        callbacks=callbacks,
        accelerator='ddp',
        gpus=-1,
        num_sanity_val_steps=0,
        limit_train_batches=limit_train_batches,
        limit_val_batches=limit_val_batches,
    )

Q1 - 有什么方法可以调用训练作业中的工作节点?


我们还偶然发现了一个名为 Ray Lightning 的模块,它可以帮助实现相同的目标。但是相同的实现会导致一些错误......尽管在代码中指定了以下命令,但它没有被初始化 -

os.system('ray up cluster.yml')
ray.init(address="auto")
trainer = pl.Trainer(
        max_epochs=num_epochs,
        weights_summary='full',
        callbacks=callbacks,
        accelerator='ddp',
        plugins=[RayPlugin(num_workers=num_workers, use_gpu=use_gpu)],
        num_sanity_val_steps=0,
        limit_train_batches=limit_train_batches,
        limit_val_batches=limit_val_batches,
    )

Q2 - 当前问题的任何可能解决方法?

提前谢谢...????????

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,我的 0 级 pod 正在训练和记录,但非 0 级的 pod 只是挂起。我 ssh 进入非 0 级 pod 并运行“nvidia-smi”,它们都在使用他们的 GPU。这可能意味着他们只是看起来因为他们没有记录而没有在训练。我不能确定这一点。是否值得为您的系统检查相同的内容?

p.s 我的系统是 pytorch-lightning 部署在内部 kubernetes 集群上

【讨论】:

发现弹性目前不支持 pytorch-lightning:github.com/PyTorchLightning/pytorch-lightning/issues/10180github.com/PyTorchLightning/pytorch-lightning/issues/9063

以上是关于GCP 上的 PyTorch Lightning 多节点训练错误的主要内容,如果未能解决你的问题,请参考以下文章

pytorch-lightning入门—— 初了解

PyTorch Lightning 是不是在整个时期内平均指标?

Pytorch-Lightning 是不是具有多处理(或 Joblib)模块?

pytorch-lightning 中的正态分布采样

如何从Pytorch 到 Pytorch Lightning | 简要介绍

pytorch lightning 手写数字分类实例