对于问题的再明确
解决问题背景
三个基站,都能够连接到所有的用户(可以设置为部分连不到),现在要完成一个FL任务(Minist识别),基站挑选合适的用户并分簇。
一言以蔽之
基站收集用户设备的功耗、时延信息,进行数学建模;转化为二部图问题,通过匈牙利算法确定匹配,完成分簇。
-
功耗?待机功率+计算功率+通信功率
- 通信功率:发射天线功率+数据量得到。
-
时延?通信时延+计算时延
- 通信时延:城市环境,瑞利信道增益;香农公式计算上下行速率,进而得到时延。
- 同一个设备连接不同的基站,其信道质量不同。
- 计算时延,给定计算的数据量、CPU频率、指令轮数,得到时延。
- 不同设备的计算能力不同,有的设备因为老化等原因,计算很慢。
- 通信时延:城市环境,瑞利信道增益;香农公式计算上下行速率,进而得到时延。
-
二部图?
我们所建数学模型的输出就是二部图连线的权重,随后用匈牙利算法得到权重和最小的匹配,也就实现了时延和功耗最小的分簇。
可行性及测试验证
最后测试,是想着把通过分簇后得到的FL网络架构,和随机分簇的FL网络架构,训练同一个Minist网络,看最后的耗时、功耗、神经网络精度。
理论上,由于我们初始化的时候,每个设备的计算能力、信道水平都随机初始化了,那么经过我们的算法,必然挑出来的是时延少、功耗低的分簇。
另外,在总功耗有限制的情况下,随机选择由于功耗高的单个设备被选上了,那么总的备选设备数量就小,导致模型训练数据量少了,最后的网络精度肯定下降。
测试验证方面,使用pysyft,能够实现对远端客户机模型的手动聚合(为了分簇,我们必须手动控制它的模型平均以及参数平均),对于并行训练,可以串行计算,但是最后统计时间的时候修改即可。
进阶版
我们之前做的,感觉只是个建模+分配问题,同样的在别的论文也有做(虽然他们主要是对资源如RB进行分配,而我们站在了一个分簇的角度上),如果接下来还要显得专业一些的话,就是针对数据分布不均匀,进行调整:
显然,数据分布不均匀会影响模型精度(比如手写数字识别,数字“1”占了大部分),但是由于隐私问题,我们没法直接获取每个用户其数据的分布情况,因此采用一种FedTrace,通过对设备们在训练过程中损失下降的情况进行聚类,然后根据聚类结果,让中心server在模型聚合的时候加上权重,这样就能够减少一些数据分布不均匀带来的影响。
在前面分簇好的基础上,每个簇内再进行一个这么加权。
当然,这个进阶版需要更多的时间和精力去实现(看毕设需不需要做到这个程度了)。
问题和困难
困难也就是毕设实现的三步,1. 建立数学模型(通信部分的公式和匈牙利算法的公式推导),2. 用pytorch实现FL整个算法(需要时间熟悉和实现代码),3. 调整参数和对比测试。
问题:所做工作的难度到底够不够,如果可以的话接下来就冲冲冲!