NVIDIA Data Loading Library (DALI) adalah perpustakaan dengan akselerasi GPU untuk memuat dan pra-pemrosesan data guna mempercepat aplikasi pembelajaran mendalam. Ini menyediakan kumpulan blok bangunan yang sangat optimal untuk memuat dan memproses data gambar, video dan audio. Ini dapat digunakan sebagai pengganti drop-in portabel untuk pemuat data bawaan dan iterator data dalam kerangka pembelajaran mendalam yang populer.
Aplikasi pembelajaran mendalam memerlukan alur pemrosesan data multi-tahap yang kompleks yang mencakup pemuatan, penguraian kode, pemotongan, pengubahan ukuran, dan banyak penambahan lainnya. Alur pemrosesan data ini, yang saat ini dijalankan di CPU, telah menjadi hambatan, sehingga membatasi performa dan skalabilitas pelatihan dan inferensi.
DALI mengatasi masalah kemacetan CPU dengan memindahkan data pra-pemrosesan ke GPU. Selain itu, DALI mengandalkan mesin eksekusinya sendiri, yang dibuat untuk memaksimalkan throughput pipeline input. Fitur seperti pengambilan awal, eksekusi paralel, dan pemrosesan batch ditangani secara transparan bagi pengguna.
Selain itu, kerangka kerja pembelajaran mendalam memiliki beberapa implementasi pra-pemrosesan data, sehingga menimbulkan tantangan seperti portabilitas alur kerja pelatihan dan inferensi, serta pemeliharaan kode. Pipeline pemrosesan data yang diimplementasikan menggunakan DALI bersifat portabel karena dapat dengan mudah ditargetkan ulang ke TensorFlow, PyTorch, dan PaddlePaddle.
DALI beraksi:
from nvidia.dali.pipeline import pipeline_defimport nvidia.dali.types as typemport nvidia.dali.fn as fnfrom nvidia.dali.plugin.pytorch import DALIGenericIteratorimport os# Untuk menjalankan dengan data yang berbeda, lihat dokumentasi nvidia.dali.fn.readers. file# menunjuk ke 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 model(x):passdef mundur(kehilangan, 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")# mendekode data di GPUimages = fn.decoders.image_random_crop(images, device="mixed", output_type=types.RGB)# sisa pemrosesan juga terjadi di GPUimages = fn. ubah ukuran(gambar, ubah ukuran_x=256, ubah ukuran_y=256)gambar = fn.crop_mirror_normalize(gambar,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())mengembalikan gambar, labelstrain_data = DALIGenericIterator( [get_dali_pipeline(ukuran_batch=16)], ['data', 'label'],reader_name='Reader')untuk i, data dalam enumerate(train_data):x, y = data[0]['data'], data[0]['label']pred = model(x)kerugian = loss_func(pred, y)mundur(kerugian, model)
API Python gaya fungsional yang mudah digunakan.
Dukungan berbagai format data - LMDB, RecordIO, TFRecord, COCO, JPEG, JPEG 2000, WAV, FLAC, OGG, H.264, VP9 dan HEVC.
Portabel di seluruh framework deep learning populer: TensorFlow, PyTorch, PaddlePaddle, JAX.
Mendukung eksekusi CPU dan GPU.
Dapat diskalakan di beberapa GPU.
Grafik fleksibel memungkinkan pengembang membuat saluran khusus.
Dapat diperluas untuk kebutuhan spesifik pengguna dengan operator khusus.
Mempercepat klasifikasi gambar (ResNet-50), beban kerja deteksi objek (SSD), serta model ASR (Jasper, RNN-T).
Memungkinkan jalur data langsung antara penyimpanan dan memori GPU dengan GPUDirect Storage.
Integrasi yang mudah dengan Server Inferensi NVIDIA Triton dengan DALI TRITON Backend.
Sumber terbuka.
Selama kompetisi visi komputer Kaggle: "DALI adalah salah satu hal terbaik yang saya pelajari dalam kompetisi ini"
Lightning Pose - model penelitian estimasi pose yang canggih
Untuk meningkatkan pemanfaatan sumber daya dalam Infrastruktur Komputasi Tingkat Lanjut
MLPerf - standar industri untuk melakukan benchmarking komputasi dan pembelajaran mendalam pada perangkat keras dan perangkat lunak
"kami mengoptimalkan model-model utama di eBay dengan kerangka DALI"
Edisi berikut ini mewakili ikhtisar tingkat tinggi rencana tahun 2024 kami. Anda harus menyadari bahwa peta jalan ini dapat berubah sewaktu-waktu dan urutan itemnya tidak mencerminkan prioritas apa pun.
Kami sangat menganjurkan Anda untuk mengomentari peta jalan kami dan memberi kami umpan balik mengenai masalah GitHub yang disebutkan.
Untuk menginstal rilis DALI terbaru untuk versi CUDA terbaru (12.x):
pip instal nvidia-dali-cuda120 # atau instalasi pip --extra-index-url https://pypi.nvidia.com --upgrade nvidia-dali-cuda120
DALI memerlukan driver NVIDIA yang mendukung versi CUDA yang sesuai. Dalam kasus DALI berdasarkan CUDA 12, diperlukan instalasi CUDA Toolkit.
DALI sudah diinstal sebelumnya di container TensorFlow, PyTorch, dan PaddlePaddle di NVIDIA GPU Cloud.
Untuk jalur instalasi lainnya (plugin TensorFlow, versi CUDA yang lebih lama, build nightly dan mingguan, dll), dan persyaratan khusus, silakan merujuk ke Panduan Instalasi.
Untuk membangun DALI dari sumber, silakan merujuk ke Panduan Kompilasi.
Pengantar DALI dapat ditemukan di halaman Memulai.
Contoh lebih lanjut dapat ditemukan di halaman Contoh dan Tutorial.
Untuk contoh versi interaktif (buku catatan Jupyter), buka direktori docs/examples.
Catatan: Pilih Dokumentasi Rilis Terbaru atau Dokumentasi Rilis Malam, yang tetap sinkron dengan cabang utama, bergantung pada versi Anda.
Konferensi Teknologi GPU 2024; Mengoptimalkan Penyajian Model Inferensi untuk Kinerja Tertinggi di eBay ; Yiheng Wang: acara
Konferensi Teknologi GPU 2023; Breakout Pengembang: Mempercepat Alur Kerja Perusahaan Dengan Server Triton dan DALI ; Brandon Tuttle: acara.
Konferensi Teknologi GPU 2023; Alur Kerja Geospasial End-to-End yang Mempercepat GPU ; Kevin Green: acara.
Konferensi Teknologi GPU 2022; NVIDIA DALI yang Efektif: Mempercepat Aplikasi Pembelajaran Mendalam di Kehidupan Nyata ; Rafał Banaś: acara.
Konferensi Teknologi GPU 2022; Pengantar NVIDIA DALI: Pra-pemrosesan Data yang dipercepat GPU ; Joaquin Anton Guirao: acara.
Konferensi Teknologi GPU 2021; NVIDIA DALI: Pemrosesan Awal Data Bertenaga GPU oleh Krzysztof Łęcki dan Michał Szołucha: acara.
Konferensi Teknologi GPU 2020; Pra-Pemrosesan Data Cepat dengan NVIDIA Data Loading Library (DALI) ; Albert Wolant, Joaquin Anton Guirao: rekaman.
Konferensi Teknologi GPU 2019; Pra-pemrosesan data AI yang cepat dengan DALI ; Janusz Lisiecki, Michał Zientkiewicz: slide, rekaman.
Konferensi Teknologi GPU 2019; Integrasi DALI dengan TensorRT di Xavier ; Josh Park dan Anurag Dixit: slide, rekaman.
Konferensi Teknologi GPU 2018; Saluran data cepat untuk pelatihan pembelajaran mendalam , T. Gale, S. Layton dan P. Trędak: slide, rekaman.
Halaman Pengembang.
Postingan Blog.
Kami menyambut kontribusi ke DALI. Untuk berkontribusi pada DALI dan membuat permintaan penarikan, ikuti pedoman yang diuraikan dalam dokumen Berkontribusi.
Jika Anda mencari tugas yang bagus untuk permulaan, silakan periksa salah satu dari label selamat datang kontribusi eksternal.
Kami menghargai masukan, pertanyaan, atau laporan bug. Saat Anda memerlukan bantuan dengan kode, ikuti proses yang diuraikan dalam dokumen Stack Overflow. Pastikan contoh yang diposting adalah:
minimal : Gunakan kode sesedikit mungkin yang masih menghasilkan masalah yang sama.
lengkap : Menyediakan semua bagian yang diperlukan untuk mereproduksi masalah. Periksa apakah Anda dapat menghapus ketergantungan eksternal dan masih menunjukkan masalahnya. Semakin sedikit waktu yang kita habiskan untuk mereproduksi masalah, semakin banyak waktu yang dapat kita dedikasikan untuk perbaikan.
dapat diverifikasi : Uji kode yang akan Anda berikan, untuk memastikan kode tersebut mereproduksi masalah. Hapus semua masalah lain yang tidak terkait dengan permintaan Anda.
DALI awalnya dibangun dengan kontribusi besar dari Trevor Gale, Przemek Tredak, Simon Layton, Andrei Ivanov dan Serge Panev.