DALI
NVIDIA 数据加载库
NVIDIA 数据加载库 (DALI) 是一个可移植的开源库,专用于解码及增强图像、视频和语音,从而加速深度学习应用。DALI 通过重叠执行训练和预处理来减少延迟和训练时间,从而减轻瓶颈影响。DALI 可直接嵌入并替代热门深度学习框架中内置的数据加载程序和数据迭代器,由此实现轻松集成或重新迁至不同框架。
使用图像训练神经网络时,开发者首先要将这些图像标准化。而且,通常还需压缩图像以节省存储空间。为此,开发者构建了多阶段数据处理工作流,其中包括加载、解码、裁剪、调整大小以及许多其他增强运算符。这些当前在 CPU 上执行的数据处理工作流已成为瓶颈,限制了整体吞吐量。
![](http://178.128.105.246/content-https-d29g4g2dyqv443.cloudfront.net/sites/default/files/akamai/dali.png)
DALI 拥有高性能,对于内置的数据加载程序和数据迭代器而言,是一款出色的替代方案。开发者现可在 GPU 上运行数据处理工作流,从而减少训练神经网络所需的总时间。使用 DALI 实现的数据处理工作流具有可移植性,因为它们能够轻松地重新迁至 TensorFlow、PyTorch 和 MXNet。
使用 ImageNet 训练 ResNet50 | NVIDIA DGX-2 | 20.01 NGC 容器 | DALI 版本 0.18 | 16 块 V-100 GPU | 批量大小:256
使用 ImageNet 训练 ResNet50 | NVIDIA DGX-1 | 20.01 NGC 容器 | DALI 版本 0.18 | 8 块 V-100 GPU | 批量大小:256
使用 ImageNet 训练 ResNet50 | AWS P3 | 20.01 NGC 容器 | DALI 版本 0.18 | 8 块 V-100 GPU | 批量大小:192
使用 ImageNet 训练 ResNet50 | Google 云端平台 | 20.01 NGC 容器 | DALI 版本 0.18 | 8 块 V-100 GPU | 批量大小:192
DALI 的主要特性
- 简单易用的 Python API
- 可跨多个 GPU 透明扩展
- 加速图像分类 (ResNet-50)、物体检测 (SSD) 工作负载和语音识别模型(例如 Jasper 和 RNN-T)
- 灵活的图形助力开发者创建自定义工作流
- 支持多种数据格式:LMDB、RecordIO、TFRecord、COCO、JPEG、wav、flac、ogg、H.264 和 HEVC
- 开发者可添加自定义音频、图像和视频处理运算符
了解详情
- GitHub 上的示例
- DALI 文档
- GitHub 上的 DALI
教程和博客
- 如何使用 DALI 设置音频数据的加载和解码工作流 (Jupyter Notebook)
- 如何使用 DALI 设置音频处理工作流并计算声谱图 (Jupyter Notebook)
- 使用 NVIDIA DALI 快速执行 AI 数据预处理
- DALI 中的优化可缩短 MLPerf 基准测试中图像分类和物体检测模型的训练时间
NVIDIA GTC 讲座
- 2018 年 GPU 技术大会;用于深度学习训练的快速数据工作流;T. Gale、S. Layton 和 P. Trędak:幻灯片,录像
- 2019 年 GPU 技术大会;使用 DALI 快速执行 AI 数据预处理;Janusz Lisiecki 和 Michał Zientkiewicz:幻灯片,录像
- 2019 年 GPU 技术大会;在 Xavier 上集成 DALI 与 TensorRT;Josh Park 和 Anurag Dixit:幻灯片,录像