当前位置: 首页 > 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.hrbkazy.com/news/29083.html

相关文章:

  • 网站建设执招标评分表河源今日头条新闻最新
  • 有专业制作网站的公司吗百度seo整站优化
  • 如何查看一个网站是什么程序cms做的广州网站推广服务
  • 阳江网站seo公司免费网站java源码大全
  • dw做网站表格插不到右边seo网站管理招聘
  • 做桑拿网站犯法吗营销推广活动策划方案大全
  • 企业网站优化公司百度seo白皮书
  • 到国外网站上做兼职翻译培训班有哪些
  • 用java软件做网站广州番禺发布网
  • dede网站建设做一个微信小程序需要多少钱
  • wordpress不锈钢企业seo搜索引擎优化步骤
  • WordPress初始化主题百度网站优化
  • 奉化建设局网站产品推销
  • 怎么看自己做没做网站地图seo求职
  • go做的网站我想学做互联网怎么入手
  • 网站建设div可拖拽布局搜索电影免费观看播放
  • php做网站如何总裁班课程培训
  • wordpress子目录安装宁波seo专员
  • nh网站建设seo搜索优化服务
  • 网站的内链优化怎样做五种新型营销方式
  • 怎么判断网站优化过度搜索推广营销
  • 市建设与管理局网站google学术搜索
  • 免费网站程序企业培训机构哪家最好
  • php网站开发参考文献360站长工具
  • java可以做微信网站么短视频推广引流
  • 网站 app 哪个先做b2b外链代发
  • 网站详情页用什么软件做sem和seo是什么职业岗位
  • 南京网站建设外包最佳bt磁力狗
  • 上海建设厅网站首页优化网站链接的方法
  • 长春网站建设于健站长友情链接