gpt4 book ai didi

tensorflow - 尝试运行分布式 GCMLE 作业时遇到抢占操作系统错误

转载 作者:行者123 更新时间:2023-12-04 01:43:06 32 4
gpt4 key购买 nike

我正在尝试运行分布式 GCMLE 训练作业,但不断收到以下错误:

An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error

训练器包是一个自定义的估计器,建模与 cloudml-samples 非常相似。人口普查自定义估算器: https://github.com/GoogleCloudPlatform/cloudml-samples/tree/master/census/customestimator/trainer .可以肯定地说 task.py文件几乎相同并且在 model.py 内归档 input_fn()parse_csv()功能相同,唯一真正的区别在我的 model_fn() 的细节中.

如果我将模型配置为使用单个 standard_p100 运行GPU 我可以以大约 15 步/秒的速度进行训练。但是,如果我将配置更新为具有 4 个工作器和 3 个参数服务器的分布式设置(请参阅下面的配置),则会弹出抢占错误,10 个步骤将花费约 600 秒...

config-distributed.yaml:
trainingInput:
scaleTier: CUSTOM
masterType: standard_p100
workerType: standard_p100
parameterServerType: large_model
workerCount: 3
parameterServerCount: 3

如果我对人口普查自定义估算器样本使用相同的配置,那么模型会按预期训练得更快,并且不会遇到抢占错误。我尝试修改人口普查示例以更接近地模仿我的确切代码,但仍然无法重现错误。

有人在尝试训练分布式机器学习引擎作业时遇到过类似的抢占问题吗?关于如何更好地调试问题的任何建议?我在网上找到的唯一建议是建议参数服务器的数量至少是工作人员数量的一半(这就是我增加到 3 个参数服务器的原因),但我仍然没有运气。

要从日志中添加更多上下文,这是我尝试在分布式设置中训练时发生的典型(重复)模式:
master-replica-0 loss = 16.5019, step = 53 (124.505 sec)
master-replica-0 An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error
master-replica-0 Graph was finalized.
master-replica-0 Restoring parameters from gs://.../model.ckpt-0
master-replica-0 Running local_init_op.
master-replica-0 Done running local_init_op.
master-replica-0 Saving checkpoints for 0 into gs://...
master-replica-0 Skip the current checkpoint eval due to throttle secs (600 secs).
master-replica-0 An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error

然后这个循环重复……

更新

我将参数服务器的数量增加到 10,步数/秒在 5 到 10 之间跳跃(只有一个 GPU 时仍然小于 15),错误仍然发生,但只是偶尔发生。如果更多的参数服务器有帮助,这会暗示什么? CPU 和内存使用率非常低(< 5-10%),所以看起来 PS 并没有重载,但模型确实有很多变量需要更新(50k 词嵌入,具有大量维度) )。这会以某种方式导致问题吗?

最佳答案

具有大量参数的分布式训练的瓶颈通常是网络带宽。如果网络过于饱和,数据包就会丢失,TensorFlow 会认为参数服务器已关闭。通过添加更多参数服务器,您可以分配网络负载。

请记住,如果您的模型适合使用 GPU,您通常会在具有 8 个 GPU 的单台机器上获得更好的吞吐量,而不是在具有单个 GPU 的 8 台机器上,因为您不会有任何网络开销。

关于tensorflow - 尝试运行分布式 GCMLE 作业时遇到抢占操作系统错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52794441/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com