OpenAI выпускает Triton, язык программирования для оптимизации рабочих нагрузок ИИ

OpenAI выпускает Triton, язык программирования для оптимизации рабочих нагрузок ИИ

Источник · Перевод автора

Сегодня OpenAI выпустила Triton, Python-подобный язык программирования с открытым исходным кодом, который позволяет исследователям писать высокоэффективный код GPU для рабочих нагрузок ИИ. OpenAI утверждает, что Triton позволяет достичь максимальной производительности оборудования с относительно небольшими усилиями, создавая код, равный тому, что мог бы достичь эксперт, всего за 25 строк.

Глубокие нейронные сети превратились в важный тип модели искусственного интеллекта, способный обеспечить высочайшую производительность при обработке естественного языка, компьютерном зрении и других областях. Сила этих моделей заключается в их иерархической структуре, которая генерирует большой объем высокопараллелизируемой работы, хорошо подходящей для многоядерного оборудования, такого как графические процессоры. Платформы для вычислений на GPU общего назначения, такие как CUDA и OpenCL, в последние годы упростили разработку высокопроизводительных программ. Тем не менее, графические процессоры по-прежнему сложно оптимизировать, отчасти потому, что их архитектуры быстро развиваются.

Для решения этой проблемы появились предметно-ориентированные языки и компиляторы, но эти системы, как правило, менее гибкие и медленные, чем лучшие ядра рукописных вычислений, доступные в библиотеках, таких как cuBLAS, cuDNN или TensorRT. Рассмотрение всех этих факторов может оказаться сложной задачей даже для опытных программистов. Таким образом, цель Triton – автоматизировать эти оптимизации, чтобы разработчики могли сосредоточиться на высокоуровневой логике своего кода.

«Новые исследовательские идеи в области глубокого обучения обычно реализуются с использованием комбинации собственных операторов фреймворка… [W] использование специализированных ядер графического процессора [может повысить производительность], но [часто] на удивление сложно из-за многих сложностей программирования на графическом процессоре. И хотя в последнее время появилось множество систем, облегчающих этот процесс, мы обнаружили, что они либо слишком подробны, не обладают гибкостью, [или] генерируют код заметно медленнее, чем наши настроенные вручную базовые линии», – Филипп Тилле (Philippe Tillet), первоначальный создатель Triton, который сейчас работает в OpenAI в качестве члена технического персонала, написал в своем блоге. «Наши исследователи уже использовали [Triton] для создания ядер, которые в 2 раза более эффективны, чем эквивалентные реализации Torch, и мы рады работать с сообществом, чтобы сделать программирование на GPU более доступным для всех».

Упрощение кода

Согласно OpenAI, Triton, берущий свое начало в статье 2019 года, представленной на Международном семинаре по машинному обучению и языкам программирования, упрощает разработку специализированных ядер, которые могут быть намного быстрее, чем ядра в библиотеках общего назначения. Его компилятор упрощает код и автоматически оптимизирует и распараллеливает его, преобразовывая в код для выполнения на последних графических процессорах Nvidia. (ЦП, графические процессоры AMD и другие платформы, кроме Linux, в настоящее время не поддерживаются).

«Основная проблема, которую ставит предлагаемая нами парадигма, заключается в планировании работы, то есть в том, как работа, выполняемая каждым экземпляром программы, должна быть разделена для эффективного выполнения на современных графических процессорах», – объясняет Тиллет на веб-сайте документации Triton. «Чтобы решить эту проблему, компилятор Triton интенсивно использует анализ потока данных на уровне блоков, метод статического планирования итерационных блоков на основе структуры управления и потока данных целевой программы. Полученная система действительно работает на удивление хорошо: нашему компилятору удается автоматически применять широкий спектр интересных оптимизаций».

Первая стабильная версия Triton вместе с руководствами доступна в репозитории проекта на GitHub.