JsCrying / SFL

SFL Project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

  1. 项目核心超参数:lr 0.08 bs 16 ep 64

    (1.1)由测试可知,40个用户的设置可以有效提速。40个用户的K=1曲线比20个用户的曲线稳定性和上升速度好一些,但需要合理化40个卫星和一个服务器之间的算力比例,已知地面站算力是卫星的20-30倍。

    (1.2) 在20个卫星的情况下,若遍历bs*ep<data size,则波动和性能也受到影响。

    (1.3)测试可知,即使20个bs*ep = data size也不如40个卫星。综上,实验设置40个卫星。细节点参考(1.1)

    (1.4)不需要设置bs*ep超过一个client data size ,这与smahsed data累计量有trade off。后续再做也不迟。,并且,我已经测试过多个data size的情况了,暂时不能带来性能效益。还有细节需要设计。

    (1.5)学习率衰减不能解决训练慢的问题,其训练慢的现象之一是在某个LOSS和ACC 小区间内震荡很久才跳出,比如前100次迭代200次迭代依然是和30次迭代点的性能效果一致。这个点非常影响性能的提升效率。目前没有很好的解决方案。这是一个性能问题的关键点。

  2. 1688786885797

  3. 调参须知:

    1. momentum 没有写好作为超参数传入,需要手动调,或者简单改一下
    2. 梯度裁剪 (clip) 的max_norm针对loss 异常的情况调整
    3. local_bs 和local_ep是一套的
    4. local_lr 是第一影响力
    5. K值可以放在其它情况稳定了之后,再多做几个,可以先调出来K=1或者K=20
    6. plot.py文件可以自行添加到脚本里头

Version0703

挑出来参数之后,我于0703-0704之间把剩余【卫星场景+Persionalize+异步聚合】的代码改好进去,可以直接用你调好的参数跑完整的,所以第一步的目标是先有一个稳定的训练系统。

主文件

SFL_main_async.py

你读一下很简单

tensorboard 实时看结果

命令行

tensorboard --logdir .\Folder\Runs\CIFAR10_5_23_iid_0

不行就把相对路径改成绝对路径即可

tensorboard 可以直接导出图像

About

SFL Project


Languages

Language:Python 99.1%Language:MATLAB 0.9%