*******************************************************************

LazyTensor от Facebook и Google позволяет создавать выразительные компиляторы для предметной области

Команда из Facebook и Google предложила LazyTensor — технику для ориентирования на предметно-ориентированные компиляторы без ущерба для эргономики определения за запуском.

Исследователи Facebook и Google объединились, чтобы представить новую технику, которая сочетает в себе быстрое выполнение и доменно-ориентированные компиляторы (DSC), чтобы использовать преимущества обоих. Предлагаемый «LazyTensor» позволяет в полной мере использовать все функции основного языка программирования во всей тензорной части пользовательских программ.

========================================

Стремительное выполнение — это императивный интерфейс, определяемый при запуске, который является одновременно выразительным и простым в отладке и формирует основу для большинства широко распространенных языков программирования. Тем временем оптимизация DSC — это проверенный способ повысить производительность моделей машинного обучения (ML), но он страдает от «проблемы языкового подмножества», которая делает его менее выразительным. Они созданы для совместной работы в новой статье LazyTensor: сочетание Eager Execution с компиляторами, специфичными для предметной области.

##. Исследователи резюмируют основной вклад своего исследования в следующее:

  • Метод объединения активной модели программирования тензорных программ с предметно-ориентированными компиляторами, которые не ограничивают выразительность языка программирования пользователя. Этот подход является достаточно общим, чтобы его можно было применять к любой среде машинного обучения с определением за запуском.
  • Реализация дизайна LazyTensor в двух разных средах машинного обучения на двух разных языках программирования: PyTorch и Swift для TensorFlow.
  • Оценка нашего дизайна на нескольких языках, типах Tensor и ускорителях (GPU и TPU).

Тензор — это обобщение векторов и матриц, которое можно легко представить как многомерный массив. В глубоком обучении это относится к абстракции многомерного массива на этапе обучения. DSC используются для абстракции Tensor для целевого аппаратного обеспечения предметной области (например, TPU) и повышения производительности данного аппаратного следа. DSC используют исходные программы в качестве входных данных в специфичном для компилятора промежуточном представлении (IR), например. XLA HLO IR, где синтаксис чрезвычайно многословен, а выделение памяти негибко. Это контрастирует с немедленным выполнением или библиотеками «определить-за-запуском», которые предоставляют пользователям всю мощь и выразительность языка программирования общего назначения, их легче отлаживать и они более гибкие.

** Чтобы найти решение, сочетающее в себе обе сильные стороны, исследователи сначала создали Tensor API, который предоставляет такие преимущества, как возможность использовать полный базовый язык для абстракции функций и потока управления и структуры данных.

** Как работает LazyTensor?

Основанная на Tensor API, система LazyTensor затем строится на базовой среде выполнения и компиляторе для предметной области XLA. LazyTensor состоит из трех основных компонентов: пользовательский тип тензора с API, идентичным существующему типу тензора; отображение высокоуровневых тензорных операций в последовательности XLA HLO, реализующие семантику запрошенной операции; и среда выполнения, которая переводит последовательности тензорных операций в XLA HLO IR и организует компиляцию и выполнение результирующей программы.

Чтобы проверить производительность системы LazyTensor, исследователи провели эксперименты по ряду измерений и приложений, включая повторное использование кода, обучение трансформаторов на облачных TPU и масштабирование ResNet-50 на TPU.

ResNet-50 с TensorFlow 2.0

Эксперименты подтвердили возможность повторного использования LazyTensor на разных языках программирования. PyTorch LazyTensor позволяет популярной библиотеке HuggingFace Transformer работать на облачных TPU с использованием XLA и демонстрирует значительные улучшения производительности на TPU по сравнению с аппаратным обеспечением GPU. LazyTensor также может масштабироваться до больших суперкомпьютеров TPU.

############################################

Статья LazyTensor:

Объединение Eager Execution с доменно-ориентированными компиляторами включено в arXiv.

*******************************************************************