Новости

Команда PyTorch представляет свой технический план, содержащий почти сто страниц документов, раскрывающих направление развития во второй половине 2024 года.

2024-07-15

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


Новый отчет мудрости

Монтажер: Цяо Ян

[Введение в новую мудрость]Недавно команда PyTorch впервые объявила о плане разработки, который был напрямую изменен на основе внутренних технических документов, раскрывая следующее направление развития этой классической библиотеки с открытым исходным кодом.

Если вы занимаетесь разработкой на Python в области искусственного интеллекта, PyTorch наверняка будет вашим старым другом. В 2017 году Meta AI выпустила эту библиотеку с открытым исходным кодом в области машинного и глубокого обучения, которая существует уже седьмой год.

Согласно статистике Assembly AI за 2021 год, все 30 самых популярных моделей HuggingFace могут работать на PyTorch, а 92% моделей являются собственностью PyTorch. Эта пропорция делает многих конкурентов, включая TensorFlow, недосягаемыми.


Буквально 10 июля команда инженеров PyTorch впервые публично опубликовала свой план действий, определив направление развития на вторую половину 2024 года.

Сумит Чинтала, соучредитель Meta и руководитель команды PyTorch, официально объявил об этом в Twitter.

Он сказал, что надеется обнародовать мотивы и цели исследований инженеров.

«Хотя все разработки PyTorch доступны на GitHub, фактические документы по планированию и дорожным картам, написанные командами различных филиалов PyTorch, не являются общедоступными, поэтому мы решили внести изменения, чтобы повысить прозрачность».


Готт Брат, технический руководитель проекта команды PyTorch, также сделал аналогичное заявление на форуме.


Мы думали о том, как поделиться планом работы, которую команда делает над PyTorch. Мы планируем раз в два года, поэтому здесь представлены некоторые общедоступные версии наших планов OSS на второе полугодие 2024 года для нескольких ключевых областей PyTorch.

Эти файлы по сути представляют собой внутренние документы и планы работы команды PyTorch. После удаления некоторого контента они были опубликованы в виде дорожной карты, которая включает в себя следующие аспекты PyTorch:

- Основные библиотеки и основная производительность

- Распределенный

- torchune, Torchrec, TorchVision

- PyTorch Edge

- Загрузка данных (DataLoading)

- Ядро компилятора и его развертывание

- Инфраструктура разработчика

Каждый документ содержит как минимум три части, основанные на идеях OKR:

- фон

- Пять основных направлений и целей: цели, ключевые результаты, известные или неизвестные риски и соответствующие меры по их снижению (максимум одна страница).

- 3–5 основных аспектов повышения инженерного уровня: классификация основных компонентов BE, цели, индикаторы/статус/конкретные цели, известные или неизвестные риски и меры по их смягчению, воздействие/затраты, приоритет/уровень уверенности (максимум одна страница)

Среди них Столп BE можно рассматривать как «пять принципов», написанных Метой для команды разработчиков. Конкретное содержание:

Лучший код, лучшая документация, расширение возможностей команд, современный код, лучшая архитектура

Я не знаю, беспокоил ли кого-либо из разработчиков размер документов из-за правила «максимум одна страница». В конце концов, документы дороже, чем длинные документы. Сжатие многих требований к разработке на одной странице не только экономит время коллег. также проверяет писательские способности.

Кроме того, в документе также можно увидеть некоторые отличные идеи команды разработчиков Meta, такие как упор на сотрудничество различных групп модулей, акцент на интеграции API и совместной разработке с внешними партнерами, а также упор на взаимодействие с сообществом открытого исходного кода и разработчиками.

Запуская новую базу кода, такую ​​как ExecuTorch, или желая повысить влияние компилятора PyTorch, команда обычно исходит из двух аспектов: во-первых, приложить все усилия для повышения производительности и напрямую нацелиться на SOTA; с другой стороны, это сделать; глубокая интеграция. Начните работу с более нестандартными вариантами использования.

Возможно, это ключ к успеху Meta в области открытого исходного кода на протяжении многих лет.

Ниже приводится частичная выдержка и краткое изложение содержания каждого документа.


Исходный адрес: https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226.

Основные библиотеки и основная производительность

Основные библиотеки, задействованные в документе, включают TendorDict, torchao, NN, TorchRL и т. д.

Что касается производительности, команда PyTorch предложила цель достижения производительности SOTA при обучении моделей и выводе. Меры включают внедрение технологии оптимизации архитектуры и высокопроизводительного ядра для формирования комбинации со всем стеком технологий PyTorch.

Прошлый год стал свидетелем быстрого развития GenAI. Появилось множество внешних библиотек для поддержки развития в области исследований, но многие из них напрямую не полагаются на PyTorch, что поставит под угрозу доминирование PyTorch в области научных исследований.

Чтобы снова идти в ногу со временем, PyTorch будет обеспечивать поддержку общих технологий разработки, таких как квантование, разрежение, MoE и обучение с низкой точностью, включая строительные блоки и API (в основном интегрированные в torchao), чтобы помочь моделировать различные архитектуры Transformer. повысить производительность.

Библиотека torchao может помочь исследователям настроить высокопроизводительные методы dtype, макета и оптимизации в рамках PyTorch, расширяя область использования до различных сценариев, таких как обучение, вывод и настройка.

Кроме того, обновления основной библиотеки будут включать следующее:

- Запущенная библиотека автоматической оптимизации torchao добилась революционного успеха. Следующим шагом является улучшение организации кода и отделение числовых операций от основной библиотеки.

- Устраняет основную модульность TendorDict, поддерживает сериализацию загрузок/сохранений и ускоряет работу в 2 раза в режиме ожидания.

- Продолжая успешную загрузку с отображением памяти в первой половине года, продолжайте улучшать производительность и безопасность загрузки/хранения моделей.

- Сокращение накладных расходов TorchRL на 50 %.

- Добавлена ​​основная поддержка NoGIL.

- Исправлена ​​проблема, из-за которой переменная TORCH_env, о которой сообщили пользователи, не работает.

В документе также упоминается прекращение поддержки модуля nn.transformer и говорится, что будет выпущен ряд руководств и сценариев использования, чтобы показать, как использовать torch.compile, sdpa, NJT, FlexAttention, custom_op, torchao и другие модули для сборки Transformer.

распределенный

Предварительное обучение LLM обычно охватывает десятки или даже тысячи графических процессоров, и поскольку масштаб параметров модели постепенно увеличивается, вывод и точную настройку сложно выполнить на одном графическом процессоре.

Таким образом, следующий «распределенный» макет PyTorch всесторонне охватывает три звена обучения, вывода и точной настройки и предлагает достичь сверхкрупномасштабного распределенного обучения, точной настройки с высокой эффективностью использования памяти и распределенного рассуждения с несколькими хостами. .

тренироваться

Параллельные режимы, изначально поддерживаемые PyTorch, в основном включают следующее:

- Полный параллельный сегмент данных (FSDP)

-Гибридное параллельное сегментирование данных (HSDP)

-Тензорная параллель (ТП)

- Параллельный трубопровод (ПП)

- Параллельная последовательность (SP)

-Контекстная параллель (CP)

PyTorch надеется на дальнейшую модульность различных параллельных методов в TorchTitan, что позволит разработчикам свободно комбинировать и достигать N-мерного параллелизма по мере необходимости.


В документе конкретно упоминается необходимость добавить поддержку двух новых архитектур: MoE и мультимодальности, таких как экспертный параллелизм и оптимизация алгоритмов маршрутизации.

Помимо обновления самого TorchTitan, распределенной команде также необходимо продолжить тесное сотрудничество с командой компилятора, чтобы лучше интегрироваться с модулем torch.compile и обеспечить дополнительные улучшения производительности в крупномасштабных распределенных сценариях.

Точная настройка и вывод

Точная настройка: в сочетании с torchtune можно использовать решение FSDP2 LoRA/QLoRA и поддерживать квантование NF4 словаря состояний модели.

Обоснование: PP и DP стали ядром распределенных API. Далее нам нужно обратить внимание на распределенное мышление torchtitan, которое поддерживает большие модели PP + асинхронные методы TP.

В документе также упоминается, что API вывода HuggingFace будет перенесен с PiPPy на PyTorch (выполнено HuggingFace).

torchtune, TorchRec, TorchVision

torchtune

Запуск torchtune призван помочь пользователям более удобно настраивать LLM. Это также официальное решение для тонкой настройки модели Llama.

«Точная настройка», определяемая torchtune, имеет очень широкий диапазон, который можно свести к трем типам сценариев:

- Адаптация модели к наборам данных, специфичных для предметной области, или последующим задачам.

- Моделирование вознаграждений и предпочтений, таких как RLHF, DPO и т. д.

- Процесс обучения, включая дистилляцию и квантование

Обновления во второй половине года будут поддерживать тонкую настройку рабочих процессов агентов, уделяя при этом внимание улучшению точной настройки производительности.

Команда будет сотрудничать с модулями компиляции, ядра, распространения и другими модулями, чтобы обеспечить эффективную тонкую настройку и установить репрезентативные тесты производительности тонкой настройки в экосистеме PyTorch.

Поскольку torchtune также является новой библиотекой с открытым исходным кодом, взаимодействие с сообществом открытого исходного кода также имеет важное значение.

В документе предлагается публиковать статьи и учебные пособия в блогах, проводить технические лекции и т. д. для улучшения понимания пользователями; в нем также будут определены количественные показатели для измерения доли вклада torchturn в экосистему LLM;

Помимо сообщества открытого исходного кода, torchune будет интегрироваться как минимум с одним партнером и участвовать в его сообществе для продвижения использования torchune.

TorchVision

Будучи абсолютным доминирующим игроком в области CV, компания TorchVision является относительно зрелой технологией, поэтому в дорожной карте предлагается очень мало обновлений.

Команда продолжит работать в направлении предварительной обработки, поддерживать больше форматов (таких как WebP, HEIC) и платформ (таких как CUDA) в области кодирования/декодирования изображений, а также улучшать производительность кодирования/декодирования формата jpeg на графический процессор.

TorchRec

Целью TorchRec является предоставление примитивов разреженности и параллелизма, обычно используемых в крупномасштабных рекомендательных системах. Первая стабильная версия TorchRec 1.0 будет выпущена осенью.

Край

В настоящее время библиотека с открытым исходным кодом ExecuTorch выпустила альфа-версию, которая в основном опирается на torch.compile и torch.export для поддержки анализа модели, отладки и вывода на мобильных устройствах и периферийных устройствах (таких как AR/VR, носимые устройства).

Во второй половине года команда Edge запустит бета-версию xecuTorch и предоставит решения в рамках экосистемы PyTorch для моделей серии Meta Llama и других моделей с открытым исходным кодом.

Ключевые задачи в основном охватывают два направления. Первая задача — предоставить базовые функции и надежную инфраструктуру для искусственного интеллекта на устройстве, включая:

- Обеспечить стабильность API для C++ и Python.

- Реализация ряда основных функций: поддержка сжатия моделей, управление расположением кэша прокси, разделение данных и программ.

Во-вторых, необходимо защитить эту зарождающуюся базу кода, развивать влияние в сообществе открытого исходного кода и поддерживать хорошие отношения сотрудничества с такими компаниями, как Arm, Apple и Qualcomm.

Цель влияния сообщества даже была определена количественно: код должен получить 3 тысячи звезд на GitHub и быть клонирован (форкнут) 500 раз. Заинтересованные читатели могут продолжить внимание и посмотреть, сможет ли команда завершить этот OKR к концу года.

Загрузка данных

Библиотека наборов данных HuggingFace, основанная на формате Apache Arrow, внезапно появилась в последние годы с ее высокоскоростной загрузкой/хранением без ограничений памяти и, похоже, привлекла всеобщее внимание функций, связанных с PyTorch.

Документ по загрузке данных начинается с стремления снова сделать библиотеку TorchData великолепной и восстановить доминирование PyTorch в загрузке данных.

Для достижения этой цели необходимо сделать соответствующие функции гибкими, масштабируемыми, высокопроизводительными и эффективно использующими память, обеспечивая при этом «дурацкую» работу и поддерживая мультимодальное обучение различных масштабов.

Конкретные цели обновления включают следующие аспекты:

- Функциональное развитие и интерфейс DataLoader сначала будут реализовывать принцип GitHub, а DataPipes и DataLoader v2 будут постепенно устаревать и удаляться.

- Обеспечение четких границ и хорошей совместимости между TorchTune, TorchTitan, HuggingFace и TorchData, а также поддержка мультинаборов данных и мультимодальной загрузки данных.

- HuggingFace использует API StatefulDataLoader для обеспечения совместимости и своевременного обновления образцов и тестовых примеров.

Ядро компилятора и его развертывание

Основные функции компилятора PyTorch после многих лет разработки становились все более совершенными. Сейчас необходимо обеспечить более глубокую интеграцию и дополнительную поддержку оптимизации в областях LLM и GenAI.

В дорожной карте предлагается внедрить функцию torch.compile() во все аспекты цикла использования LLM и GenAI (вывод, точная настройка, предварительное обучение), чтобы важные модели можно было скомпилировать с помощью собственного PyTorch после его выпуска.

Для достижения этой цели в документе предлагается множество конкретных мер, таких как работа с командами torchtune и TorchTitan для улучшения производительности компиляции, а также выпуск собственных скомпилированных PyTorch версий как минимум двух известных моделей во второй половине года.

Кроме того, компилятор может добавить возможности визуализации для создания графов модели, выражающих процесс прямого вычисления/обратного распространения ошибки в режиме неторопливого обучения.

Существует также множество планов поддержки пользователей, таких как улучшение мониторинга и наблюдаемости системы, а также помощь пользователям в самостоятельной отладке проблем компиляции. Ключевые цели также включают создание группы поддержки пользователей для решения проблем, возникающих у разработчиков на таких платформах, как GitHub, в нескольких ключевых областях (классы данных, управление контекстом и т. д.).

Использованная литература:

https://dev-discuss.pytorch.org/t/meta-pytorch-team-2024-h2-roadmaps/2226

https://x.com/soumithchintala/status/1811060935211049046

https://www.assemblyai.com/blog/pytorch-vs-tensorflow-in-2023/