[tensorflow]联邦学习框架TFF安装记录(基于docker)

1.介绍

tensorflow federated (下面简称为TFF) 是谷歌开发的一款开源联邦学习框架,该框架基于tensorflow (下面简称为TF) 运行.安装这个框架花了我两天时间,现在对安装过程进行总结.

本帖子总共分为3章,第一章介绍TFF的基本资源.第二章介绍安装的步骤,第三章遇到的问题及其解决方法.

1.1 网站资源

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教程

2.步骤

2.1 确定安装版本

一句话总结:python3.8以下的建议直接安装TF2.5.0和TFF0.19.0版本

根据github上的信息:
[tensorflow]联邦学习框架TFF安装记录(基于docker)_第1张图片
可以知道,从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 的版本.查询博客发现了下面的版本信息.(没有在官网上找到)
[tensorflow]联邦学习框架TFF安装记录(基于docker)_第2张图片
还有一些老版本的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.

2.2 下载TF的docker镜像并进入容器内部

这里需要安装好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
[tensorflow]联邦学习框架TFF安装记录(基于docker)_第3张图片
然后继续点击右键选择 Attach Shell
[tensorflow]联邦学习框架TFF安装记录(基于docker)_第4张图片
此时可以看到右侧已经进入了容器内部:
[tensorflow]联邦学习框架TFF安装记录(基于docker)_第5张图片

2.3 在容器内安装TFF

使用如下命令进行安装:

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的情况.

2.4 测试是否安装成功

下载jupyter测试脚本:
https://download.csdn.net/download/condom10010/86510793
运行结果:[tensorflow]联邦学习框架TFF安装记录(基于docker)_第6张图片
可以看到TF TFF都能正常导入,并且GPU也能够正常调用.

2.5 最后一步,保存当前容器为镜像

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的环境了.

3.问题和解决

3.1 代码无法补全的问题

安装安TF和TFF,发现jupyter内代码无法补全.经调查发现是jedi版本冲突,解决方法是卸载jedi ,之后重启容器.

pip uninstall jedi --yes

3.2 vscode 内需要安装插件

必须安装的是 Pylance, Python,Code Runner
其他的推荐安装.
[tensorflow]联邦学习框架TFF安装记录(基于docker)_第7张图片

你可能感兴趣的:(Docker入门教程系列,Tensorflow学习,Tensorflow,Federated联邦学习,tensorflow,docker,深度学习)