我正在努力优化联合学习中的通信成本。因此,我需要模拟现实的网络延迟并测量通信开销(客户端和服务器之间的通信)。使用TFF可以做到吗?在“联合学习”设置中是否存在现实的通讯网络模型?
答案 0 :(得分:1)
TFF当前不支持在执行堆栈中引入网络延迟或延迟。
但是,从结构上讲,这是绝对可能的。 SizingExecutor
是解决类似请求的最新贡献的一个示例,它测量在执行层次结构中上下移动通过它的位。立即将SizingExecutor
放在代表客户端的每个执行器之上,然后测量通过此执行堆栈运行的每个联合计算中广播和聚合的比特;可以在here中找到此实现,并且实际上已在公共API中公开。
您的需求与上浆执行者并不完全不同,上浆执行者可以直接满足您的目的,如果您将总比特数作为要优化的指标。但是,如果您宁愿检查分布式计算的其他方面(例如,随机数据损坏),则可以想象通过实现与调整大小执行程序类似的功能来这样做,尽管也可以想象在计算级别执行此操作(客户端随机选择是否返回其真实结果或结果的损坏版本。
我认为,从设计的角度来看,TFF希望任何新的执行程序保留执行不变的计算的语义 ,并将转向简单地测量每轮位数等属性,或引入直接破坏计算或算法,而不是执行这些计算。客户可以选择引入的腐败或延迟实际上是任意的; here是近期研究项目的一个示例,该项目试图通过在某些客户端上插入恶意更新来攻击全局模型。我想,可以使用相同的方法来模拟任何所需的网络属性(例如,某些客户端处于睡眠状态,某些客户端会发送损坏的更新等)。
希望这会有所帮助!