#226·petals

[功能请求] 直接的服务器间通信 ("然后" 子句)

作者: justheuristic创建于 2023年1月19日更新于 2026年2月26日
标签enhancementdevelopment

基于与 @borzunov 的对话, @dbaranchuk 提出的方案如下:__前提:__ 目前在 rpc_inference 中,每个客户端都向给定的服务器发送输入,从该服务器收集响应,然后手动将这些输入发送到下一个服务器;这需要全面的容错性,以防止其中一个服务器断开连接。更快的方案是直接从服务器 1 发送数据到服务器 2,如果我们能够做到这一点而不影响容错性 – 而且代码复杂度不会太高。__建议的解决方案:__ 在 rpc_inference 中,每当客户端发送一个 pb2 请求时,它可以添加一个元数据键,例如"next_peer",该键表示下一个服务器的对端 ID。当服务器完成计算该键时,它将立即将结果发送给指定的 peer_id 并将其标记为"隐藏状态,对应会话 {inference_session_id}" – 如果下一个对端当前参与同一会话。在接收端,每个服务器都等待 asyncio.wait(request_from_client, request_from_previous_server),其中先到者为准。如果来自上一个服务器的请求先到,当前服务器将立即开始处理它,但仍然等待客户端的数据,以确保结果是有效的。

内容来源: bigscience-workshop/petals