使用 GPU 包

Anaconda Distribution 包括几个使用 GPU 作为加速器来提高性能的软件包,有时提高五倍或更多。这些软件包可以显着改善机器学习和模拟用例,尤其是深度学习。阅读有关在 Anaconda 中开始使用 GPU 计算的更多信息。

虽然 AMD 和 NVIDIA 都是 GPU 的主要供应商,但 NVIDIA 是目前用于机器学习和云计算的最常见 GPU 供应商。此页面上的信息仅适用于 NVIDIA GPU。截至 2018 年 8 月 27 日,Anaconda 的实验性 AMD GPU 包正在进行中,但尚未得到官方支持。

GPU 兼容性

GPU 加速需要 TensorFlow 等项目的作者为可在 GPU 上执行的算法实现 GPU 特定的代码路径。GPU 加速项目将调用 NVIDIA 特定的标准算法库或使用 NVIDIA GPU 编译器来编译自定义 GPU 代码。只有项目作者针对 GPU 使用而专门修改的算法会被加速,项目的其余部分仍将在 CPU 上运行。

对于大多数包,GPU 支持是编译时或运行时的选择,允许包的变体可用于仅 CPU 使用。当 GPU 支持是编译时选择时,Anaconda 通常需要构建两个版本的包,以允许用户在仅在 CPU 上运行的项目的“常规”版本和“启用 GPU”的版本之间进行选择在 GPU 上运行的项目。

由于项目作者启用 CUDA 支持的方式不同,因此没有通用的方法来检测包中的 GPU 支持。对于许多支持 GPU 的包,都依赖于cudatoolkit包。Numba 等其他软件包没有cudatoolkit依赖关系,因为它们可以在没有 GPU 的情况下使用。

硬件要求

NVIDIA 于 2006 年发布了用于 GPU 编程的 CUDA API,并且从那时起发布的所有新 NVIDIA GPU 都支持 CUDA,无论市场如何。尽管过去 5 年发布的任何 NVIDIA GPU 在技术上都可以与 Anaconda 配合使用,但这些是机器学习的最佳选择,尤其是模型训练用例:

  • 特斯拉 P100 或 V100
  • 泰坦 Xp 或 V
  • GeForce 1080 或 1080 Ti
  • 各种最近的 Quadro 型号

部署的模型并不总是需要 GPU。当部署的模型需要 GPU 时,还有其他 Tesla GPU 模型在推理方面比训练更优化,例如 Tesla M4、M40、P4 和 P40。

云和内部数据中心部署需要 Tesla 卡,而 GeForce、Quadro 和 Titan 选项适合在工作站中使用。

大多数用户将拥有 Intel 或 AMD 64 位 CPU。我们建议 CPU 内存至少是 GPU 内存的 2 到 4 倍,并且至少有 4 个 CPU 内核以支持模型训练前的数据准备。为 IBM POWER 8/9 系统提供 GPU 支持的 Anaconda 软件包数量有限。

软件需求

CUDA 的最佳性能和用户体验是在 Linux 系统上。也支持 Windows。自 2014 年以来,Apple 计算机一直没有配备 NVIDIA GPU,因此它们通常缺乏机器学习应用程序的内存,并且仅支持 GPU 上的 Numba。

Anaconda 要求用户已安装最新的 NVIDIA 驱动程序,该驱动程序满足下表中的版本要求。Anaconda 不需要安装 CUDA SDK。

Ubuntu 和其他一些 Linux 发行版附带了一个名为 Nouveau 的用于 NVIDIA GPU 的第三方开源驱动程序。CUDA 需要用官方的闭源 NVIDIA 驱动程序替换 Nouveau 驱动程序。

所有其他 CUDA 库都以 conda 包的形式提供。

支持 GPU 的软件包是针对特定版本的 CUDA 构建的。当前支持的版本包括 CUDA 8、9.0 和 9.2。NVIDIA 驱动程序旨在向后兼容较旧的 CUDA 版本,因此具有 NVIDIA 驱动程序版本 384.81 的系统可以支持 CUDA 9.0 包及更早版本。因此,如果用户没有使用最新的 NVIDIA 驱动程序,他们可能需要通过选择cudatoolkit环境中 conda 包的版本来手动选择特定的 CUDA 版本。要选择一个cudatoolkit版本,请cudatoolkit=8.0在版本规范中添加一个选择器。

所需的 NVIDIA 驱动程序版本,摘自NVIDIA CUDA 工具包发行说明

CUDA 版本 Linux x86_64 驱动版本 Windows x86_64 驱动程序版本
CUDA 8.0 (8.0.61 GA2) >= 375.26 >= 376.51
CUDA 9.0 (9.0.76) >= 384.81 >= 385.54
CUDA 9.2 (9.2.88) >= 396.26 >= 397.44
CUDA 9.2(9.2.148 更新 1) >= 396.37 >= 398.26

有时特定的 GPU 硬件代有最低 CUDA 版本。截至 2018 年 8 月 27 日,唯一相关的限制是 Tesla V100 和 Titan V(使用“Volta”GPU 架构)需要 CUDA 9 或更高版本。

可用包

TensorFlow

TensorFlow 是一个通用的机器学习库,但最常用于深度学习应用程序。tensorflow Anaconda 中支持三种包的变体,其中之一是 NVIDIA GPU 版本。这是通过安装元包来选择的tensorflow-gpu

conda install tensorflow-gpu

其他软件包(例如 Keras)取决于通用tensorflow软件包名称,并且将使用安装的任何版本的 TensorFlow。这使得在环境中的变体之间切换变得容易。

pytorch

PyTorch 是另一个专注于深度学习的机器学习库。PyTorch 在运行时检测 GPU 可用性,因此用户不需要安装不同的包来支持 GPU。

conda install pytorch

咖啡

Caffe 是最早流行的深度学习库之一。

conda install caffe-gpu

Chainer/CuPy(仅适用于 Linux)

Chainer 是一个深度学习库,使用 NumPy 或 CuPy 进行计算。

conda install chainer

Chainer 的配套项目 CuPy 是 NumPy API 的 GPU 加速克隆,可用作 NumPy 的直接替代品,只需对用户代码进行一些更改。安装 CuPy 后,Chainer 是 GPU 加速的。CuPy 也可以单独用于一般数组计算。

conda install cupy

XGBoost

XGBoost 是一个实现梯度提升决策树的机器学习库。训练多种形式的树是 GPU 加速的。

conda install py-xgboost-gpu

MXNet

MXNet 是一个由各种行业合作伙伴(最著名的是亚马逊)支持的机器学习库。与 TensorFlow 一样,它有三种变体,其中 GPU 变体由mxnet-gpu元包选择。

conda install mxnet-gpu

Numba

Numba 是 Python 函数的通用 JIT 编译器。当cudatoolkit包存在时,它提供了一种以纯 Python 语法实现自定义 GPU 算法的方法 。

conda install numba cudatoolkit

Anaconda Enterprise 中的 GPU 支持

当集群具有包含 GPU 的资源配置文件时,启用 GPU 的 conda 包可用于 AE 5 项目。有关更多详细信息,请参阅AE 5 常见问题解答的 GPU 支持部分