Snapshot của NVIDIA/DALI: 5.7k★ · C++ · AI Tools. A GPU-accelerated library containing highly optimized building blocks and an execution engine for data processing to accelerate deep learning training and inference applications.
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
The NVIDIA Data Loading Library (DALI) is a GPU-accelerated library for data loading
and pre-processing to accelerate deep learning applications. It provides a
collection of highly optimized building blocks for loading and processing
image, video and audio data. It can be used as a portable drop-in replacement
for built in data loaders and data iterators in popular deep learning frameworks.
Deep learning applications require complex, multi-stage data processing pipelines
that include loading, decoding, cropping, resizing, and many other augmentations.
These data processing pipelines, which are currently executed on the CPU, have become a
bottleneck, limiting the performance and scalability of training and inference.
DALI addresses the problem of the CPU bottleneck by offloading data preprocessing to the
GPU. Additionally, DALI relies on its own execution engine, built to maximize the throughput
of the input pipeline. Features such as prefetching, parallel execution, and batch processing
are handled transparently for the user.
In addition, the deep learning frameworks have multiple data pre-processing implementations,
resulting in challenges such as portability of training and inference workflows, and code
maintainability. Data processing pipelines implemented using DALI are portable because they
can easily be retargeted to TensorFlow, PyTorch, and PaddlePaddle.
.. image:: /dali.png
:width: 800
:align: center
:alt: DALI Diagram
.. github display off
.. GitHub discards custom styles when rendering Markdown. We can use it to our advantage to hide the GitHub-style
admonition in the sphinx-rendered documentation
[!TIP]
The `dali-dynamic-mode <https://github.com/NVIDIA/skills/blob/main/skills/dali-dynamic-mode/SKILL.md>`_ skill
provides AI agents with guidance on the Dynamic Mode API and best practices. It can be installed as follows:
.. code-block:: sh
npx skills add nvidia/skills --skill dali-dynamic-mode
For more information, see the `NVIDIA/skills <https://github.com/NVIDIA/skills>`_ GitHub repository.
DALI in action
.. container:: dali-tabs
Pipeline mode:
.. code-block:: python
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
import os
# To run with different data, see documentation of nvidia.dali.fn.readers.file
# points to https://github.com/NVIDIA/DALI_extra
data_root_dir = os.environ['DALI_EXTRA_PATH']
images_dir = os.path.join(data_root_dir, 'db', 'single', 'jpeg')
def loss_func(pred, y):
pass
def model(x):
pass
def backward(loss, model):
pass
@pipeline_def(num_threads=4, device_id=0)
def get_dali_pipeline():
images, labels = fn.readers.file(
file_root=images_dir, random_shuffle=True, name="Reader")
# decode data on the GPU
images = fn.decoders.image_random_crop(
images, device="mixed", output_type=types.RGB)
# the rest of processing happens on the GPU as well
images = fn.resize(images, resize_x=256, resize_y=256)
images = fn.crop_mirror_normalize(
images,
crop_h=224,
crop_w=224,
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, labels
train_data = DALIGenericIterator(
[get_dali_pipeline(batch_size=16)],
['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)
Dynamic mode:
.. code-block:: python
import os
import nvidia.dali.types as types
import nvidia.dali.experimental.dynamic as ndd
import torch
# To run with different data, see documentation of ndd.readers.File
# points to https://github.com/NVIDIA/DALI_extra
data_root_dir = os.environ['DALI_EXTRA_PATH']
images_dir = os.path.join(data_root_dir, 'db', 'single', 'jpeg')
def loss_func(pred, y):
pass
def model(x):
pass
def backward(loss, model):
pass
reader = ndd.readers.File(file_root=images_dir, random_shuffle=True)
for images, labels in reader.next_epoch(batch_size=16):
images = ndd.decoders.image_random_crop(images, device="gpu", output_type=types.RGB)
# the rest of processing happens on the GPU as well
images = ndd.resize(images, resize_x=256, resize_y=256)
images = ndd.crop_mirror_normalize(
images,
crop_h=224,
crop_w=224,
mean=[0.485 * 255, 0.456 * 255, 0.406 * 255],
std=[0.229 * 255, 0.224 * 255, 0.225 * 255],
mirror=ndd.random.coin_flip(),
)
x = torch.as_tensor(images)
y = torch.as_tensor(labels.gpu())
pred = model(x)
loss = loss_func(pred, y)
backward(loss, model)
Highlights
Easy-to-use functional style Python API.
Multiple data formats support - LMDB, RecordIO, TFRecord, COCO, JPEG, JPEG 2000, WAV, FLAC, OGG, H.264, VP9 and HEVC.
Portable across popular deep learning frameworks: TensorFlow, PyTorch, PaddlePaddle, JAX.
Supports CPU and GPU execution.
Scalable across multiple GPUs.
Flexible graphs let developers create custom pipelines.
Extensible for user-specific needs with custom operators.
Accelerates image classification (ResNet-50), object detection (SSD) workloads as well as ASR models (Jasper, RNN-T).
Allows direct data path between storage and GPU memory with GPUDirect Storage <https://developer.nvidia.com/gpudirect-storage>__.
Easy integration with NVIDIA Triton Inference Server <https://developer.nvidia.com/nvidia-triton-inference-server>__
with DALI TRITON Backend <https://github.com/triton-inference-server/dali_backend>__.
Open source.
.. overview-end-marker-do-not-remove
DALI success stories:
During Kaggle computer vision competitions <https://www.kaggle.com/code/theoviel/rsna-breast-baseline-faster-inference-with-dali>:
"DALI is one of the best things I have learned in this competition" <https://www.kaggle.com/competitions/rsna-breast-cancer-detection/discussion/391059>
Lightning Pose - state of the art pose estimation research model <https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10168383/>__
To improve the resource utilization in Advanced Computing Infrastructure <https://arcwiki.rs.gsu.edu/en/dali/using_nvidia_dali_loader>__
MLPerf - the industry standard for benchmarking compute and deep learning hardware and software <https://developer.nvidia.com/blog/mlperf-hpc-v1-0-deep-dive-into-optimizations-leading-to-record-setting-nvidia-performance/>__
"we optimized major models inside eBay with the DALI framework" <https://www.nvidia.com/en-us/on-demand/session/gtc24-s62578/>__
DALI Roadmap
The following issue represents <https://github.com/NVIDIA/DALI/issues/5320>__ a high-level overview of our 2024 plan. You should be aware that this
roadmap may change at any time and the order of its items does not reflect any type of priority.
We strongly encourage you to comment on our roadmap and provide us feedback on the mentioned
GitHub issue.
Installing DALI
To install the latest DALI release for the latest CUDA version (12.x)::
DALI requires NVIDIA driver <https://www.nvidia.com/drivers>__ supporting the appropriate CUDA version.
In case of DALI based on CUDA 12, it requires CUDA Toolkit <https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html>__
to be installed.
DALI comes preinstalled in the TensorFlow <https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow>,
PyTorch <https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch>,
and PaddlePaddle <https://catalog.ngc.nvidia.com/orgs/nvidia/containers/paddlepaddle>__
containers on NVIDIA GPU Cloud <https://ngc.nvidia.com>__.
For other installation paths (TensorFlow plugin, older CUDA version, nightly and weekly builds, etc),
and specific requirements please refer to the Installation Guide <https://docs.nvidia.com/deeplearning/dali/user-guide/docs/installation.html>__.
To build DALI from source, please refer to the Compilation Guide <https://docs.nvidia.com/deeplearning/dali/user-guide/docs/compilation.html>__.
Examples and Tutorials
An introduction to DALI can be found in the Getting Started <https://docs.nvidia.com/deeplearning/dali/user-guide/docs/examples/getting_started.html>__ page.
More advanced examples can be found in the Examples and Tutorials <https://docs.nvidia.com/deeplearning/dali/user-guide/docs/examples/index.html>__ page.
For an interactive version (Jupyter notebook) of the examples, go to the docs/examples <https://github.com/NVIDIA/DALI/blob/main/docs/examples>__
directory.
Note: Select the Latest Release Documentation <https://docs.nvidia.com/deeplearning/dali/user-guide/docs/index.html>__
or the Nightly Release Documentation <https://docs.nvidia.com/deeplearning/dali/main-user-guide/docs/index.html>__, which stays in sync with the main branch,
depending on your version.
Additional Resources
GPU Technology Conference 2024; Optimizing Inference Model Serving for Highest Performance at eBay; Yiheng Wang:
event <https://www.nvidia.com/en-us/on-demand/session/gtc24-s62578/>__
GPU Technology Conference 2023; Developer Breakout: Accelerating Enterprise Workflows With Triton Server and DALI; Brandon Tuttle:
event <https://www.nvidia.com/en-us/on-demand/session/gtcspring23-se52140/>__.
GPU Technology Conference 2022; Introduction to NVIDIA DALI: GPU-accelerated Data Preprocessing; Joaquin Anton Guirao:
event <https://www.nvidia.com/en-us/on-demand/session/gtcspring22-s41443/>__.
GPU Technology Conference 2021; NVIDIA DALI: GPU-Powered Data Preprocessing by Krzysztof Łęcki and Michał Szołucha:
event <https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s31298/>__.
GPU Technology Conference 2020; Fast Data Pre-Processing with NVIDIA Data Loading Library (DALI); Albert Wolant, Joaquin Anton Guirao:
recording <https://developer.nvidia.com/gtc/2020/video/s21139>__.
GPU Technology Conference 2019; Fast AI data pre-preprocessing with DALI; Janusz Lisiecki, Michał Zientkiewicz:
slides <https://developer.download.nvidia.com/video/gputechconf/gtc/2019/presentation/s9925-fast-ai-data-pre-processing-with-nvidia-dali.pdf>,
recording <https://developer.nvidia.com/gtc/2019/video/S9925/video>.
GPU Technology Conference 2019; Integration of DALI with TensorRT on Xavier; Josh Park and Anurag Dixit:
slides <https://developer.download.nvidia.com/video/gputechconf/gtc/2019/presentation/s9818-integration-of-tensorrt-with-dali-on-xavier.pdf>,
recording <https://developer.nvidia.com/gtc/2019/video/S9818/video>.
GPU Technology Conference 2018; Fast data pipeline for deep learning training, T. Gale, S. Layton and P. Trędak:
slides <http://on-demand.gputechconf.com/gtc/2018/presentation/s8906-fast-data-pipelines-for-deep-learning-training.pdf>,
recording <https://www.nvidia.com/en-us/on-demand/session/gtcsiliconvalley2018-s8906/>.
Blog Posts <https://developer.nvidia.com/blog/tag/dali/>__.
Contributing to DALI
We welcome contributions to DALI. To contribute to DALI and make pull requests,
follow the guidelines outlined in the Contributing <https://github.com/NVIDIA/DALI/blob/main/CONTRIBUTING.md>__
document.
If you are looking for a task good for the start please check one from
external contribution welcome label <https://github.com/NVIDIA/DALI/labels/external%20contribution%20welcome>__.
Reporting Problems, Asking Questions
We appreciate feedback, questions or bug reports. When you need help
with the code, follow the process outlined in the Stack Overflow <https://stackoverflow.com/help/mcve>__ document. Ensure that the
posted examples are:
minimal: Use as little code as possible that still produces the same problem.
complete: Provide all parts needed to reproduce the problem.
Check if you can strip external dependency and still show the problem.
The less time we spend on reproducing the problems, the more time we
can dedicate to the fixes.
verifiable: Test the code you are about to provide, to make sure
that it reproduces the problem. Remove all other problems that are not
related to your request.
Acknowledgements
DALI was originally built with major contributions from Trevor Gale, Przemek Tredak,
Simon Layton, Andrei Ivanov and Serge Panev.
NVIDIA/DALI thuộc nhóm AI Tools trên TopGit, cùng 15 topic GitHub. Trang Trending và Topics liệt kê các repo cùng số sao và cùng ngôn ngữ để so sánh.
Đọc thêm về NVIDIA/DALI ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/NVIDIA/DALI là nguồn chính thức.
NVIDIA/DALI có bao nhiêu sao?
NVIDIA/DALI có 5.7k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/NVIDIA/DALI. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
NVIDIA/DALI có phải mã nguồn mở không?
Có — NVIDIA/DALI phát hành theo license Apache-2.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/NVIDIA/DALI.
NVIDIA/DALI có trang demo không?
Dự án có trang chủ ở https://docs.nvidia.com/deeplearning/dali/user-guide/docs/index.html. Tab "Readme" ở trang này thường có ảnh chụp và hướng dẫn bắt đầu nhanh.
NVIDIA/DALI là gì?
NVIDIA/DALI (NVIDIA/DALI) là dự án C++ trên GitHub. Theo mô tả gốc: A GPU-accelerated library containing highly optimized building blocks and an execution engine for data processing to accelerate deep learning training and inference applications.
NVIDIA/DALI so với các dự án AI Tools khác thế nào?
NVIDIA/DALI được TopGit xếp vào nhóm AI Tools, với 5.7k sao GitHub và viết bằng C++. Xem trang chủ đề AI Tools trên TopGit để so sánh với các dự án tương tự theo số sao và mức độ hoạt động.
Đọc đầy đủ README ở tab phía trên.
DALI có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về DALI.