1515
1616本节将采用推荐领域非常经典的模型 NCF 为例,介绍如何使用飞桨分布式完成 FL-PS 训练任务。
1717
18- FL-PS 训练基于飞桨静态图,在这之前,请用户了解下 `NCF 模型的单机静态图训练示例以及本地单机模拟分布式的使用方法 https://github.com/PaddlePaddle/PaddleRec/tree/master/models/recall/ncf `_
18+ FL-PS 训练基于飞桨静态图,在这之前,请用户了解下 `NCF 模型的单机静态图训练示例以及本地单机模拟分布式的使用方法 < https://github.com/PaddlePaddle/PaddleRec/tree/master/models/recall/ncf > `_
1919
2020在传统 PS 基础上,通过生成异构数据集、开启中心调度功能(Coordinator)进行 Client 选择、自定义配置 Client 端私有稀疏参数和 Server 端公共稀疏参数等手段,提升 FL-PS 的训练精度和效率。
2121
22- 更多使用细节请阅读 `FL-PS 帮助文档 https://github.com/PaddlePaddle/PaddleRec/blob/master/models/recall/ncf/fl_ps_help.md `_
22+ 更多使用细节请阅读 `FL-PS 帮助文档 < https://github.com/PaddlePaddle/PaddleRec/blob/master/models/recall/ncf/fl_ps_help.md > `_
2323
2424本功能依赖 PaddlePaddle2.4 及以上版本的飞桨开源框架,或者用户从 PaddlePaddle develop 分支进行源码编译。
2525
@@ -33,13 +33,13 @@ FL-PS 训练主要包括如下几个部分:
3333 3. 加载模型
3434 4. 开始训练
3535
36- 用户可从 `FL-PS 训练脚本 https://github.com/PaddlePaddle/PaddleRec/blob/master/tools/static_fl_trainer.py `_ 入手梳理详细流程。
36+ 用户可从 `FL-PS 训练脚本 < https://github.com/PaddlePaddle/PaddleRec/blob/master/tools/static_fl_trainer.py > `_ 入手梳理详细流程。
3737
38381.2.1 准备样本
3939""""""""""""
4040
4141* 在 PaddleRec/datasets/movielens_pinterest_NCF 目录中执行: sh run.sh,获取初步处理过的训练数据(big_train)和测试数据(test_data)
42- * 从 `MovieLens 官网 https://grouplens.org/datasets/movielens/1m/ `_ 下载 ml-1m 数据集,获取 users.dat 文件(可自定义存储路径,但需要和 gen_heter_data.py 脚本中路径保持一致),后续用于构造异构数据集(按 zipcode 的首位数字划分)
42+ * 从 `MovieLens 官网 < https://grouplens.org/datasets/movielens/1m/ > `_ 下载 ml-1m 数据集,获取 users.dat 文件(可自定义存储路径,但需要和 gen_heter_data.py 脚本中路径保持一致),后续用于构造异构数据集(按 zipcode 的首位数字划分)
4343* 在 PaddleRec/datasets/movielens_pinterest_NCF/fl_data 中新建目录 fl_test_data 和 fl_train_data,用于存放每个 client 上的训练数据集和测试数据集
4444* 在 PaddleRec/datasets/movielens_pinterest_NCF/fl_data 目录中执行: python gen_heter_data.py,生成 10 份训练数据
4545 * 总样本数 4970844(按 1:4 补充负样本):0 - 518095,1 - 520165,2 - 373605,3 - 315550,4 - 483779,5 - 495635,6 - 402810,7 - 354590,8 - 262710,9 - 1243905
@@ -231,15 +231,15 @@ FL-PS 训练主要包括如下几个部分:
231231 1.3.2 Coordinator 模块
232232""""""""""""
233233
234- 用户可以基于文件 `coordinator.py https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/distributed/ps/coordinator.py `_ 中定义的相关基类进行继承开发,用户自定义的各种 Client 选择算法均可以用 python 代码实现,从类 ``ClientSelectorBase `` 继承。
234+ 用户可以基于文件 `coordinator.py < https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/distributed/ps/coordinator.py > `_ 中定义的相关基类进行继承开发,用户自定义的各种 Client 选择算法均可以用 python 代码实现,从类 ``ClientSelectorBase `` 继承。
235235
2362361.3.3 构造自定义异构数据集
237237""""""""""""
238238
239239参考脚本 ``gen_heter_data.py `` 写法。
240240
241241
242- 备注:本教程主要介绍了横向联邦 PS 的使用方法,关于纵向联邦 PS 的使用,请参考 `test_fl_ps.py https://github.com/PaddlePaddle/Paddle/blob/develop/test/ps/test_fl_ps.py `_ ,使用 1.3.1 节的编译命令,再执行下述命令即可
242+ 备注:本教程主要介绍了横向联邦 PS 的使用方法,关于纵向联邦 PS 的使用,请参考 `test_fl_ps.py < https://github.com/PaddlePaddle/Paddle/blob/develop/test/ps/test_fl_ps.py > `_ ,使用 1.3.1 节的编译命令,再执行下述命令即可
243243
244244.. code-block :: bash
245245 ctest -R test_fl_ps -V
0 commit comments