Примечание. Отдельная благодарность Лессу Райту, партнеру-инженеру из Meta AI, за обзор и дополнение этой публикации.
Эта публикация, посвященная созданию эффективного искусственного интеллекта (ИИ), — вторая в серии "Лето Open Source". Цель этой серии — предоставить полезные ресурсы и обучающие материалы в областях, где проекты с открытым исходным кодом оказывают влияние на Meta и за ее пределами. В этих выпусках мы рассказываем о том, как Meta Open Source помогает индустрии, предлагая инновационные и масштабируемые инструменты.
С момента выпуска в 2016 г. PyTorch активно используется для задач глубокого обучения, а теперь его широко применяют в различных рабочих сценариях. Для машинного обучения (МО) и искусственного интеллекта (ИИ) наступило интересное время: появляется всё больше новых методов применения ИИ. Началась новая глава в истории PyTorch: он перешел в недавно созданный независимый фонд PyTorch Foundation под эгидой Linux Foundation. В совет руководителей фонда входят представители AMD, Amazon Web Services, Google Cloud, Microsoft Azure и Nvidia. Со временем состав совета планируется расширять. Миссия фонда — стимулировать внедрение инструментария ИИ через проекты, не требующие участия поставщиков, и сделать инструменты, библиотеки и другие компоненты с открытым исходным кодом доступными для всех. Благодаря переходу в этот фонд PyTorch и его сообщество, работающее с проектами с открытым исходным кодом, смогут ускорить путь от прототипирования к производству для ИИ и МО.
PyTorch — это прекрасный пример возможностей, которые предоставляет открытый исходный код. Будучи одним из первых фреймворков глубокого обучения с открытым исходным кодом, PyTorch позволил людям из разных областей проводить эксперименты с глубоким обучением и применять свои наработки в самых разных областях. PyTorch поддерживает эксперименты с поисковыми приложениями, разработку автономных транспортных средств, проекты в области георадиолокации, и это лишь некоторые области его применения. Использование универсальной библиотеки инструментов ИИ в сообществе открывает возможности для быстрой итерации и адаптации технологий в больших масштабах для различных применений.
По мере более широкого внедрения ИИ модели увеличиваются в размерах и позволяют решать более сложные задачи, но также значительно возрастают объемы ресурсов, необходимые для обучения этих моделей. К счастью, многие представители сообщества разработчиков осознали необходимость использования меньшего количества ресурсов для моделей — как с практической, так и с экологической точки зрения. В этой публикации мы рассмотрим, почему квантование и другие методы сжатия моделей могут стать катализатором эффективности ИИ.
Большая часть этой статьи посвящена некоторым вспомогательным и расширенным возможностям PyTorch. Новичкам, которые только хотят начать работу с PyTorch, и экспертам, которые сейчас используют другую библиотеку, проще всего начать с основ. Ознакомьтесь с руководством по PyTorch для новичков, в которое входит введение в основы процесса МО на примере набора данных Fashion MNIST.
Некоторые полезные ресурсы для тех, кто только начинает работу с PyTorch:
Существует много способов повысить эффективность ИИ. Кодирование аппаратного и программного обеспечения для оптимизации под ИИ может быть очень эффективным, однако разработка программно-аппаратных решений на заказ требует значительного времени и ресурсов. Другой вариант — создание более быстрых и компактных архитектур, но многие из них страдают от потери точности по сравнению с более крупными моделями, по крайней мере, сейчас. Более простой подход заключается в поиске путей для снижения объема ресурсов, необходимых для обучения и обслуживания существующих моделей. Один из способов сделать это в PyTorch — сжатие модели с помощью квантования.
Квантование — это математическая техника, которая используется для создания цифровых музыкальных файлов с потерями и конвертации аналоговых сигналов в цифровые. Квантование позволяет значительно повысить производительность на многих аппаратных платформах за счет выполнения математических вычислений с пониженной точностью. Зачем же использовать квантование для повышения эффективности ИИ? Результаты показывают, что в некоторых случаях использование этой относительно простой техники может привести к значительному ускорению вывода модели — в 2–4 раза.
Параметры, составляющие модель глубокого обучения, обычно представляют собой десятичные числа с плавающей запятой. Каждый параметр требует 16 или 32 бита памяти. При использовании квантования числа обычно преобразуются в INT4 или INT8, которые занимают всего 4 или 8 бит. Это снижает объем памяти, необходимой для работы модели. Кроме того, производители включают в чипы специальную арифметику, благодаря которой операции с целыми числами выполняются быстрее, чем с десятичными.
Существует три метода квантования, которые можно использовать для обучения моделей: динамическое, статическое и обучение с учетом квантования (QAT). Краткий обзор преимуществ и недостатков каждого метода приводится в таблице ниже. Узнать, как реализовать каждый из них в рабочих процессах ИИ, можно из статьи Practical Quantization in PyTorch.
Метод квантования | Преимущества | Недостатки |
---|---|---|
| Дополнительные затраты при каждом шаге вперед | |
| Может требоваться регулярная калибровка для устранения смещения распределения | |
| Высокие вычислительные затраты |
Квантование — не единственный способ сделать ИИ на базе PyTorch более эффективным. Функции регулярно обновляются. Ниже перечислены ещё несколько способов улучшить рабочие процессы ИИ с помощью PyTorch:
Режим вывода. Его можно использовать для написания кода PyTorch, если код используется только для выводов. В этом режиме некоторые предположения при работе с тензорами изменяются, чтобы ускорить вывод. Если вы сообщаете PyTorch, что не будете использовать тензоры для определенных приложений позже (в этом случае autograd), PyTorch адаптируется, чтобы код выполнялся быстрее в этих конкретных сценариях.
Низкая точность. Квантование работает только во время вывода, то есть после обучения модели. Для самого процесса обучения PyTorch использует автоматическое обучение смешанной точности (AMP), чтобы найти лучший формат в зависимости от того, какие используются тензоры (FP16, FP32 или BF16). Глубокое обучение низкой точности в PyTorch имеет ряд преимуществ. Оно помогает уменьшить размер модели, сократить объем памяти, необходимой для обучения моделей, и снизить мощность, необходимую для работы моделей. Подробную информацию см. в руководстве по использованию AMP с графическими процессорами с поддержкой CUDA.
Channels last. Когда речь идет о моделях зрения, NHWC, иначе известный как channels-last, представляет собой более быстрый формат тензорной памяти в PyTorch. Хранение данных в формате channels-last ускоряет операции в PyTorch. Форматирование входных тензоров в виде channels-last снижает затраты, необходимые для преобразования между различными типами форматов, что ускоряет вывод.
Оптимизация для выводов. Этот прототип TorchScript реализует некоторые виды общей оптимизации, которые ускоряют модели во всех средах, а также может подготовить модели к выводу с настройками конкретной сборки. Сейчас его основными вариантами использования являются модели зрения на ЦП (и графических процессорах). Поскольку это прототип, при его использовании могут возникать проблемы. Сообщайте о проблемах в репозитории PyTorch на GitHub.
Новые методы ускорения рабочих процессов ИИ регулярно обсуждаются в блоге PyTorch. Там вы точно не пропустите новинки и такие методы, как недавно выпущенный BetterTransformer, который ускоряет и повышает пропускную способность моделей Transformer почти в 2 раза для популярных сценариев выполнения. Если вам интересно узнать, как реализовать определенные функции, на этой странице вы найдете советы по разным темам, таким как оптимизация модели, распределенное обучение и интерпретируемость. Эта публикация призвана показать, как инструменты вроде PyTorch способствуют развитию проектов с открытым исходным кодом и ИИ.
Следите за последними новостями Meta Open Source для искусственного интеллекта и машинного обучения на нашем сайте, подписывайтесь на наш канал YouTube или следите за обновлениями на Facebook, в Twitter и LinkedIn.