Новый язык Triton ускоряет выполнение алгоритмов ИИ на GPU

30 июль, 2021 - 12:15

 

Новый язык Triton ускоряет выполнение алгоритмов ИИ на GPU

Известная лаборатория исследований искусственного интеллекта OpenAI два года назад в научной статье представила Triton, специализированный язык программирования, который, по её заявлению, должен позволить разработчикам с легкостью создавать высокопроизводительные алгоритмы машинного обучения.

На этой неделе OpenAI выложила в репозитории GitHub обновленную версию этого языка, получившую название Triton 1.0, которая подходит для корпоративных проектов машинного обучения и выполняет множество оптимизаций кода ИИ автоматически, экономя время разработчиков.

Подавляющее большинство корпоративных моделей ИИ работают на графических процессорах Nvidia и создаются с использованием ПО CUDA этой компании.  Данный фреймворк предоставляет базовые программные блоки для выполнения ИИ-вычислений с помощью GPU.

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

Эту проблему OpenAI решает с помощью Triton.  Относительная простота нового языка позволит командам разработчиков ПО создавать более эффективные алгоритмы даже не имея обширного опыта программирования на CUDA.

Новый язык Triton ускоряет выполнение алгоритмов ИИ на GPU


Triton улучшает производительность ИИ путём оптимизации трёх основных этапов процесса обработки данных алгоритмом машинного обучения:
    1. Перемещение данных между DRAM и SRAM графического процессора. Чем быстрее они могут передаваться между этими двумя компонентами памяти, тем быстрее работают алгоритмы машинного обучения. Triton автоматически объединяет данные, перемещаемые из DRAM в SRAM, в более крупные блоки, тем самым экономя время разработчиков.
    2. Распределение входящих блоков данных по сегментам SRAM так, чтобы их можно было анализировать как можно быстрее. Triton тут снижает вероятность так называемых конфликтов банков памяти – попытка двух программ записать данные в один и тот же сегмент памяти. Эти конфликты задерживают вычисления до тех пор, пока они не будут разрешены, замедляя работу алгоритмов ИИ.
    3. Третья и последняя задача, которую частично помогает автоматизировать Triton, это распределение вычислений по нескольким ядрам CUDA для одновременного параллельного выполнения.