NVIDIA cuDNN

NVIDIA® CUDA® 深度神经网络库(cuDNN)是一款 GPU 加速的深度神经网络基础算子库。cuDNN 为标准操作(如前向和反向卷积、注意力、矩阵乘法(matmul)、池化和归一化)提供高度优化的实现。


下载 cuDNN

下载 cuDNN 库下载 cuDNN 前端




( GitHub)

cuDNN 也可以通过下方的包管理器之一进行下载。

使用 conda 快速安装

conda install nvidia::cudnn cuda-version=12

安装 cuDNN 库

使用 Docker 快速拉取

docker pull nvidia/cuda:12.8.1-cudnn-devel-ubuntu22.04

安装 cuDNN 库

使用 pip 快速安装

pip install nvidia-cudnn

安装 cuDNN 库


pip install nvidia-cudnn-frontend

安装 cuDNN 前端 API

文档

论坛


cuDNN 的工作原理

  • 加速学习:cuDNN 提供了针对 Tensor Core 优化的内核,在计算密集型操作中实现最佳性能,并为不同问题规模挑选合适的内核提供启发式算法。

  • 融合支持:cuDNN 支持将计算密集型和内存密集型操作进行融合。常见的通用融合模式通常通过运行时内核生成实现,特殊的融合模式则使用预编写的优化内核。

  • 表达性算子图 API:用户可以将计算定义为张量上的操作图。cuDNN 库既有直接的 C API,也有开源的 C++ 前端以提升使用便利性。大多数用户选择前端作为使用 cuDNN 的入口。

cuDNN API 代码示例

该代码使用 cuDNN 与 PyTorch 集成,实现了带有偏置的批量矩阵乘法。

import torch
import cudnn

# Prepare sample input data. nvmath-python accepts input tensors from pytorch, cupy, and
# numpy.
b, m, n, k = 1, 1024, 1024, 512
A = torch.randn(b, m, k, dtype=torch.float32, device="cuda")
B = torch.randn(b, k, n, dtype=torch.float32, device="cuda")
bias = torch.randn(b, m, 1, dtype=torch.float32, device="cuda")

result = torch.empty(b, m, n, dtype=torch.float32, device="cuda")

# Use the stateful Graph object in order to perform multiple matrix multiplications
# without replanning. The cudnn API allows us to fine-tune our operations by, for
# example, selecting a mixed-precision compute type.
graph = cudnn.pygraph(
   intermediate_data_type=cudnn.data_type.FLOAT,
   compute_data_type=cudnn.data_type.FLOAT,
)

a_cudnn_tensor    = graph.tensor_like(A)
b_cudnn_tensor    = graph.tensor_like(B)
bias_cudnn_tensor = graph.tensor_like(bias)

c_cudnn_tensor = graph.matmul(name="matmul", A=a_cudnn_tensor, B=b_cudnn_tensor)
d_cudnn_tensor = graph.bias(name="bias", input=c_cudnn_tensor, bias=bias_cudnn_tensor)

# Build the matrix multiplication. Building returns a sequence of algorithms that can be
# configured. Each algorithm is a JIT generated function that can be executed on the GPU.

graph.build([cudnn.heur_mode.A])
workspace = torch.empty(graph.get_workspace_size(), device="cuda", dtype=torch.uint8)

# Execute the matrix multiplication.
graph.execute(
   {
       a_cudnn_tensor: A,
       b_cudnn_tensor: B,
       bias_cudnn_tensor: bias,
       d_cudnn_tensor: result,
   },
   workspace
)

cuDNN Graph API 描述的操作图示例

先进行 ConvolutionFwd(卷积前向),随后执行包含两个操作的有向无环图(DAG)。

文档

完整指南说明了 cuDNN 前端和后端的安装与使用。

前端示例

示例展示了 Python 和 C++ 前端 API 的使用方法。

最新版本博客

了解如何在 cuDNN 9 中使用缩放点积注意力(SDPA)加速 transformer。

NVIDIA Blackwell 上的 cuDNN

了解 cuDNN 针对 NVIDIA Blackwell 微缩放格式的全新/更新 API 以及如何使用这些 API 进行编程。


主要特性

深度神经网络

深度学习神经网络广泛应用于计算机视觉、对话式 AI 以及推荐系统,并推动了诸如智能驾驶与智能语音助手等突破性进展。NVIDIA 的 GPU 加速深度学习框架显著缩短了这些技术的训练时间,将数天的训练过程缩短到数小时。

cuDNN 为云端、嵌入式设备和智能驾驶汽车中的深度神经网络提供高性能、低延迟的推理基础库。

  • 加速 attention 训练/预填、卷积和矩阵乘法(matmul)等计算密集型操作

  • 优化如 attention 解码、池化、softmax、归一化、激活、逐点操作、张量变换等内存密集型操作

  • 支持计算密集型与内存密集型操作的融合

  • 提供运行时融合引擎,可为常见融合模式在运行时生成内核

  • 针对如融合 attention 等重要专用模式进行优化

  • 根据具体问题规模应用启发式算法,选择合适的实现

cuDNN Graph API 与融合

cuDNN Graph API 设计用于表达深度学习中的常见计算模式。cuDNN 图将操作表示为节点、张量表示为边,这与典型深度学习框架中的数据流图类似。

通过 Python/C++ 前端 API(推荐)以及底层 C 后端 API(用于旧用例或不适合 Python/C++ 的特殊场景),均可便捷地访问 cuDNN Graph API。

  • 支持将受内存限制的操作灵活地融合到矩阵乘法(matmul)和卷积的输入与输出中

  • 提供如 attention 与卷积归一化等模式的专用融合

  • 支持前向和反向传播

  • 针对不同问题规模,提供最佳实现的启发式预测

  • 开源 Python/C++ 前端 API

  • 支持序列化与反序列化


cuDNN 加速框架

cuDNN 加速了广泛使用的深度学习框架,包括 PyTorch、JAX、Caffe2、Chainer、Keras、MATLAB、MxNet、PaddlePaddle 和 TensorFlow。

cuDNN Accelerated Framework - Caffe2
cuDNN Accelerated Framework - Chainer
cuDNN Accelerated Framework - JAX
cuDNN Accelerated Framework - MATLAB
cuDNN Accelerated Framework - Microsoft Cognitive Toolkit
cuDNN Accelerated Framework - MXNet
cuDNN Accelerated Framework - PaddlePaddle
cuDNN Accelerated Framework - PyTorch
cuDNN Accelerated Framework - TensorFlow
 cuDNN Accelerated Framework - Wolfram Language
cuDNN Accelerated Framework - XLA

相关库与软件

NVIDIA NeMo™

NeMo 是一个端到端的云原生框架,开发者可用其构建、自定义并部署拥有数十亿参数的生成式 AI 模型。

NVIDIA TensorRT™

TensorRT 是用于高性能深度学习推理的软件开发工具包。

NVIDIA 优化框架

深度学习框架通过高级编程接口为设计、训练和验证深度神经网络提供构建模块。

NVIDIA 集合通信库

NCCL 是为高带宽、低延迟、GPU 加速网络设计的通信库。


更多资源

Join the Developer Community

加入社区

Join the NVIDIA Developer Program

加入 NVIDIA 开发者计划

NVIDIA Inception Program

加速您的初创公司


道德 AI

NVIDIA 认为可信的 AI 是共同的责任,并已建立相关政策与实践,助力广泛的 AI 应用开发。当根据我们的服务条款下载或使用模型时,开发者应与其支持的模型团队协作,确保所用模型符合相关行业和应用场景要求,并预防产品被误用的风险。

如需报告安全漏洞或 NVIDIA AI 相关问题,请访问官方渠道。

立即开始使用 cuDNN

下载 cuDNN 库下载 cuDNN 前端




( GitHub)