引言

不采用docker, 以防拖慢速度. 打算部署PyTorch, Tensorflow 和 Keras框架.

版本选择

如何选择系统, CUDA, CUDNN, Tensorflow, Pytorch, Keras等版本呢? 首先看GPU, 一些新的GPU卡, 老的CUDA驱动和深度学习框架版本可能不支持, 性能无法发挥, 比如 这里. 对于新的显卡要尽量安装新版本的CUDA驱动和深度学习框架. 但由于有时要运行别人基于老版本框架开发的程序, 而新老版本的代码一般不兼容. 特别地, 对于Tensorflow来讲, Tensorflow2 与 Tensorflow1差异很大, 这种情况下就需要安装不同版本的CUDA驱动, 然后通过更改环境变量来切换CUDA, 可以参考这里.

tensorflow common installation problems 里可以看到Tensorflow各版本对应的CUDA, CUDNN, Python, GCC等工具链的版本. 本教程打算安装最新的 Tensorflow 2.6.0 (要求CUDA 11.2, CUDNN 8.1); 和Tensorflow1.15.0(要求 CUDA 10.0, CUDNN 7.4) .

对于Pytorch, 可以从 这里 查看不同版本对应的CUDA版本(Bcu后面的数字), 同时可以下载 whl 格式的安装包. 也可以从 这里 查看. 本文选择安装最新的 Pytorch1.9.0 (要求 CUDA 10.2CUDA 11.1)

对于CUDA, 从 这里 可以选择下载最新的CUDA安装包, 从 这里 可以下载旧版本的CUDA安装包. 通过浏览可以发现 (也可以访问 cuda installation guide 查看) , 从 CUDA 10.0 起才开始支持 Ubuntu 18.04, 从 CUDA 11.0 起才开始支持 Ubuntu 20.04, 从 CUDA 11.4 起不再支持 Ubuntu 16.04. 因而综合来讲, 安装 Ubuntu 18.04 比较合适.

本教程选择版本如下:

  • Ubuntu18.04.5, 从 这里 下载 ubuntu-18.04.5-desktop-amd64.iso
  • CUDA11.2.2 + CUDNN7.6CUDA10.2.89 + CUDNN8.1, 从 这里 下载 cuda_11.2.2_460.32.03_linux.runcuda_10.2.89_440.33.01_linux.run, 从 这里 下载 cudnn-11.2-linux-x64-v8.1.1.33.tgzcudnn-10.2-linux-x64-v7.6.5.32.tgz
  • Anaconda3, 从 这里 下载 Anaconda3-2021.05-linux-x86_64.sh
  • Python3.7
  • Tensorflow2.6.0Tensorflow1.15.0, 分别从
  • PyTorch1.9.0PyTorch1.6.0, 从 这里下载

Python包离线部署

只要有源码或安装包就可以离线安装, 问题是Python的包间的依赖关系复杂, 一个包可能涉及多个依赖, 一个个下载比较麻烦. 有多种方案可以解决该问题, 一种是利用 pip 工具, 另一种是通过 Anaconda, 两种方法都需要在能够连网的机器上先安装好环境或者下载好安装包, 下面简要介绍.

PIP方案

  1. 首先使用 pip freeze > requirements.txt 命令将当前环境的Python包名导出到 requirements.txt 文件中.
  2. 然后使用 pip install -r requirements.txt -d python_pkgs 下载所有包到 python_pkgs 文件夹.
  3. 在不能连网的机器上, 通过执行 pip install -r requirements.txt --no-index --find-links=file://python_pkgs 安装包.

Anaconda方案

开始安装部署

安装系统

目前对于UEFI的启动方式, 是支持Windows和Ubuntu独立引导的, 即任何一个系统无法启动都不会影响另一个系统的启动, 即使把一个系统的引导菜单删除, 也不会影响. 这需要确保几个问题:

  1. Windows是基于UEFI安装的
  2. 安装Ubuntu时选择"Something else", 并且将 /boot/efi 挂载点设置到 EFI分区(也叫ESP分区)

详细可以参考Installing Ubuntu in UEFI modeDual booting Windows and Linux using UEFI.

一般建议一个盘仅有一个EFI (即ESP)分区, 现在, 一般预装了Windows系统的机器都会有一个ESP分区, 安装Ubuntu时依然使用它, Ubuntu会自动检测到.

安装驱动

安装编译依赖

一种方案是直接从 中下载, 可参考 这里. 另一种方法是在装有同样Ubuntu系统且可上网的机器上使用命令自动下载, 然后拷贝到无法联网的机器上, 执行安装命令.

这里采用第二种方法. 提示: 可以不用在可上网机上安装Ubuntu系统, 可以使用U盘启动Ubuntu系统, 然后点击试用Ubuntu, 但是要将下载的库手动拷贝到其它盘, 否则关闭U盘上的系统, 再重启就没有了.

使用如下命令只下载不安装包, 下载的包在目录 /var/cache/apt/ 下, 将 apt 文件夹拷贝到其它盘, 然后复制到不可连网的机器上相应的目录 (鼠标拷贝提示无权限无法copy时, 请使用 sudo cp -r -f folderfrom folderto, 其中 folderfrom 为源路径, folderto 为目标路径).

sudo apt install -d gcc make build-essential

拷贝完成后, 使用如下命令即可自动安装, 请注意无 -d.

sudo apt install gcc make build-essential

如果提示: "E: Unmet dependencies. Try ‘apt --fix-broken…’ " 错误, 则使用 sudo apt --fix-broken Install 修复即可.

安装CUDA

请参考本人博客 Ubuntu 16.04 LTS + CUDA8.0 + cudnn6.0官方文档.

安装CUDNN

请参考本人博客 Ubuntu 16.04 LTS + CUDA8.0 + cudnn6.0官方文档.

深度学习框架的部署

本教程采用Anaconda管理安装深度学习框架, 首先在能够连网的机器上, 通过Anaconda安装, 然后复制 envs 下的环境到不能联网的机器.

Tensorflow

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐