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

Компиляторская абстракция Relax оптимизация динамических рабочих процессов машинного обучения от начала до конца

Оптимизация моделей машинного обучения с динамическими формами может быть решающей для достижения лучшей производительности и гибкости. Динамические формы относятся к способности модели обрабатывать входные данные с переменными размерностями во время выполнения. Пользователи используют фреймворки, поддерживающие динамические вычислительные графы, такие как TensorFlow’s eager execution или PyTorch. Эти фреймворки позволяют создавать модели, которые могут адаптироваться к переменным размерам ввода во время выполнения.

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

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

Исследователи представляют Relax. Это абстракция компилятора для оптимизации динамических рабочих нагрузок машинного обучения. У нее есть аннотации символической формы первого класса для отслеживания динамического вычисления формы по всей программе. Она также имеет абстракцию на кросс-уровне, которая объединяет вычислительные графы, тензорные программы на уровне циклов и вызовы библиотек в одном представлении для обеспечения кросс-уровневой оптимизации. Это компиляционный фреймворк для оптимизации моделей с динамической формой.

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

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

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