Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【PaddlePaddle Hackathon 3】链桨项目贡献合集 #44067

Closed
Ligoml opened this issue Jul 4, 2022 · 0 comments
Closed

【PaddlePaddle Hackathon 3】链桨项目贡献合集 #44067

Ligoml opened this issue Jul 4, 2022 · 0 comments

Comments

@Ligoml
Copy link
Contributor

Ligoml commented Jul 4, 2022

(此 ISSUE 为 PaddlePaddle Hackathon 第三期活动的任务 ISSUE,更多详见 【PaddlePaddle Hackathon 第三期】任务总览

以下为飞桨黑客松第三期中,链桨项目贡献任务合集:

No.83:PaddleDTX/dai 网络支持 Fabric

  • 任务标题:PaddleDTX/dai 网络支持 Fabric
  • 技术标签:区块链,Golang
  • 任务难度:基础
  • 详细描述:PaddleDTX 是基于区块链的可信分布式 AI,底层区块链目前采用百度自研的 XuperChain,为提高系统的灵活易用性,计划后期支持Fabric。
  • 提交流程:请将代码提交至 https://github.com/PaddlePaddle/PaddleDTX 开源仓库。
  • 提交内容
    • 设计文档,并提 PR 至 PaddlePaddle/community 的 rfcs/PaddleDTX 目录;
    • Fabric 合约实现,包括任务管理和计算节点管理,可参考 PaddleDTX/dai/blockchain/xchain/contract;
    • Fabric 合约调用,可参考 PaddleDTX/dai/blockchain/xchain;
    • PaddleDTX/dai/conf 添加 Fabric 相关配置,参考 PaddleDTX/xdb/conf;
    • PaddleDTX/dai/executor/engine 中支持 Fabric 配置;
    • PaddleDTX/testdata 支持 Fabric 区块链网络,参考 PaddleDTX/xdb/testdata/blockchain。
  • 合入标准:完成功能实现、功能测试。
  • 技术要求
    • 熟悉区块链技术;
    • 熟练Golang。

No.84:PaddleDTX/crypto 中 Paillier 算法实现的性能优化

  • 任务标题:PaddleDTX/crypto 中 Paillier 算法实现的性能优化
  • 技术标签:密码算法,Golang
  • 任务难度:基础
  • 详细描述:PaddleDTX 当前实现了两类纵向联邦学习算法,均采用 Paillier 同态进行加密参数传输,在训练的迭代过程中需多次进行同态加解密运算,因此 Paiilier 算法的性能会大大影响分布式AI的整体性能。
  • 提交流程:请将代码提交至 https://github.com/PaddlePaddle/PaddleDTX 开源仓库。
  • 提交内容
    • 设计算法性能优化方案,提交方案至 PaddlePaddle/community 的 rfcs/PaddleDTX 目录下;
    • 在已有 Paillier 实现的基础上进行性能优化,参考 PaddleDTX/crypto/common/math/homomorphism/paillier。
  • 合入标准:完成功能实现、单测、性能测试。
  • 技术要求
    • 熟悉密码学技术;
    • 熟练Golang。

No.85:PaddleDTX/dai 支持 xdb 可插拔

  • 任务标题:PaddleDTX/dai 支持 xdb 可插拔
  • 技术标签:区块链,Golang
  • 任务难度:基础
  • 详细描述:PaddleDTX/dai 是基于 xdb 的分布式计算网络,目前支持通过 xdb 获取计算所需样本文件。但在实际应用中,计算方的样本文件可能并没有存储在 xdb 中,因此样本获取部分需要接口化实现,支持从本地磁盘或其他存储服务中获取样本。
  • 提交流程:请将代码提交至 https://github.com/PaddlePaddle/PaddleDTX 开源仓库。
  • 提交内容
    • 设计文档,并提 PR 至 PaddlePaddle/community 的 rfcs/PaddleDTX 目录;
    • 计算节点配置新增样本获取相关配置,至少支持从本地磁盘和 xdb 获取样本,可参考 PaddleDTX/dai/conf/;
    • 实现计算节点获取样本文件的接口化,可参考 PaddleDTX/dai/executor/handler;
    • PaddleDTX/dai/executor 命令行新增本地样本文件注册到合约的功能,可参考 PaddleDTX/dai/executor/cmd;
    • PaddleDTX/dai 新增测试脚本,实现计算网络脱离 xdb 独立部署,可参考 PaddleDTX/testdata。
  • 合入标准:完成功能实现、功能测试。
  • 技术要求
    • 熟悉区块链技术;
    • 熟练Golang。

No.86:PaddleDTX/xdb 支持负载均衡策略

  • 任务标题:PaddleDTX/xdb 支持负载均衡策略
  • 技术标签:区块链,Golang
  • 任务难度:进阶
  • 详细描述:PaddleDTX/xdb 在文件分发时随机选择存储节点进行分片存储,没有考虑存储节点当前可用存储资源,可能存在目标存储节点资源不足的情况,也可能导致存储资源很多的节点分配到的分片较少,资源未被充分利用。因此新增负载均衡策略,综合考虑存储节点健康状态和可用存储资源,在文件分发时优先选择健康且资源充足的节点分发文件。
  • 提交流程:请将代码提交至 https://github.com/PaddlePaddle/PaddleDTX 开源仓库。
  • 提交内容
    • 设计负载均衡的文件分发策略,提交方案至 PaddlePaddle/community 的 rfcs/PaddleDTX 目录下,综合考虑存储节点健康状态和可用存储资源;
    • Fabric&xchain 合约新增方法,实现存储节点可用资源的记录和更新,可参考 PaddleDTX/xdb/blockchain/xchain/contract;
    • Fabric&xchain 合约调用获取存储节点资源,可参考 PaddleDTX/xdb/blockchain/xchain;
    • 命令行工具支持更新存储节点存储资源,可参考 PaddleDTX/xdb/cmd/client/cmd/nodes;
    • 服务端接口支持更新存储节点存储资源,可参考 PaddleDTX/xdb/server 和 PaddleDTX/xdb/engine/handler_node.go。
    • 文件分发时根据负载策略选择存储节点,而非随机选择,可参考 PaddleDTX/xdb/engine/copier。
  • 合入标准:完成功能实现、单测、功能测试。
  • 技术要求
    • 熟悉区块链技术;
    • 熟练Golang。

参考内容

答疑交流

  • 如果在开发过程中对于上述任务有任何问题,欢迎在 https://github.com/PaddlePaddle/PaddleDTX 上提issue;
  • 对于开发中的共性问题,在活动过程中,会定期组织答疑,请大家关注官网&QQ群的通知,及时参与。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants