近日要使用TensorFlow去训练和部署模型,简单安装后发现TensorFlow-gpu使用的cuda版本与我现在使用的Pytorch的cuda版本并不相同,所以使用docker版本的TensorFlow来解决这一问题。
安装docker-ubuntu16.04
docker有两种安装方式,一种是通过apt命令在线安装,一种是通过下载文件并dpkg命令下载。我在安装过程中,遇到了安装错误,在此也给出清除Linux中docker的过程。
清除docker
step 1
dpkg
step 2
sudo apt-get purge -y docker-engine docker docker.io docker-ce
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce
step 3
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
如果使用dpkg的方式安装 发现还未清除docker残留
sudo find / -name "*docker*"
rm 这些项
cd /var/lib/dpkg/
sudo gedit status
在status与status-old 文件里查找docker相关的项,删除相关内容。
安装docker
Get Docker Engine - Community for Ubuntudocs.docker.com安装nvidia-docker
NVIDIA/nvidia-dockergithub.com# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
$ sudo systemctl restart docker
Install nvidia-docker2 and reload the Docker daemon configuration
$sudo apt-get install -y nvidia-docker2
$sudo pkill -SIGHUP dockerd
测试
docker run --runtime=nvidia -rm nvidia/cuda:9.0-base nvidia-smi
在dockerhub里下载TensorFlow镜像
Docker Hubhub.docker.com选择需要的Tensorflow版本
例如
sudo docker pull tensorflow/tensorflow:2.0.0rc0-gpu-py3
基于基础的TensorFlow Docker镜像进行修改,增加库等
新建dockerfile
dockerfile 的内容例如:
FROM tensorflow/tensorflow:2.0.0rc0-gpu-py3
RUN pip3 install keras==2.1.5
RUN pip3 install pillow
建立自己的docker image
docker build -t huche/tf_keras:tf2.0rc-keras2.1.5 .
开始使用TensorFlow docker
bash
sudo docker run -it --rm -v /home/yolov3/:/mnt --runtime=nvidia huche/tf_keras:tf2.0rc-keras2.1.5 bash
jupyter
sudo docker run -it -p 8888:8888 --rm -v /home/yolov3/:/mnt --runtime=nvidia huche/tf_keras:tf2.0rc-keras2.1.5