tensorflow federated (下面简称为TFF) 是谷歌开发的一款开源联邦学习框架,该框架基于tensorflow (下面简称为TF) 运行.安装这个框架花了我两天时间,现在对安装过程进行总结.
本帖子总共分为3章,第一章介绍TFF的基本资源.第二章介绍安装的步骤,第三章遇到的问题及其解决方法.
TFF API: https://tensorflow.google.cn/federated/api_docs/python/tff
TFF github : https://github.com/tensorflow/federated/
TFF 安装教程1:链接
TFF 安装教程2:链接
TF docker hub : https://hub.docker.com/r/tensorflow/tensorflow/tags
docker 安装教程:docker教程
一句话总结:python3.8以下的建议直接安装TF2.5.0和TFF0.19.0版本
根据github上的信息:
可以知道,从TFFv0.21.0往后的版本,都放弃了对python3.7和3.8的支持,只支持3.9或更高的。
而TensorFlow的2.9.1的版本docker镜像下载下来是python3.8.1的,所以就用不了TFFv0.21.0,最高只能用到TFFv0.20.0。
这里需要确定2个版本,TF的版本和TFF 的版本.查询博客发现了下面的版本信息.(没有在官网上找到)
还有一些老版本的TF对应:
```
TensorFlow Federated TensorFlow
0.10.1 tensorflow 2.0.0
0.10.0 tensorflow 2.0.0
0.9.0 tf-nightly 2.1.0.dev20191005
0.8.0 tf-nightly 1.15.0.dev20190805
0.7.0 tf-nightly 1.15.0.dev20190711
0.6.0 tf-nightly 1.15.0.dev20190626
0.5.0 tf-nightly 1.14.1.dev20190528
0.4.0 tensorflow 1.13.1
0.3.0 tensorflow 1.13.1
0.2.0 tensorflow 1.13.1
0.1.0 tensorflow 1.13.0rc2
```
这里,我选择了TF 2.5.0 对应 TFF 0.19.0.
这里需要安装好docker,如果没有安装可以看docker教程进行安装.
安装好docker后,到 docker hub 网站TF 页面下,搜索2.5.0,选择2.5.0-gpu-jupyter,点击右边文字复制到终端运行.
等待镜像拉取完成,然后通过下面的命令运行容器:
docker run -it --gpus all \
-p 8888:8888 \
tensorflow/tensorflow:2.5.0-gpu-jupyter
运行后会在终端弹出界面:
此时可以通过ctrl+单击网址,打开jupyter.
我们这里使用了vscode作为docker容器管理.会把终端先关闭,然后在vscode中通过docker插件打开.选择容器,然后右键选择Start
然后继续点击右键选择 Attach Shell
此时可以看到右侧已经进入了容器内部:
使用如下命令进行安装:
pip install --upgrade tensorflow_federated==0.19.0 --use-feature=2020-resolver
此处没有什么bug,直接安装成功
注意!!如果之前安装的TF版本不是2.5.0,在安装TFF0.19.0的时候,会自动卸载原来的TFF,重新安装TF2.5.0.经过个人测试,原来的TF版本高于2.5.0时,重新安装TF2.5.0依然可以调用GPU. 如果原来的TF版本低于TF2.5.0,重新更新后,由于Docker内的cuda版本并没有随之更新,所以可能造成无法使用cuda和gpu的情况.
下载jupyter测试脚本:
https://download.csdn.net/download/condom10010/86510793
运行结果:
可以看到TF TFF都能正常导入,并且GPU也能够正常调用.
docker容器是临时存在的,如果移除了当前容器,再创建新的容器,我们安装的TFF就会丢失.为了避免丢失,这里选择重新制作一个新的镜像保存下来.通过下面的指令进行创建:
docker commit -m="tensorflow2.5.0+TFF0.19.0+gpu+jupyter" \
-a="用户名" \
容器id \
tff_docker:0.19.0
之后我们就可以从本地镜像tff_docker:0.19.0
直接创建一个TFF的环境了.
安装安TF和TFF,发现jupyter内代码无法补全.经调查发现是jedi版本冲突,解决方法是卸载jedi ,之后重启容器.
pip uninstall jedi --yes