想问下在机器学习PAI里deeprec 可以设置grpc failfast是用于什么场景?[阿里云机器学习PAI]

问题1:https://github.com/DeepRec-AI/DeepRec/blob/main/tensorflow/core/distributed_runtime/rpc/grpc_remote_master.cc#L140 文件 /grpc_remote_master.cc 140行可以设置ctx.set_fail_fast(false); 想问下在机器学习PAI里deeprec 可以设置grpc failfast是用于什么场景? 问题2:是这样,我们遇到了一个场景, 分布式ps-worker场景下, 某个ps pod 被删除了,并且该ps pod 不会被重启。期望是sesstion run会报错并退出,Recoverable Session 会尝试不断新建Session。 存在session.run 会hang住的情况(卡在grpc连接),这种情况下设置fail fast 是否会避免hang住的情况。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
2 条回复 A 作者 M 管理员
  1. 问题1:在阿里云机器学习PAI里deeprec设置grpc failfast是用于什么场景?

    grpc failfast的主要作用是在 gRPC 调用失败时快速返回错误,并避免在网络故障等情况下产生不必要的延迟。当 failfast 被设置为 true 时,gRPC 会立即返回错误,而无需等待处理请求的服务器响应。

    在机器学习场景中,我们通常需要处理大量的数据和模型训练任务,而这些任务的运行时间可能会非常长。因此,为了提高任务的执行效率和可靠性,设置 grpc failfast 可以及时避免一些不必要的延迟,并快速捕获错误,以便及时采取相应措施。

    问题2:在分布式ps-worker场景下,某个ps pod 被删除了,并且该ps pod 不会被重启。期望是session.run会报错并退出,Recoverable Session 会尝试不断新建Session。设fail fast 是否会避免hang住的情况?

    在分布式场景下,如果某个ps pod被删除,并且不会被重启,会导致一些与其相关的请求被阻塞或超时。在这种情况下,设置 grpc failfast 可以确保 gRPC 的错误处理机制能够及时返回错误,而无需等待被阻塞或超时的请求完成。这可以避免 session.run 等任务被 hang 住等问题的发生。

    grpc failfast设置为true可以提高错误处理效率,但也可能会导致一些 gRPC 请求被拒绝,从而对任务效率造成影响。因此,在实际使用中,需要根据实际情况对 grpc failfast 参数进行调整,以达到最佳效果。

  2. 在机器学习PAI里DeepRec使用gRPC通信协议,设置grpc failfast可以在客户端发起请求时立即终止对应的调用,避免等待超时。如果您将ctx.set_fail_fast(false)设置为true,则表示开启了failfast功能。适合于希望快速响应、降低网络延迟的场景。

    如果某个ps pod被删除且不会被重启,而且session.run会hang住,有可能是由于底层的gRPC连接没有正确回收导致的。在这种情况下,您可以将failfast设置为true,以便及时终止失败的RPC调用,并释放资源。但是需要注意的是,如果您开启了failfast功能,某些异常情况下会导致程序直接退出,而不是尝试重新建立连接。因此,在使用时需要权衡好数据处理的准确性和容错性之间的关系。

  3. 针对问题1的回答:训练对于是否开启fast fail其实是不敏感的,特别是分布式下可能没有太大的感知。一般来说考虑到复杂的网络环境,fast fail可能不如retry一下。 针对问题2的回答:可以加一个超时限制。 此回答整理自钉群“DeepRec用户群”