在cuda版本为10.0, 系统为Ubuntu16.04的操作系统上部署深度学习环境。
容器创建
首先在docker hub上寻找一个合适的gpu版本的tensorflow镜像,比如tensorflow/tensorflow,因为这个是与cuda10.0匹配的。
使用下面的命令拉取镜像:
docker pull tensorflow/tensorflow:1.13.0rc1-gpu
拉取好后使用docker images
命令查看该镜像的id,假设为5c495711b379
,则使用下面的命令创建一个容器。
docker run --runtime=nvidia -it -v /home/biod/:/notebooks --env LANG=C.UTF-8 -e PASSWORD="yibaojiejie" -p 1899:8888 --shm-size=8G --name yibaojiejie -d --restart=always 5c495711b379
如果端口号没有被占用,且没有创建同名容器,则可以使用docker ps
查看刚刚创建的容器id,假设为841d44dd4b3c
,使用
docker attach 841d44dd4b3c
进入该容器。对于比较大的容器,这一步可能会卡住,此时直接Ctrl + C
即可,就会发现已经进入了。
tensorflow及相关环境配置
进入容器后默认的python版本是2.7的,方便起见,使用anaconda3来安装python3。
wget https://repo.anaconda.com/archive/Anaconda3-2020.07-Linux-x86_64.sh
来下载anaconda。(后面的链接地址在anaconda的网站上找)
下载完成后打开~/.bashrc
,在末尾添加
export PATH="/root/anaconda3/bin:$PATH"
然后source ~/.bashrc
。此时使用which python
查看python路径,就会发现是anaconda中的python。
注意:新安装的容器中可能没有wget
或者vim
等,使用apt-get install XX
安装即可,如果定位不到,使用apt-get update
再安装。
现在的anaconda默认的python是3.8版本的,有些低版本的包不支持了,所以我们使用
conda create --name py36 python=3.6
来创建一个3.6的环境。
创建完成后使用
conda activate py36
来进入该环境。第一次使用时需要init
当前的shell
,即
conda init shellname
常见的shell
有bash
等。为了方便后面的使用,我们可以安装一个fish
。安装的命令如下:
apt-add-repository ppa:fish-shell/release-2
apt-get update
apt-get install fish
安装完成后,只需在命令行输入fish
即可使用。此时上面的init
就变成了
conda init fish
为了使该过程生效,我们需要使用exit
退出当前的容器(可以多次使用到退出容器为止),再重新attach
。
重新进入我们的py36
环境。此后,所有的操作均应在此环境下进行。
首先安装pytorch
:
pip install torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f https://download.pytorch.org/whl/torch_stable.html
然后安装tensorflow:
pip install tensorflow-gpu==1.15.2
最后安装keras。安装时如果使用
pip install keras
则会显示需要2.2以上的tensorflow
。所以用
pip install keras==2.3.0
来安装。
配置jupyter notebook
使用
pip install jupyter
来安装jupyter。然后使用
jupyter notebook --generate-config
来生存配置文件。打开文件~/.jupyter/jupyter_notebook_config.py
,在末尾加上
import os
from IPython.lib import passwd
c = c # pylint:disable=undefined-variable
c.NotebookApp.ip = '0.0.0.0' # https://github.com/jupyter/notebook/issues/3946
c.NotebookApp.port = int(os.getenv('PORT', 8888))
c.NotebookApp.open_browser = False
c.NotebookApp.notebook_dir = '/notebooks/'
# sets a password if PASSWORD is set in the environment
if 'PASSWORD' in os.environ:
password = os.environ['PASSWORD']
if password:
c.NotebookApp.password = passwd(password)
else:
c.NotebookApp.password = ''
c.NotebookApp.token = ''
del os.environ['PASSWORD']
此时运行
jupyter notebook --allow-root
就可以在XXX.XX.XXX.XXX:1899
打开notebook
了。此处的1899是上面启动容器时设置的端口号 ,前面的是服务器在内网的网址。
至此,我们的容器和深度学习环境就基本安装完毕了。
openslide的安装
这一部分是关于openslide
软件安装的,如果不需要处理相应格式的病理图像可略过。
使用apt-get install openslide-tools
安装时,安装的是3.4.0版本的,这一版本存在极大的缺陷,使用downsamples
会产生很多问题,所以需要安装3.4.1版本的。
首先请务必使用
apt-get purge --auto-remove openslide-tools
apt-get purge --auto-remove python-openslide
将3.4.0的版本彻底删除干净。
然后在这里下载3.4.1版本的tar.gz
包。
使用
tar -xzvf file.tar.gz
进行解压。
然后使用下面的命令安装相应的依赖(如果libxgdk-pixbuf2.0-dev
找不到,略过即可)。
apt-get update
apt-get install libtiff-dev
apt-get install libglib2.0-dev
apt-get install libcairo2-dev
apt-get install libxml2-dev
apt-get install libxgdk-pixbuf2.0-dev
apt-get install libjpeg-dev
apt-get install libpng-dev
进入解压包,用
./configure
如果发现还有比如sqlite3
没有安装,则使用apt-get install sqlite3
安装即可。安装后可能发现还是找不到,这时想办法安装
apt-get install sqlite3-dev
(有可能直接输入上面的命令就可以了)。
在这些包中,OpenJpeg
的安装比较复杂,因为不能直接使用apt-get install
找到。在其github仓库上找到code下载链接
git clone https://github.com/uclouvain/openjpeg.git
(如果没有git,同样适用apt-get
安装)。
进入解压后的openjpeg-master
目录,执行下面的命令:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make install
make clean
可能没有cmake
指令,还是使用apt-get
安装。
上述过程中,任何时候./configure
发现gdk-pixbuf-2.0
不存在,均可使用
apt-get install libgdk-pixbuf2.0-dev
安装,如果不成功则暂时略过。
最后,使用
./configure
成功。
进入/root/ananconda3/bin
(该路径根据安装的python所在路径而定),执行下面的命令
cp /usr/local/lib/libopenslide.so.0 ./
cp /usr/local/lib/libopenslide.so ./
输入
make
make install
即可进行安装。
此时,可能使用
openslide-show-properties --version
会出现问题。留意上面./configure
成功时出现过
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
的信息。执行下面两条命令
export LD_RUN_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib/
查看openslide
版本为3.4.1,则安装完成。
最后,
pip install openslide-python
安装python接口即可。
这部分内容来源于pzSuen,天牙的窝以及像风一样Pro
的博客。
打包容器
由于上面的安装过程比较复杂,所以可以将当前的容器打包成一个镜像,以后就可以根据该镜像创建容器。假设现在容器的id为5c495711b379
,想将其打包为一个名叫xuanji
的镜像,使用下面的命令
docker commit -a "xingming" -m "zhushi" 5c495711b379 xuanji
使用
docker images
就可以看到一个名为xuanji
的镜像了。