Библиотека загрузки данных NVIDIA (DALI) — это библиотека с графическим ускорением для загрузки и предварительной обработки данных для ускорения приложений глубокого обучения. Он предоставляет набор высокооптимизированных строительных блоков для загрузки и обработки изображений, видео и аудиоданных. Его можно использовать в качестве портативной замены встроенным загрузчикам данных и итераторам данных в популярных средах глубокого обучения.
Приложения глубокого обучения требуют сложных, многоэтапных конвейеров обработки данных, которые включают загрузку, декодирование, обрезку, изменение размера и многие другие дополнения. Эти конвейеры обработки данных, которые в настоящее время выполняются на ЦП, стали узким местом, ограничивающим производительность и масштабируемость обучения и вывода.
DALI решает проблему узкого места процессора, перекладывая предварительную обработку данных на графический процессор. Кроме того, 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):passdef назад(потеря, 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")# декодирует данные на GPUimages = fn.decoders.image_random_crop(images, device="mixed", output_type=types.RGB)# остальная обработка также происходит на графическом процессоре. 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)], ['data', 'label'],reader_name='Reader')for i, данные в enumerate(train_data):x, y = data[0]['data'], data[0]['label']pred = модель(x)потеря = loss_func(pred, y)назад(потеря, модель)
Простой в использовании функциональный API Python.
Поддержка нескольких форматов данных — LMDB, RecordIO, TFRecord, COCO, JPEG, JPEG 2000, WAV, FLAC, OGG, H.264, VP9 и HEVC.
Совместимость с популярными платформами глубокого обучения: TensorFlow, PyTorch, PaddlePaddle, JAX.
Поддерживает исполнение CPU и GPU.
Масштабируется на несколько графических процессоров.
Гибкие графики позволяют разработчикам создавать собственные конвейеры.
Расширяемый для удовлетворения конкретных потребностей пользователя с помощью настраиваемых операторов.
Ускоряет задачи классификации изображений (ResNet-50), обнаружения объектов (SSD), а также моделей ASR (Jasper, RNN-T).
Обеспечивает прямой путь данных между хранилищем и памятью графического процессора с помощью GPUDirect Storage.
Простая интеграция с сервером вывода NVIDIA Triton с серверной частью DALI TRITON.
Открытый исходный код.
Во время соревнований по компьютерному зрению Kaggle: «DALI — одна из лучших вещей, которые я узнал на этом конкурсе»
Поза молнии - современная исследовательская модель оценки позы
Для улучшения использования ресурсов в продвинутой вычислительной инфраструктуре.
MLPerf — отраслевой стандарт для сравнительного анализа аппаратного и программного обеспечения для вычислений и глубокого обучения.
«мы оптимизировали основные модели внутри eBay с помощью DALI framework»
Следующий выпуск представляет собой общий обзор нашего плана на 2024 год. Вы должны знать, что эта дорожная карта может измениться в любое время, и порядок ее элементов не отражает какой-либо приоритет.
Мы настоятельно рекомендуем вам прокомментировать нашу дорожную карту и оставить нам отзыв по упомянутой проблеме GitHub.
Чтобы установить последнюю версию DALI для последней версии CUDA (12.x):
pip установить nvidia-dali-cuda120 # или pip install --extra-index-url https://pypi.nvidia.com --upgrade nvidia-dali-cuda120
Для DALI требуется драйвер NVIDIA, поддерживающий соответствующую версию CUDA. В случае DALI на базе CUDA 12 требуется установка CUDA Toolkit.
DALI предустановлен в контейнерах TensorFlow, PyTorch и PaddlePaddle в облаке NVIDIA GPU Cloud.
Другие пути установки (плагин TensorFlow, старая версия CUDA, ночные и еженедельные сборки и т. д.), а также конкретные требования приведены в Руководстве по установке.
Чтобы собрать DALI из исходного кода, обратитесь к Руководству по компиляции.
Введение в DALI можно найти на странице «Начало работы».
Более сложные примеры можно найти на странице «Примеры и руководства».
Чтобы получить интерактивную версию (блокнот Jupyter) примеров, перейдите в каталог docs/examples.
Примечание. В зависимости от вашей версии выберите документацию последней версии или документацию ночного выпуска, которая синхронизируется с основной веткой.
Конференция по технологиям графических процессоров 2024; Оптимизация обслуживания моделей вывода для достижения максимальной производительности на eBay ; Ихэн Ван: событие
Конференция по технологиям графических процессоров 2023; Прорыв для разработчиков: ускорение корпоративных рабочих процессов с помощью Triton Server и DALI ; Брэндон Таттл: событие.
Конференция по технологиям графических процессоров 2023; Комплексные геопространственные рабочие процессы с графическим ускорением ; Кевин Грин: событие.
Конференция по технологиям графических процессоров 2022; Эффективный NVIDIA DALI: ускорение реальных приложений глубокого обучения ; Рафал Банась: событие.
Конференция по технологиям графических процессоров 2022; Введение в NVIDIA DALI: предварительная обработка данных с ускорением на графическом процессоре ; Хоакин Антон Гирао: событие.
Конференция по технологиям графических процессоров 2021; NVIDIA DALI: Предварительная обработка данных с помощью графического процессора , Кшиштоф Ленцкий и Михал Шолуха: мероприятие.
Конференция по технологиям графических процессоров 2020; Быстрая предварительная обработка данных с помощью библиотеки загрузки данных NVIDIA (DALI) ; Альберт Волан, Хоакин Антон Гирао: запись.
Конференция по технологиям графических процессоров 2019; Быстрая предварительная обработка данных AI с помощью DALI ; Януш Лисецкий, Михал Зенткевич: слайды, запись.
Конференция по технологиям графических процессоров 2019; Интеграция DALI с TensorRT на Xavier ; Джош Пак и Анураг Диксит: слайды, запись.
Конференция по технологиям графических процессоров 2018; Быстрый конвейер данных для обучения глубокому обучению , Т. Гейл, С. Лейтон и П. Трендак: слайды, запись.
Страница разработчика.
Сообщения в блоге.
Мы приветствуем вклад в DALI. Чтобы внести свой вклад в DALI и сделать запросы на включение, следуйте рекомендациям, изложенным в документе «Вклад».
Если вы ищете задачу, подходящую для начала, проверьте ее на приветственной этикетке внешнего вклада.
Мы ценим отзывы, вопросы или сообщения об ошибках. Если вам нужна помощь с кодом, следуйте инструкциям, описанным в документе «Переполнение стека». Убедитесь, что опубликованные примеры:
минимальный : используйте как можно меньше кода, который по-прежнему создает ту же проблему.
Complete : Предоставьте все детали, необходимые для воспроизведения проблемы. Проверьте, можете ли вы устранить внешнюю зависимость и при этом показать проблему. Чем меньше времени мы тратим на воспроизведение проблем, тем больше времени мы можем посвятить исправлениям.
проверяемый : проверьте код, который вы собираетесь предоставить, чтобы убедиться, что он воспроизводит проблему. Устраните все остальные проблемы, не связанные с вашим запросом.
Первоначально DALI был создан при участии Тревора Гейла, Пшемека Тредака, Саймона Лейтона, Андрея Иванова и Сержа Панева.