python dlib gpu ubuntu conda_Ubuntu 下编译支持 GPU 的 TensorFlow 和 Dlib

Ubuntu 安装

选择 Ubuntu 18.04 LTS 版,安装时不联网,选最小安装,节省安装的时间。

重启时进入 BIOS ,暂时禁用 secure boot ,并改回正确的系统时间。

进入系统后,设置使用本地时区:

sudo timedatectl set-local-rtc 1

在 /etc/apt/source.list.d 下添加阿里云的镜像源: OPSX ,在 软件与更新 中取消勾选 Ubuntu软件 选项卡下默认的源,更新系统。

NVIDIA 驱动安装

添加驱动 ppa 源:

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt update

在 软件与更新 - 附加驱动 中选择版本,点击 应用更改 按钮进行驱动安装,重启。

选择驱动版本可参考下面的信息,但是务必要选择一个版本不低于 CUDA Toolkit 所要求版本的驱动进行安装,我选择了 410.78 版本。

1、从官网下载列表信息中可以看出目前 390.xx 和 410.xx 是稳定版本,396.xx 和 415.xx 是相应的 beta 版本:

2、在 Unix Drivers | NVIDIA 中可看到官方对不同驱动版本的描述 :

3、 CUDA Compatibility 页面中包含 CUDA Toolkit 、显卡与驱动版本兼容情况的详细描述:

4、在 CUDA Toolkit 下载页面选择 runfile (local) 时可以看到更具体的驱动版本号,比如下图中 cuda 9.2.148 对应的就是 396.37 版本的驱动:runfile (local) 自带的驱动版本

一些小细节:cuda runfile (local) 文件是自带驱动的,如果你使用它一并进行驱动安装,就不需要考虑驱动版本问题,相对来说比较省心。

使用 runfile 安装驱动时,在双显卡机器上视主显卡不同需要添加不同参数或者执行不同命令,比如使用 intel 核显一般要加 --no-opengl-libs 参数,详见 runfile-advanced 。

使用 ppa 源安装的驱动对 intel + nvidia 双显卡的机器比较友好,日常不需要 nvidia 计算时切换到 intel 显卡会安静凉爽很多,而手动安装的驱动在 NVIDIA X Server Settings 中会缺少 PRIME Profiles 这一项。

即使无法在 PRIME Profiles 中切换显卡,你仍然可以通过手动执行 sudo prime-select intel/nvidia 的方式切换。

使用 deb (local) 方式安装在遇到驱动版本不兼容时会安装失败, deb (network) 似乎会自动升级,但是下载速度太慢未测试。

正确安装好显卡驱动之后,执行 nvidia-smi 会有显卡等信息输出而不是错误信息,且在 NVIDIA X Server Settings 中可以看到众多选项,包含显卡温度等等,如果没有,就证明显卡驱动安装有问题,不要进行接下来的操作,先把显卡驱动问题解决,否则装上 CUDA Toolkit 也用不了。

CUDA Toolkit 和 cuDNN 安装

选择哪个版本?如果你不遵循 tensorflow 官网给出的版本建议,想选择更新一点的版本,就需要仔细在网上搜索是否有成功使用该版本的例子,不然费时费力地下载、安装和编译,最后做了无用功。

一个小技巧就是参考 Anaconda使用的版本,比如在 main/linux-64 中可以看到:

由此来推断合适的版本及对应关系。当然最好是使用 conda 建立一个使用 tensorflow-gpu 的环境,再查看其具体使用的版本。有 Anaconda 背书,必然是靠谱的。

一般情况下安装好合适的驱动之后直接使用 Anaconda 就好了,但是我打算编译一下 tensorflow-gpu 和 dlib ,所以还要继续。

理论上来说自行编译的包在性能上是要强于通用分发的包的,折腾一下也算值得。通用的包要保证在各种机器上都可以运行,自然会牺牲一些特性,以追求稳定为主;自行编译的包可以通过针对硬件优化、加入硬件特性、使用更新的编译器等等方法来提高性能,所以如果在生产环境下,最好针对生产机编译一下。

对 CUDA Toolkit 我选择了 runfile (local) 的安装方式,仔细阅读并按照 cuda-installation-guide-linux 的说明进行安装即可。

因为之前我已经通过 ppa 源安装好了驱动,禁用 nouveau 和进入 text mode 这些和安装显卡驱动相关的步骤就不需要照做了,安装时遇到提示是否安装显卡驱动时选 no 。runfile 相比 deb 包安装会快很多,且没有多余的步骤,安装完成重启后记得装上 patch 补丁包:

对 cuDNN SDK 的安装选择 cuDNN Library for Linux 项,下载 tgz 压缩包:

仔细阅读并按照 cudnn-install 进行操作,主要是一些文件的复制和权限修改。

配置环境变量

对 CUDA Toolkit 的环境变量配置请参考 post-installation-actions 。

另外需要将 CUDA Toolkit 附带的 CUPTI 库文件目录添加到 LD_LIBRARY_PATH 中:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

上述 export 命令可以添加到 ~/.bashrc 中, 运行 source ~/.bashrc 即时生效。

编译 tensorflow-gpu

按照 从源代码安装 TensorFlow | TensorFlow 一步一步来操作即可,编译耗时视你的 CPU 性能而定,i5-7200U GCC 7.3.0 编译耗时约 4 小时,供参考。

有这么几个小细节:git clone 太慢的话,去 tensorflow github repository 页,先选择你要的分支,再下载对应分支的 zip 包,解压之后使用。

事先要安装好 python 和 pip 。python 使用 apt 安装,根据你的工作环境选择 2/3 版本,pip 通过 Installation - pip 18.1 documentation 来安装,并为 pip 配置一个国内的源:USTC Mirror Help 文档 。

configure 时可能会需要配置 NCCL 版本和路径,按照 nccl-install-guide 的说明进行安装,下载时选择 O/S agnostic local installer 项的 .txz 文件,解压到指定的目录即完成安装。

源码编译完成后,最后 build_pip_package 时可能会出现几个 import error ,比如 ImportError: No module named keras_applications ,只需要按包名使用 pip 安装该缺失的包即可:keras_applications 对应的包名为 keras-applications , keras_preprocessing 对应 keras-preprocessing 。

测试正常

编译 Dlib

依旧是在其 github repository 页切换至最新 tag ,再下载源码 zip 包,节省下载时间:

按照 compile 说明运行编译命令即可,基本无需手动配置,之前按 tensorflow 要求配置好的环境变量,Dlib 会自动使用:

Dlib 量级不大,5 分钟就能完成编译和安装。

其他

最后再次附上版本信息,我使用的是 nvidia driver 410.78 + CUDA Toolkit 9.2 + cuDNN 7.4.1 ,供搜索关键词用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值