前言
实验室又腾出来了一台服务器,但是用的TITAN X显卡,所以需要重新安装一遍环境,搞了一天才弄好,这篇博文要记录一下安装过程供之后使用。(很多坑踩了一次又一次)
详细步骤
0. 环境参数
首先我要说一下我的环境参数:
项目 | 参数 |
---|---|
ESXi | 6.7 |
Ubuntu | 16.04 |
显卡 | NVIDIA GeForce GTX TITAN X |
显卡驱动 | 390.77 |
Anaconda3 | 5.2.0 |
caffe | 1.0 |
gcc | 5.4.0 |
1. 显卡驱动
我这里直接使用ESXi把显卡直通给虚拟机使用,所以下载对应版本的显卡驱动就行了。查看显卡型号输入lspci|grep NVIDIA
就可以了,然后到NVIDIA驱动下载下载对应的驱动,操作系统选择Linux 64bit选项,得到一个.run
文件。运行显卡驱动run文件,记得加上--no-opengl-files
参数,理由和详细步骤看我之前的博文。如果安装成功,输入nvidia-smi
命令应该会输出驱动信息,如果输出Unable to determine the device handle for GPU 0000:03:00.0: Unknown Error
,可以参考这篇博文。我就遇到了这个问题,按照这篇博文的指导,用ssh登录ESXi主机然后修改ubuntu虚拟机的.vmx
文件,添加hypervisor.cpuid.v0 = FALSE
一行。
2. CUDA
caffe依赖CUDA,这里我安装CUDA8.0。到CUDA Toolkit 8.0 - Feb 2017下载对应的CUDA安装程序,选择runfile
格式。运行该run文件,不要选择安装显卡驱动,可以添加软链接,选择添加cuda库到环境,省事一些。然后,我们需要把CUDA编译器添加到PATH变量里,编辑~/.bashrc
文件,添加export PATH="/usr/local/cuda/bin:$PATH"
,确定这个路径下有nvcc。执行nvcc -V
查看CUDA版本号。如果你安装了CUDA示例程序,可以到~/NVIDIA_CUDA-8.0_Samples
目录下make,然后执行~/NVIDIA_CUDA-8.0_Samples/1_Utilities/deviceQuery/
目录下的./deviceQuery
确认CUDA安装好了。
3. cuDNN
去cuDNN Download下载cuDNN,需要注册NVIDIA账号。选择CUDA 8.0版本的,然后下载三个deb文件:
1 | cuDNN v7.2.1 Runtime Library for Ubuntu16.04 (Deb) |
按照上面的顺序依次安装三个deb包,例如:
1 | sudo dpkg -i install libcudnn.deb |
如果想要验证是否安装成功,可以运行一下cuDNN的sample,代码在/usr/src/cudnn_samples_v7
,例如:
1 | cp /usr/src/cudnn_samples_v7 ~ |
4. caffe依赖库
1 | sudo apt install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev |
5. 下载caffe
去github下载caffe,
1 | //你可能需要翻墙 |
6. Anaconda3
去官网下载python3版本的Anaconda,直接安装到home目录下就可以了,不需要root权限。下载pyCaffe的依赖库,依赖在(caffe目录)/python/requirements.txt
里,有:
1 | cython numpy scipy scikit-image matplotlib ipython h5py leveldb networkx nose pandas python-dateutil python-gflags pyyaml pillow six |
这里我用conda创建一个caffe专用的虚拟python环境,名字就叫caffe
,这样方便以后配置别的python应用,具体操作如下:
1 | //创建一个名叫caffe的python环境,python版本为3.6.5 |
把pyCaffe依赖库添加到/etc/ld.so.conf
中, ld.so.conf的内容如下:
1 | include /etc/ld.so.conf.d/*.conf |
第二行是cuda库的位置,第三行是之前创建的名叫caffe的环境的库的位置,执行sudo ldconfig
更新库内容。
修改~/.bashrc
文件,添加pyCaffe的路径,此时的~/.bashrc
文件应该有以下修改:
1 | # CUDA库 |
7. 配置Make文件
确保一下protobuf的版本,protoc --version
,这时应该是2.×版本的。
1 | cd caffe |
需要修改的内容有:
1 | //使用CUDNN |
8. 编译caffe
1 | cd caffe |
9. 编译pyCaffe
1 | make pycaffe |
10. 安装protobuf
之前为了防止版本问题没有安装protobuf的python库,现在已经编译完了,可以安装了,
1 | source activate caffe |
这时候protobuf --version
应该是3.×版本的。
11. 配置notebook
首先看看pyCaffe有没有安装好,打开终端:
1 | source activate caffe |
如果显示如下表明pyCaffe已经装好了。
然后需要配置一下jupyter notebook
首先为conda的caffe环境安装notebook
1 | source activate caffe |
配置好后就能够通过 ipaddr:8888 的方式访问了。
参考
Caffe/Installation
Caffe/Ubuntu Installation
ESXI上的UBUNTU16.04虚拟机安装NVIDIA驱动
nvidia-smi reports Unable to determine the device handle for GPU
Jupyter Notebook之web访问密码设定
Github/BVLC/caffe/Ubuntu 16.04 Installation Guide