当前位置: 首页 > news >正文

广州励网网站建设网络公司百度账号登陆入口

广州励网网站建设网络公司,百度账号登陆入口,城乡建设部官网,中国建设银行嵊州市支行网站在FederatedScope 如何查看client/server之间的传递的参数大小(通讯量)? 对源码的探索记录 背景需求 想给自己的论文补一个通讯开销对比实验:需要计算出client和server之间传递的信息(例如,模型权重、embedding)总共…

在FederatedScope 如何查看client/server之间的传递的参数大小(通讯量)? 对源码的探索记录

背景需求

想给自己的论文补一个通讯开销对比实验:需要计算出client和server之间传递的信息(例如,模型权重、embedding)总共加起来有多大。

通过在用户交流群的咨询,得知目前FS的monitor模块能够统计server/client之间的通信量(total_upload_bytes/total_download_bytes),同时可以在federatedscope/core/monitors/monitor.py下查看日志文件。

(PS: FS框架的开发老师在交流群中有问必答,总是耐心回答每个问题,感恩~)

按照开发老师的提示,我找到了训练完成后的log文件,文件的内容如下:

图1:system_metrics.log 示意图
图1:system_metrics.log 示意图

可以看到,这个log文件记录了每个client/server,下载/上传的字节数总和(例如上图红框所示)。

但是一开始,我并不清楚倒数第二行中“sys_avg/total_upload_bytes”和”sys_avg/total_download_bytes“这两个均值是如何计算出来的。同时也很好奇,FS到底是如何计算每个client的总上传/下载字节数。抱着这样的疑问和想法,我决定去学习一下FS相关的源码。

目标

SO,这次探索主要想弄清楚两件事

问题一:FS如何计算total_upload_bytes和total_download_bytes?
问题二:sys_avg/total_upload_bytes”和“sys_avg/total_download_bytes” 这两个值是怎么算出来的?

将初步结论放前面

对于问题1

在每一个联邦通讯论中,每次处理Message时,根据Message的content (即传递的消息的内容),来计算total_upload_bytes 和total_download_bytes,并将两个值存到Client类和Server类的成员变量中。

对于问题2

实际上,sys_avg/total_upload_bytes是每个client 和server 的total_upload_bytes 的平均值:

比如图1中:sys_avg/total_upload_bytes=56.78K=(114072+39504+39504+39504)/4/1024

在这里插入图片描述

对于问题一的探索

Note1:接下来的部分比较无聊,并且需要了解FederatedScope的运行机制(尤其是Message消息传递和事件驱动机制),推荐查看官方教程:

Note2:本博文仅考虑standalone模式的情况。

如何计算total_download_bytes?

track_download_bytes函数

计算该值的核心是**track_download_bytes()**函数:简单来说,该函数在处理每一个message时,计算该message的download_bytes并将其累加到client/server对象的成员变量中。

调用位置:fed_runner.py 的_handle_msg函数

在这里插入图片描述

track_download_bytes()函数的实现就是直接把传进来的参数加到 woker(client or server)类对象的total_download_bytes变量中

在这里插入图片描述

msg.count_bytes()函数

传给track_download_bytes()的参数 download_bytes这个变量,又基于msg.count_bytes()这个方法。
在这里插入图片描述

该方法的实现如下
在这里插入图片描述

可以看到,方法里使用了pympler.asizeof 这个函数,它的作用是计算Python对象消耗的内存大小(返回值的单位是Bytes

用法示例:

pympler.asizeof can be used to investigate how much memory certain Python objects consume. In contrast to sys.getsizeof, asizeof sizes objects recursively. You can use one of the asizeof functions to get the size of these objects and all associated referents:

例子:

>>> from pympler import asizeof
>>> obj = [1, 2, (3, 4), 'text']
>>> asizeof.asizeof(obj)
176

如何计算 download_bytes ?

跟踪download_bytes 的位置

StandaloneCommManager类的send函数

定位:federatedscope/core/communication.py

在这里插入图片描述

什么时候会调用send?

woker类中,发送Message时,通常会使用的就是self.comm_manager.send。

举例:

在这里插入图片描述

在这里插入图片描述

upload_bytes如何计算?

当前轮Message的upload_bytes大小=Messge中的接收方的数量*这个Message的content的大小

在这里插入图片描述

对于问题二:两个统计量的均值是怎么算出来的

由于代码逻辑比较复杂,截图略麻烦,所以这里主要用文字表述。

简而言之,每一个通讯轮的评估阶段,框架会将每个参与者(client和server)的系统统计量,存到日志文件(system_metrics.log)里。存储时,当前轮的统计量会覆盖上一轮的统计量。

举个例子,假设有3个client和1个server,那么整个联邦过程结束后,system_metrics.log文件里只有4行(即图1中去掉最后两行)。

而之后,框架会调用名为 merge_system_metrics_simulation_mode()的方法。该方法读取system_metrics.log这个文件,根据文件里的数据取平均值。

在这里插入图片描述
函数定位:federatedscope/core/monitors/monitor.py

http://www.ds6.com.cn/news/85180.html

相关文章:

  • 网站正在建设中av今日微博热搜榜前十名
  • 网站模板去哪要谷歌seo需要做什么的
  • 做诈骗网站以及维护百度网址大全首页
  • 精品课程网站开发项目seo专业培训班
  • 阿里巴巴上怎样做自己的网站有免费推广平台
  • 网站营销平台网络项目发布网
  • 内容转载的网站怎么做旅游景区网络营销案例
  • 学校网站建设推进会品牌seo推广咨询
  • css网站怎么做关键词拓展工具有哪些
  • 网站robots.txt检测云优化软件
  • 网站建设的基本情况论坛优化seo
  • 深圳建设交易信息网站seo搜索引擎优化怎么做
  • wordpress 如何登陆湖南百度seo排名点击软件
  • 如何利用微博推广网站做高端网站公司
  • wordpress作者墙主题seo推广怎么做视频教程
  • 广州建站方法微信公众号平台官网
  • wordpress 更换数据库便宜的seo网络营销推广
  • 专业做外贸网站网站搭建步骤
  • 规范网站建设情况的报告房地产网站建设
  • 扬州集团网站建设热搜榜上能否吃自热火锅
  • 微信网站在线登录网页版海外网络推广平台
  • 效果图在哪个网站可以找比较好免费二级域名分发平台
  • 强的网站建设公司排名第一的玉米品种
  • 做网站哪家社区推广方法有哪些
  • 一键生成微信小程序平台电商seo搜索引擎优化
  • 国外网站建设谷歌官方网站登录入口
  • 济南建网站价格活动推广文案
  • wordpress防止采集seo 360
  • 泊头网站建设的有哪些推广普通话手抄报简单又好看内容
  • 中国建设网站培训通知网址导航怎样推广