VeryFL笔记

VeryFL利用PythonAPI和PyTorch实现联邦学习,通过SmartContract在以太坊区块链上管理用户、记录训练过程和激励分配。它支持非独立同分布数据的FedProx算法,并提供DatasetSpliter等工具。
摘要由CSDN通过智能技术生成

VeryFL工作流程

区块链借助Brownie,在基础层提供Python API和PyTorch。在Python API之上,将联邦学习过程封装到Task类中来执行FL训练,并将区块链API包装到ChainProxy类中来处理与智能合约的交互。

区块链模块主要负责客户端的管理和选举、训练过程的记录以及激励的分配。在区块链模块中,智能合约使用 Solidity 在以太坊区块链网络上执行,随后通过 Brownie 与 PyTorch 交互。以太坊是一个可编程的区块链平台,可以促进智能合约和去中心化应用程序。 

Solidity是专门为以太坊智能合约量身定制的编程语言,Brownie是基于Python的开发框架,用于开发和测试以太坊智能合约。

在 VeryFL 中,blochchain 模块充当训练网络的管理者。 如果用户希望参加联邦学习训练,首先需要申请一个账户id,用于用户管理。 为了保护模型版权,区块链将为每个唯一的模型分配水印,作为模型版权的标识符。 该令牌与模型绑定并记录在区块链中,指定它所属的用户。 对于训练管理,客户端和服务器将每轮训练结果(包括准确性、损失和数据集大小)上传到区块链,以供客户端选择和激励分配。 通过这个底层区块链模块,可以在以太坊网络上实现很多链上机制。

几个关键的py文件(类)

常见的联邦学习实验通常在 CIFAR10、CIFAR100 和 FashionMnist 数据集上进行,框架在 Benchmark 模块中提供了预配置,以便快速启动和运行。 除了基本的配置和模块之外,还设计了一些实用程序类来个性化实验。 例如,在数据集分区处提供DatasetSpliter,以支持非独立同分布数据分布的联邦学习实验。

benchmark.py

VeryFL将FL训练的参数分为全局参数、训练参数和算法。 全局参数控制 FL 任务的整体设置,例如模型、数据集和客户端数量。 训练参数控制本地模型训练中的训练参数,例如学习率、优化器和权重衰减。 通过更改Benchmark中的参数,VeryFL可以开始定制训练。

interact.py

由于区块链的开发几乎不可避免地伴随着Solidity的编写,因此VeryFL提供了ChainProxy作为与区块链交互的接口。 用户可以部署自己编写的智能合约,并在ChainProxy中编写包装函数,将智能合约接口包装成可以与PyTorch配合使用的python函数。

关于聚合

客户端训练方面采用的是 FedProx算法,主要是解决非独立同分布数据

VeryFL在数据集分区处提供DatasetSpliter.py,以支持非独立同分布数据分布的联邦学习实验。

客户端和服务器将每轮训练结果(包括准确性、损失和数据集大小)上传到区块链,在区块链上进行客户端选择,在服务器上用FedAvg聚合算法聚合模型

运行结果

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值