联邦学习
![71620848fcc780a87eb7d2a40ba4d81a.png](https://i-blog.csdnimg.cn/blog_migrate/6c395fe2bfc0eb672c620805287d028b.png)
FATE (Federated AI Technology Enabler) 是微众银行AI部门发起的开源项目,为联邦学习生态系统提供了可靠的安全计算框架。FATE项目使用多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议,以此支持不同种类的机器学习的安全计算,包括逻辑回归、基于树的算法、深度学习和迁移学习等。
FATE官方网站:fate.fedai.org/
FATE文档:fate.readthedocs.io/
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
下载所需镜像
docker pull federatedai/standalone_fate:1.7.1.1
下载太慢,可以选着下载tar包
root@hello:~# wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/fate/1.7.1.1/release/standalone_fate_docker_image_1.7.1.1_release.tar;
root@hello:~# docker load < standalone_fate_docker_image_1.7.1.1_release.tar
613be09ab3c0: Loading layer [==================================================>] 211.1MB/211.1MB
0b0618c6ced8: Loading layer [==================================================>] 34.05MB/34.05MB
7da7d3716181: Loading layer [==================================================>] 20.99kB/20.99kB
a317a6aa16e0: Loading layer [==================================================>] 2.148MB/2.148MB
87365bb20418: Loading layer [==================================================>] 257.8MB/257.8MB
1ff796d14e4f: Loading layer [==================================================>] 162.3MB/162.3MB
5ddd6cd3032d: Loading layer [==================================================>] 16.38kB/16.38kB
72dc59b41d26: Loading layer [==================================================>] 18.94kB/18.94kB
51c3351a5d26: Loading layer [==================================================>] 12.26MB/12.26MB
258e35d02c08: Loading layer [==================================================>] 3.072kB/3.072kB
68512ba32441: Loading layer [==================================================>] 8.704kB/8.704kB
7617803436ad: Loading layer [==================================================>] 3.072kB/3.072kB
b08fdc026a0d: Loading layer [==================================================>] 129.3MB/129.3MB
93ac7e91dd87: Loading layer [==================================================>] 3.287GB/3.287GB
c3e03cea7b5f: Loading layer [==================================================>] 4.608kB/4.608kB
5f70bf18a086: Loading layer [==================================================>] 1.024kB/1.024kB
fe63005b3b70: Loading layer [==================================================>] 488.2MB/488.2MB
b6e2974d86f7: Loading layer [==================================================>] 3.584kB/3.584kB
0f41365d9b69: Loading layer [==================================================>] 3.072kB/3.072kB
22a68c3cca2b: Loading layer [==================================================>] 3.584kB/3.584kB
fd05ae943ab9: Loading layer [==================================================>] 4.096kB/4.096kB
14bbbe13f9fa: Loading layer [==================================================>] 5.632kB/5.632kB
6db147c8b695: Loading layer [==================================================>] 2.848MB/2.848MB
e8875a58bc61: Loading layer [==================================================>] 6.144kB/6.144kB
582394b0287a: Loading layer [==================================================>] 1.154MB/1.154MB
7808bf03bd20: Loading layer [==================================================>] 397.8MB/397.8MB
d144a9e78472: Loading layer [==================================================>] 5.632kB/5.632kB
fff9aed1cf2f: Loading layer [==================================================>] 6.144kB/6.144kB
de747ddfdffa: Loading layer [==================================================>] 5.632kB/5.632kB
bc9989f84045: Loading layer [==================================================>] 5.632kB/5.632kB
Loaded image: federatedai/standalone_fate:1.7.1.1
root@hello:~# docker images | grep federatedai/standalone_fate
federatedai/standalone_fate 1.7.1.1 6911b15a71bd 4 weeks ago 4.92GB
启动容器,并进入
root@hello:~# docker run -d --name standalone_fate -p 8080:8080 federatedai/standalone_fate:1.7.1.1
50e95fda254a383a243576e43859d9ac91d9f8f5a8f84654dfdf99c7d47a8ccc
root@hello:~#
root@hello:~#
root@hello:~#
root@hello:~# docker ps -a | grep standalone_fate
50e95fda254a federatedai/standalone_fate:1.7.1.1 "docker-entrypoint.sh" 22 seconds ago Up 19 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp standalone_fate
root@hello:~#
root@hello:~#
root@hello:~#
root@hello:~#
root@hello:~#
root@hello:~# docker exec -it $(docker ps -aqf "name=standalone_fate") bash
(app-root) bash-4.2#
(app-root) bash-4.2#
(app-root) bash-4.2#
在容器内进行Toy测试
(app-root) bash-4.2# flow test toy -gid 10000 -hid 10000
toy test job 202202270654137342340 is waiting
toy test job 202202270654137342340 is waiting
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is running
toy test job 202202270654137342340 is success
[INFO] [2022-02-27 06:54:18,706] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:96]: begin to init parameters of secure add example guest
[INFO] [2022-02-27 06:54:18,707] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:100]: begin to make guest data
[INFO] [2022-02-27 06:54:18,742] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:103]: split data into two random parts
[INFO] [2022-02-27 06:54:18,864] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:106]: share one random part data to host
[INFO] [2022-02-27 06:54:18,911] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:109]: get share of one random part data from host
[INFO] [2022-02-27 06:54:19,014] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:112]: begin to get sum of guest and host
[INFO] [2022-02-27 06:54:19,041] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:115]: receive host sum from guest
[INFO] [2022-02-27 06:54:19,048] [202202270654137342340] [229:139661668419392] - [secure_add_guest.run] [line:122]: success to calculate secure_sum, it is 2000.0000000000005
(app-root) bash-4.2#
如果成功,屏幕显示类似下方的语句:
success to calculate secure_sum, it is 2000.0
单元测试
(app-root) bash-4.2# fate_test unittest federatedml --yes
testsuite namespace: 20220227065434
start to run test /data/projects/fate/fate/python/federatedml/feature/test/feature_imputation_test.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
---略----
start to run test /data/projects/fate/fate/python/federatedml/nn/hetero_nn/test/random_number_generator_test.py
using engines: {'computing': 'STANDALONE', 'federation': 'STANDALONE', 'storage': 'STANDALONE', 'federated_mode': 'SINGLE'}
create manager session cc68ee02-979a-11ec-b5d1-0242ac110002
try to save session record for manager cc68ee02-979a-11ec-b5d1-0242ac110002, computing STANDALONE test_random_number0.9860114704767727
save session record for manager cc68ee02-979a-11ec-b5d1-0242ac110002, computing STANDALONE test_random_number0.9860114704767727 successfully
tensor's partition is 10
.using engines: {'computing': 'STANDALONE', 'federation': 'STANDALONE', 'storage': 'STANDALONE', 'federated_mode': 'SINGLE'}
create manager session cd50530a-979a-11ec-b5d1-0242ac110002
try to save session record for manager cd50530a-979a-11ec-b5d1-0242ac110002, computing STANDALONE test_random_number0.6220879309193029
save session record for manager cd50530a-979a-11ec-b5d1-0242ac110002, computing STANDALONE test_random_number0.6220879309193029 successfully
.
----------------------------------------------------------------------
Ran 2 tests in 1.583s
OK
there are 0 failed test
如果成功,屏幕显示类似下方的语句:
there are 0 failed test
页面访问
http://192.168.1.78:8080/#/login
user:admin
pass:admin
![8379d2599abf74ea4d6aad4d08851c25.png](https://i-blog.csdnimg.cn/blog_migrate/49370bfbf154b18dd773d27adc3e13a0.png)
https://www.oiox.cn/
https://www.chenby.cn/
https://cby-chen.github.io/
https://weibo.com/u/5982474121
https://blog.csdn.net/qq_33921750
https://my.oschina.net/u/3981543
https://www.zhihu.com/people/chen-bu-yun-2
https://segmentfault.com/u/hppyvyv6/articles
https://juejin.cn/user/3315782802482007
https://space.bilibili.com/352476552/article
https://cloud.tencent.com/developer/column/93230
https://www.jianshu.com/u/0f894314ae2c
https://www.toutiao.com/c/user/token/MS4wLjABAAAAeqOrhjsoRZSj7iBJbjLJyMwYT5D0mLOgCoo4pEmpr4A/
CSDN、GitHub、知乎、开源中国、思否、掘金、简书、腾讯云、哔哩哔哩、今日头条、新浪微博、个人博客、全网可搜《小陈运维》