使用 GPU 软件包#

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

虽然 AMD 和 NVIDIA 都是主要的 GPU 供应商,但 NVIDIA 目前是机器学习和云计算中最常见的 GPU 供应商。此页面上的信息仅适用于 NVIDIA 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 功能,无论市场如何。虽然过去 10 年发布的任何 NVIDIA GPU 理论上都可以与 Anaconda 协同工作,但以下选项是机器学习,特别是模型训练用例的最佳选择

  • Tesla P100 或 V100

  • Titan RTX

  • GeForce RTX 3050

  • 各种最新的 Quadro 型号

部署的模型并不总是需要 GPU。当部署的模型需要 GPU 时,还有其他 Tesla GPU 型号更适合推理而不是训练,例如 Tesla P4、P40 和 T4。

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

大多数用户将拥有 Intel 或 AMD 64 位 CPU。Anaconda 建议 CPU 内存至少是 GPU 内存的两到四倍,并且至少有 4 个 CPU 内核来支持模型训练之前的数据准备。IBM POWER 8/9 系统也有一些支持 GPU 的 Anaconda 软件包。

软件要求#

CUDA 在 Linux 系统上具有最佳性能和用户体验。Windows 也受支持。自 2014 年以来,苹果计算机尚未发布带有 NVIDIA GPU 的产品,因此它们通常缺乏机器学习应用程序的内存,并且仅支持 GPU 上的 Numba。

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

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

所有其他 CUDA 库都作为 conda 软件包提供。

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

必需的 NVIDIA 驱动程序版本,摘录自NVIDIA CUDA 工具包发布说明

CUDA 版本

Linux x86_64 驱动程序版本

Windows x86_64 驱动程序版本

CUDA 11.8.x

>= 450.80.02

>= 452.39

CUDA 12.0.x

>= 525.60.13

>= 527.41

CUDA 12.1.x

>= 525.60.13

>= 527.41

CUDA 12.2.x

>= 525.60.13

>= 527.41

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

可用包#

TensorFlow#

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

conda install tensorflow-gpu

其他包,如 Keras,依赖于通用的 tensorflow 包名称,并将使用安装的任何 TensorFlow 版本。这使得在环境之间切换变体变得直截了当。

PyTorch#

PyTorch 是另一个以深度学习为重点的机器学习库。PyTorch 在运行时检测 GPU 的可用性,因此用户无需为 GPU 支持安装不同的包。

conda install pytorch

Caffe(仅限 Linux)#

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

conda install caffe-gpu

Chainer/CuPy#

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

conda install chainer

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

conda install cupy

XGBoost(仅限 Windows/Linux)#

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

conda install py-xgboost-gpu

MXNet(仅限 Linux)#

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

conda install mxnet-gpu

Numba#

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

conda install numba cudatoolkit

企业中的 GPU 支持#

当集群具有包含 GPU 的资源配置文件时,可以在数据科学和 AI 工作台项目中使用启用 GPU 的 conda 包。有关更多详细信息,请参阅 工作台常见问题解答中的 GPU 支持部分