深度学习预处理工具---DALI详解
NVIDIA_DALI
NVIDIA 数据加载库 (DALI: Data Loading Library) 是一个用于数据加载和预处理以加速深度学习应用程序的库。它提供了一组高度优化的构建块,用于加载和处理图像、视频和音频数据。它可以用作流行深度学习框架中内置数据加载器和数据迭代器的便携式替代品。
深度学习应用程序需要复杂的多阶段数据处理管道,包括加载、解码、裁剪、调整大小和许多其他增强功能。这些目前在 CPU 上执行的数据处理管道已成为瓶颈,限制了训练和推理的性能和可扩展性。
DALI 通过将数据预处理卸载到 GPU 来解决 CPU 瓶颈问题。此外,DALI 依赖于自己的执行引擎,旨在最大限度地提高输入管道的吞吐量。预取、并行执行和批处理等功能为用户透明地处理。
此外,深度学习框架具有多种数据预处理实现,导致训练和推理工作流程的可移植性以及代码可维护性等挑战。使用 DALI 实现的数据处理管道是可移植的,因为它们可以轻松地重新定位到 TensorFlow、PyTorch、MXNet 和 PaddlePaddle。
from nvidia.dali.pipeline import pipeline_def
import nvidia.dali.types as types
import nvidia.dali.fn as fn
from nvidia.dali.plugin.pytorch import DALIGenericIterator@pipeline_def(batch_size=128, num_threads=4, device_id=0)
def get_dali_pipeline(data_dir, crop_size):images, labels = fn.readers.file(file_root=data_dir, shuffle=True, name="Reader")# decode data on the GPUimages = fn.decoders.image_random_crop(images, device="mixed", output_type=types.RGB)# the rest of processing happens on the GPU as wellimages = fn.resize(images, resize_x=crop_size, resize_y=crop_size)images = fn.crop_mirror_normalize(images,mean=[0.485 * 255,0.456 * 255,0.406 * 255],std=[0.229 * 255,0.224 * 255,0.225 * 255],mirror=fn.random.coin_flip())return images, labeltrain_data = DALIGenericIterator([get_dali_pipeline(data_dir, (244,244))], ['data', 'label’],reader_name='Reader’
)for i, data in enumerate(train_data):x, y = data[0]['data'], data[0]['label’]pred = model(x)loss = loss_func(pred, y)backward(loss, model)
特点
易于使用的 Python API。
支持多种数据格式 - LMDB、RecordIO、TFRecord、COCO、JPEG、JPEG 2000、WAV、FLAC、OGG、H.264、VP9 和 HEVC。
可跨流行的深度学习框架移植:TensorFlow、PyTorch、MXNet、PaddlePaddle。
支持 CPU 和 GPU 执行。
可跨多个 GPU 进行扩展。
灵活的图表让开发人员可以创建自定义管道。
可通过自定义运算符扩展以满足用户特定的需求。
加速图像分类 (ResNet-50)、对象检测 (SSD) 工作负载以及 ASR 模型(Jasper、RNN-T)。
允许使用 GPUDirect Storage 在存储和 GPU 内存之间建立直接数据路径。
与带有 DALI TRITON 后端的 NVIDIA Triton 推理服务器轻松集成。
开源。
深度学习预处理工具---DALI详解相关推荐
- 机器学习,深度学习基础算法原理详解(图的搜索、交叉验证、PAC框架、VC-维(持续更新))
机器学习,深度学习基础算法原理详解(图的搜索.交叉验证.PAC框架.VC-维.支持向量机.核方法(持续更新)) 机器学习,深度学习基础算法原理详解(数据结构部分(持续更新)) 文章目录 1. 图的搜索 ...
- 深度学习网络模型——RepVGG网络详解、RepVGG网络训练花分类数据集整体项目实现
深度学习网络模型--RepVGG网络详解.RepVGG网络训练花分类数据集整体项目实现 0 前言 1 RepVGG Block详解 2 结构重参数化 2.1 融合Conv2d和BN 2.2 Conv2 ...
- 深度学习网络模型——Vision Transformer详解 VIT详解
深度学习网络模型--Vision Transformer详解 VIT详解 通用深度学习网络效果改进调参训练公司自己的数据集,训练步骤记录: 代码实现version-Transformer网络各个流程, ...
- 【深度学习】RoBERTa模型详解和实践
RoBERTa模型详解和实践 Robustly optimized BERT approach. 内容介绍: RoBERTa改进思路和原文详解 bert4keras工具使用 基于RoBERTa的202 ...
- 【深度学习】Batch Normalization详解
Batch Normalization 学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50866313 作者:hjimce 一.背景意义 ...
- 三维深度学习之pointnet系列详解(一)
目前二维深度学习取得了很大的进步并且应用范围越来越广,随着三维设备的发展,三维深度学习得到了很大的关注. 最近接触了三维深度学习方面的研究,从pointnet入手,对此有了一点点了解希望记录下来并分享 ...
- 深度学习---循环神经网络RNN详解(LSTM)
上一节我们详细讲解了RNN的其中一个学习算法即BPTT,这个算法是基于BP的,只是和BP不同的是在反向传播时,BPTT的需要追溯上一个时间的权值更新,如下图,当前时刻是s(t),但是反向传播时,他需要 ...
- 深度学习环境搭建超级详解(Miniconda、pytorch安装)
小白刚开始学习<动手学深度学习>,第一次发文,本文主要是为了记录在环境搭建过程中遇到的问题和疑惑,以及解决方法,同时希望能帮到遇到相同问题的小伙伴. 在学习中遇到的疑惑和最后搜索得到的解答 ...
- 从手写数字识别入门深度学习丨MNIST数据集详解
就像无数人从敲下"Hello World"开始代码之旅一样,许多研究员从"MNIST数据集"开启了人工智能的探索之路. MNIST数据集(Mixed Natio ...
最新文章
- Windows cmd(DOS)命令窗口中echo命令ANSI转义显示彩色字或背景
- boost库之tcp server(异步)
- ODP.NET 10.2.0.20发布了
- Android的十六进制颜色值
- winform判断线程有没有完成_并发编程系列1:线程池的架构实现、大小配置、及四种线程池使用...
- Python2读取Excel文件时候文件名称是中文的时候处理
- poco c++框架:日期时间
- 关于搭建wiki镜像和数据库的一些东西
- python大文件去重_python大ip文件排重
- Java学习之反射机制及应用场景
- AirServer for mac如何实现无线投屏
- java—mediator中介模式
- 【优化算法】斑点鬣狗优化算法(SHO)【含Matlab源码 1463期】
- 运维服务器环境梳理方案,运维工作梳理
- 三角函数公式及工程应用
- Manjaro-KDE安装动态桌面插件
- linux修改文档拥有人为,Linux系统修复
- 复盘百度移动化,下一步去哪儿?
- 读论文:Noise2Noise: Learning Image Restoration without Clean Data
- js简单实现百度地图雷达探测效果
热门文章
- win8阉割版中文输入法
- 解决GitHub下载速度太慢的问题
- Android-直播送礼物 仿斗鱼直播送礼物效果
- [转载]研究生的忌于记
- 从AIPL到GROW,谈互联网大厂的营销分析模型
- 【转】三星三款主流处理器s3c2440\s3c6410\s5pv210对比分析
- c#创建画布_C# – 调整图像画布大小(保留源图像的原始像素尺寸)
- 计算机毕业设计Java车辆违规信息管理系统(源码+系统+mysql数据库+lw文档)
- 计算机专业 英语六级作文,英语六级作文范文高分版 计算机和人 Computer and Man...
- yy 服务器维护中 图片无法显示,解决简书图片不显示问题“系统维护中,图片暂时无法加载”...