问题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住的情况。
问题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 参数进行调整,以达到最佳效果。
在机器学习PAI里DeepRec使用gRPC通信协议,设置grpc failfast可以在客户端发起请求时立即终止对应的调用,避免等待超时。如果您将ctx.set_fail_fast(false)设置为true,则表示开启了failfast功能。适合于希望快速响应、降低网络延迟的场景。
如果某个ps pod被删除且不会被重启,而且session.run会hang住,有可能是由于底层的gRPC连接没有正确回收导致的。在这种情况下,您可以将failfast设置为true,以便及时终止失败的RPC调用,并释放资源。但是需要注意的是,如果您开启了failfast功能,某些异常情况下会导致程序直接退出,而不是尝试重新建立连接。因此,在使用时需要权衡好数据处理的准确性和容错性之间的关系。
针对问题1的回答:训练对于是否开启fast fail其实是不敏感的,特别是分布式下可能没有太大的感知。一般来说考虑到复杂的网络环境,fast fail可能不如retry一下。 针对问题2的回答:可以加一个超时限制。 此回答整理自钉群“DeepRec用户群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。