使用GPU包#

Anaconda 发行版包含多个使用 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配合使用,但这些是机器学习和特别是模型训练用例的最佳选择:

  • 特斯拉 P100 或 V100

  • 泰坦 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系统,Anaconda也提供了有限数量的支持GPU的包。

软件需求#

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 Toolkit 发布说明:

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 类似,它有三种变体,通过 mxnet-gpu 元包选择 GPU 变体。

conda install mxnet-gpu

Numba#

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

conda install numba cudatoolkit

企业中的GPU支持#

当集群包含GPU的资源配置文件时,可以在数据科学与AI工作台项目中使用支持GPU的conda包。更多详情请参见工作台FAQ中的GPU支持部分