DALI(NVIDIA 데이터 로딩 라이브러리)는 딥 러닝 애플리케이션을 가속화하기 위한 데이터 로딩 및 사전 처리를 위한 GPU 가속 라이브러리입니다. 이미지, 비디오 및 오디오 데이터를 로드하고 처리하기 위해 고도로 최적화된 빌딩 블록 컬렉션을 제공합니다. 널리 사용되는 딥 러닝 프레임워크에 내장된 데이터 로더 및 데이터 반복기에 대한 이식 가능한 드롭인 대체품으로 사용할 수 있습니다.
딥 러닝 애플리케이션에는 로드, 디코딩, 자르기, 크기 조정 및 기타 다양한 기능 강화를 포함하는 복잡한 다단계 데이터 처리 파이프라인이 필요합니다. 현재 CPU에서 실행되는 이러한 데이터 처리 파이프라인은 병목 현상이 발생하여 훈련 및 추론의 성능과 확장성을 제한합니다.
DALI는 데이터 전처리를 GPU로 오프로드하여 CPU 병목 현상 문제를 해결합니다. 또한 DALI는 입력 파이프라인의 처리량을 최대화하도록 구축된 자체 실행 엔진을 사용합니다. 프리패치, 병렬 실행, 일괄 처리 등의 기능이 사용자에게 투명하게 처리됩니다.
또한 딥 러닝 프레임워크에는 여러 데이터 전처리 구현이 포함되어 있어 교육 및 추론 워크플로의 이동성, 코드 유지 관리와 같은 문제가 발생합니다. DALI를 사용하여 구현된 데이터 처리 파이프라인은 TensorFlow, PyTorch 및 PaddlePaddle로 쉽게 대상을 변경할 수 있으므로 이식성이 뛰어납니다.
DALI 실행:
from nvidia.dali.pipeline import Pipeline_defimport nvidia.dali.types as typeimport nvidia.dali.fn as fnfrom nvidia.dali.plugin.pytorch import DALIGenericIteratorimport os# 다른 데이터로 실행하려면 nvidia.dali.fn.readers 설명서를 참조하세요. 파일#은 https://github.com/NVIDIA/DALI_extradata_root_dir =을 가리킵니다. os.environ['DALI_EXTRA_PATH']images_dir = os.path.join(data_root_dir, 'db', 'single', 'jpeg')def loss_func(pred, y):passdef 모델(x):passdefbackward(손실, 모델 ):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")# GPU의 데이터 디코딩images = fn.decoders.image_random_crop(images, device="mixed", output_type=types.RGB)# 나머지 Wellimages = fn.resize(images, resize_x=256, resize_y=256)images와 같이 GPU에서 처리가 발생합니다. = 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())이미지 반환, labelstrain_data = DALIGenericIterator( [get_dali_pipeline(batch_size=16)], i의 경우 ['data', 'label'],reader_name='Reader'), enumerate(train_data):x, y = data[0]['data'], data[0]['label']pred의 데이터 = 모델(x)손실 = loss_func(pred, y)backward(손실, 모델)
사용하기 쉬운 기능적 스타일의 Python API입니다.
다양한 데이터 형식 지원 - LMDB, RecordIO, TFRecord, COCO, JPEG, JPEG 2000, WAV, FLAC, OGG, H.264, VP9 및 HEVC.
TensorFlow, PyTorch, PaddlePaddle, JAX 등 널리 사용되는 딥 러닝 프레임워크에서 이식 가능합니다.
CPU 및 GPU 실행을 지원합니다.
여러 GPU로 확장 가능합니다.
유연한 그래프를 통해 개발자는 맞춤형 파이프라인을 생성할 수 있습니다.
사용자 지정 연산자를 사용하여 사용자별 요구에 맞게 확장 가능합니다.
이미지 분류(ResNet-50), 객체 감지(SSD) 워크로드는 물론 ASR 모델(Jasper, RNN-T)을 가속화합니다.
GPUDirect Storage를 통해 스토리지와 GPU 메모리 간의 직접적인 데이터 경로를 허용합니다.
DALI TRITON 백엔드를 사용하여 NVIDIA Triton 추론 서버와 쉽게 통합됩니다.
오픈 소스.
Kaggle 컴퓨터 비전 대회 중: "DALI는 제가 이번 대회에서 배운 것 중 가장 좋은 것 중 하나입니다."
Lightning Pose - 최첨단 포즈 추정 연구 모델
첨단 컴퓨팅 인프라의 자원 활용도 향상
MLPerf - 컴퓨팅 및 딥 러닝 하드웨어와 소프트웨어 벤치마킹을 위한 업계 표준
"우리는 DALI 프레임워크를 사용하여 eBay 내부의 주요 모델을 최적화했습니다."
다음 문제는 2024년 계획에 대한 높은 수준의 개요를 나타냅니다. 이 로드맵은 언제든지 변경될 수 있으며 해당 항목의 순서는 어떤 유형의 우선순위도 반영하지 않는다는 점을 유의하시기 바랍니다.
로드맵에 대해 의견을 제시하고 언급된 GitHub 문제에 대한 피드백을 제공해 주시기를 적극 권장합니다.
최신 CUDA 버전(12.x)용 최신 DALI 릴리스를 설치하려면:
pip 설치 nvidia-dali-cuda120 # 또는 pip install --extra-index-url https://pypi.nvidia.com --upgrade nvidia-dali-cuda120
DALI에는 적절한 CUDA 버전을 지원하는 NVIDIA 드라이버가 필요합니다. CUDA 12 기반 DALI의 경우 CUDA Toolkit 설치가 필요합니다.
DALI는 NVIDIA GPU Cloud의 TensorFlow, PyTorch 및 PaddlePaddle 컨테이너에 사전 설치되어 제공됩니다.
다른 설치 경로(TensorFlow 플러그인, 이전 CUDA 버전, 야간 및 주간 빌드 등) 및 특정 요구 사항은 설치 가이드를 참조하세요.
소스에서 DALI를 빌드하려면 컴파일 가이드를 참조하세요.
DALI에 대한 소개는 시작하기 페이지에서 확인할 수 있습니다.
더 고급 예제는 예제 및 튜토리얼 페이지에서 찾을 수 있습니다.
예제의 대화형 버전(Jupyter 노트북)을 보려면 docs/examples 디렉터리로 이동하세요.
참고: 버전에 따라 메인 브랜치와 동기화된 최신 릴리스 문서 또는 Nightly 릴리스 문서를 선택하세요.
GPU 기술 컨퍼런스 2024; eBay에서 최고 성능을 위한 추론 모델 서비스 최적화 왕이헝: 이벤트
GPU 기술 컨퍼런스 2023; 개발자 브레이크아웃: Triton 서버 및 DALI를 통한 엔터프라이즈 워크플로우 가속화 ; 브랜든 터틀: 이벤트.
GPU 기술 컨퍼런스 2023; GPU 가속 엔드투엔드 지리공간 워크플로우 케빈 그린: 이벤트.
GPU 기술 컨퍼런스 2022; 효과적인 NVIDIA DALI: 실제 딥러닝 애플리케이션 가속화 ; Rafał Banaś: 이벤트.
GPU 기술 컨퍼런스 2022; NVIDIA DALI 소개: GPU 가속 데이터 전처리 ; 호아킨 안톤 기라오: 이벤트.
GPU 기술 컨퍼런스 2021; NVIDIA DALI: Krzysztof Łęcki 및 Michał Szołucha의 GPU 기반 데이터 전처리 : 이벤트.
GPU 기술 컨퍼런스 2020; NVIDIA 데이터 로딩 라이브러리(DALI)를 통한 빠른 데이터 전처리 ; Albert Wolant, Joaquin Anton Guirao: 녹음.
GPU 기술 컨퍼런스 2019; DALI를 통한 빠른 AI 데이터 전처리 ; Janusz Lisiecki, Michał Zientkiewicz: 슬라이드, 녹음.
GPU 기술 컨퍼런스 2019; Xavier의 TensorRT와 DALI 통합 Josh Park 및 Anurag Dixit: 슬라이드, 녹음.
GPU 기술 컨퍼런스 2018; 딥 러닝 훈련을 위한 빠른 데이터 파이프라인 , T. Gale, S. Layton 및 P. Trędak: 슬라이드, 녹음.
개발자 페이지.
블로그 게시물.
우리는 DALI에 대한 기여를 환영합니다. DALI에 기여하고 풀 요청을 하려면 기여 문서에 설명된 지침을 따르십시오.
시작하기에 좋은 작업을 찾고 있다면 외부 기여 환영 라벨에서 하나를 확인하세요.
피드백, 질문 또는 버그 신고에 감사드립니다. 코드와 관련하여 도움이 필요한 경우 스택 오버플로 문서에 설명된 프로세스를 따르세요. 게시된 예시가 다음과 같은지 확인하세요.
최소 : 여전히 동일한 문제를 발생시키는 코드를 가능한 한 적게 사용합니다.
Complete : 문제를 재현하는 데 필요한 모든 부품을 제공합니다. 외부 종속성을 제거할 수 있는지 확인하고 여전히 문제를 표시하십시오. 문제를 재현하는 데 소요되는 시간이 줄어들수록 수정에 더 많은 시간을 할애할 수 있습니다.
검증 가능 : 제공하려는 코드를 테스트하여 문제가 재현되는지 확인하세요. 귀하의 요청과 관련되지 않은 다른 모든 문제를 제거하십시오.
DALI는 원래 Trevor Gale, Przemek Tredak, Simon Layton, Andrei Ivanov 및 Serge Panev의 주요 기여로 구축되었습니다.