繁体   English   中英

将 Horovod 与 tf.keras 一起使用时如何从检查点恢复?

[英]How to resume from a checkpoint when using Horovod with tf.keras?

注意:我使用的是 TF 2.1.0 和 tf.keras API。 我在 0.18 和 0.19.2 之间的所有 Horovod 版本中都遇到了以下问题。

从 tf.keras h5 检查点恢复时,我们是否应该在所有等级上调用hvd.load_model() ,或者我们只应该在等级 0 上调用它并让BroadcastGlobalVariablesCallback回调与其他工作人员共享这些权重? 方法 1 是否不正确/无效,因为它会扰乱训练或产生与方法 2 不同的结果?

I'm currently training a ResNet-based model with some BatchNorm layers, and if we only try to load the model on the first rank (and build/compile the model on the other ranks), we get a stalled tensor issue ( https: //github.com/horovod/horovod/issues/1271 )。 但是,如果我们在恢复时在所有等级上调用hvd.load_model ,训练开始正常恢复但它似乎立即发散,所以我很困惑是否在所有等级上加载检查点 model (使用hvd.load_model )会以某种方式导致训练分歧? 但同时,由于https://github.com/horovod/horovod/issues/1271 ,我们无法仅将其加载到 rank 0,导致 Batch Norm 在 horovod 中挂起。 使用 BatchNorm tf.keras 层时,是否有人能够仅在等级 0 上成功调用hvd.load_model 有人可以在这里提供一些提示吗?

谢谢!

根据这个: https://github.com/horovod/horovod/issues/120 ,这是解决方案:

You should also be able to specify optimizer via custom object:
model = keras.models.load_model('file.h5', custom_objects={
    'Adam': lambda **kwargs: hvd.DistributedOptimizer(keras.optimizers.Adam(**kwargs))
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM