# bpffl **Repository Path**: elcucuycr/bpffl ## Basic Information - **Project Name**: bpffl - **Description**: Blockchain platform for federated learning - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 2 - **Created**: 2021-10-12 - **Last Updated**: 2025-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 运行网络步骤 一共四步:关闭上次网络并清除残留文件、网络配置、开启各个网络的训练节点、开启SDK和训练脚本 ## 1关闭上次网络并清除残留文件 (什么情况下需要运行这一步:**上次网络没有关闭**或**上次运行网络发生了报错**) 在每一台主机上: 在仓库根目录下运行 ```shell ./networkDown.sh ``` ## 2网络配置 在选作为orderer的主机上: (1)编辑configOfAllNodes.txt (2)进入crypto目录 (3)运行createMaterial.sh ```shell ./createMaterial.sh -addIP ``` 如果configOfAllNodes.txt没有改动,`-addIP`这个传参可以不加,这个参数用于把configOfAllNodes.txt的改动同步到其他节点 脚本运行过程中需要输入其他几个主机的密码,此时如果发生报错则需要检查其他几个主机的ssh服务是否正常 ## 3开启各个网络的训练节点 在每一台主机上: (1)进入start目录 (2)运行fastStart.sh脚本 ```shell ./fastStart.sh 1.1 ``` `1.1`这个传参代表节点安装v1.1版本的智能合约。这里也可以填`1.3`来更换为v1.3版本的智能合约(如果没有任何传参的话,默认也是1.3),**本教程演示1.1版本**。 注:智能合约和后续要开启的SDK的版本是配套的。使用1.1版本智能合约则后面也使用1.1版本SDK,使用1.3版本智能合约则后面也使用1.3版本SDK。1.1是纯命令行界面,1.3支持浏览器页面。 ## 4开启SDK和训练脚本 在除开orderer的每一台主机上: (1)进入sdk/sdk_v1.x目录 (2)编辑userInformation.go 如果要切换训练数据集,需要更改下面的ModelType,可以为cifar10 `const Task = "Publisher:false;ModelType:MNIST;TotalIteration:50; LeastLocalModelAmountPerIteration:3;SelectedLocalModelAmountPerIteration:3"` (3)运行go SDK ```shell go run *.go ``` (4)进入training目录 (5)运行训练脚本 ```shell python3 trainLocalModel_oldversion.py #针对1.1版本的训练脚本 # python3 trainLocalModel.py #针对1.3版本的训练脚本 ``` # classicFL 训练方法为 现在config.py中设置`SERVER_ADDR` ```shell $\bpffl\classicFL> python server_demo.py --dataset cifar10 #在其他窗口中 python client_demo.py ``` # training 使用cifar训练的方法 如果要使用sdk/sdk_v1.1进行训练,在该目录下输入`go run *.go`之后,需要在其他终端中进入training/下输入`python trainLocalModel_oldversion.py` 使用的数据集在configOfTraining.py中的下面一句更改 ```shell DATASET_PATH = './mnist_iid_3/MNIST_iid0.pkl' ```