В марте 2022 года в Github появился исходный код TorchMultimodal – PyTorch-библиотеки для обучения масштабных мультимодальных многозадачных ML-моделей. А 17 ноября вышел бета-релиз этой библиотеки, который содержит множество полезных примеров и лучших архитектур глубокого обучения. Разбираемся с этой новой библиотекой.
Что такое мультимодальные ML-модели и при чем здесь TorchMultimodal
Человек получает знания об окружающем мире, используя несколько информационных каналов: текст, видео, аудио, изображения и материальные объекты. Различная природа контента предполагает мультимодальную модель обучения, что сегодня активно используется и в Machine Learning. Мультимодальные модели показали стабильную производительность в многозадачных конфигурациях и в различных доменах, включая понимание существующего контента и создание нового, ответы на вопросы и пр. Растет спрос на ИИ-системы, которые понимают несколько типов ввода (текст, изображения, видео и аудиосигналы) и используют это понимание для создания различных форм выходных данных. Недавние работы уровня State-of-The-Art (SoTA), такие как FAIR, FLAVA, Omnivore и data2vec, показали, что мультимодальные модели сопоставимы по точности с одномодальными аналогами, а в некоторых случаях превышают их. Отдельные генеративные модели, такие как Make-a-video и Make-a-scene, открывают новые возможности современных ИИ-систем.
По мере роста интереса к мультимодальному машинному обучению, исследователи ищут инструменты и библиотеки, которые позволят быстро экспериментировать с новыми идеями, опираясь на последние исследования в этой области. Хотя экосистема PyTorch, которую активно используют MLOps-специалисты, имеет богатый репозиторий библиотек и фреймворков, не всегда очевидно, как применять все эти компоненты для создания мультимодальных моделей SoTA. Новая библиотека TorchMultimodal решает эту проблему, предоставляя расширяемые и простые стандартные блоки, которые можно использовать для ускорения разработки моделей и проведения экспериментов. Также библиотека содержит сквозные примеры для обучения и оценки последних ML-моделей, которые пригодятся для создания дополнительных функций, таких как интеграция с FSDP и активация контрольных точек для масштабирования моделей и размеров пакетов.
TorchMultimodal – это Python-библиотека для фреймворка PyTorch, который широко используется для разработки моделей Machine Learning, включая глубокое обучение. TorchMultimodal включает репозиторий модулей для ML-систем: модели, слои слияния, функции потерь, наборы данных и утилиты, а также набор примеров, показывающих, как объединить эти стандартные блоки с компонентами и общей инфраструктурой всей экосистемы PyTorch.
Библиотека основана на следующих концепциях:
- Архитектуры – общие и компонуемые классы, которые охватывают основную логику, связанную с семейством ML-моделей. В большинстве случаев они принимают модули в качестве входных данных вместо плоских аргументов. Пользователям следует повторно использовать существующую архитектуру или создать новую, избегая наследования.
- Модели — конкретные экземпляры отдельно взятой архитектуры, реализованные с использованием функций построения, которые принимают в качестве входных данных все параметры для построения модулей, необходимых для реализации архитектуры.
- Модули – автономные компоненты, которые можно соединять различными способами для построения архитектуры.
TorchMultimodal позиционируется как библиотека PyTorch для масштабного обучения многозадачных мультимодальных моделей. Она направлена на решение конкретных проблем, с которыми сталкиваются Data Science специалисты, на практике создающие мультимодальные ML-модели, тратя много времени на внедрение служебных кодов для обучения мультимодальных моделей. Библиотека предоставляет стандартную реализацию функций потерь (контрастные потери), модули для передачи обучения, архитектуры моделей и слоев слияния. Также TorchMultimodal предоставляет примеры для демонстрации того, как комбинировать компоненты и реализовывать мультимодальные модели для различных доменов. Библиотека содержит CLIP, FLAVA, ALBEF, мультимодальный GPT, который расширяет архитектуру OpenAI GPT для мультимодальной генерации в сочетании с утилитой генерации и MultiHeadAttention — критический компонент для моделей, основанных на внимании, с поддержкой быстрого авторегрессивного декодирования.
Базовые мультимодальные модели часто бывают огромными, что создает проблемы распределенного обучения. За пределами 1 миллиарда параметров подгонка моделей на одном компьютере для DDP-стратегии параллельного разделения распределенных данных становится дорогостоящей. TorchMultimodal предоставляет возможность обучения с использованием FSDP-стратегии с полностью сегментированными и распараллеленными данными для моделей сегментов, которые не могут поместиться в памяти одной машины.
Библиотека также предоставляет такие методы, как контрольная точка активации (контрольная точка градиента), чтобы уменьшить использование памяти и дополнительно масштабировать обучение.
Мультимодальные модели могут иметь высокую задержку и размер. Это вызывает проблемы в обслуживании, увеличивая время обработки данных. Справиться с этим помогает сжатие модели, которое может снизить задержку и размер ML-модели. TorchMultimodal поддерживает различные методы сжатия модели, а также позволяет использовать встроенное хранилище и кэш для популярного контента. Кроме того, в библиотеке также есть возможность асинхронного режима вывода, что особенно актуально для больших мультимодальных моделей глубокого обучения. Читайте в нашей новой статье про потоковое машинное обучение на Python с библиотекой River.
Как применять эти и другие современные инструменты MLOps в проектах аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники