Отныне разработчикам доступна библиотека JavaScript, позволяющая выполнять нейронные сети непосредственно на веб-страницах с использованием API аппаратного ускорения обработки графики, доступного в современных браузерах.
Библиотека, получившая название TensorFire, создана группой ученых МТИ. Она позволяет выполнять модели машинного обучения, совместимые с фреймворком Google TensorFlow, на любом графическом процессоре. При этом, в отличие от других библиотек машинного обучения вроде Keras-js, ей не требуется связующее ПО для конкретных видеочипов.
TensorFire — это очередной шаг к тому, чтобы сделать машинное обучение доступным максимально широкой пользовательской аудитории. Библиотека рассчитана на ПО и оборудование, которое уже, скорее всего, есть у большинства, и обеспечивает высокую точность результатов, используя в разы меньше ресурсов, чем требовалось раньше.
TensorFire работает, пользуясь стандартом WebGL, который представляет собой кросс-платформенную систему рендеринга графики в браузере, ускоряемого с помощью видеопроцессора. WebGL поддерживает GLSL, Си-подобный язык программирования, используемый для написания шейдеров — коротких программ для преобразования данных непосредственно на графическом процессоре.
Обычно шейдеры используются в конвейере WebGL для преобразования изображений, например для рендеринга теней и других визуальных эффектов. Но в TensorFire шейдеры применяются для параллельного выполнения вычислений, необходимых для формирования умозаключений на основе моделей TensorFlow. Система также комплектуется библиотекой для импорта существующих моделей TensorFlow и Keras.
Фреймворк позволяет развернуть обученную модель в браузере и в нем же генерировать на ее основе прогнозы. При этом пользователю не нужно ничего загружать, устанавливать или компилировать — вся работа выполняется непосредственно в браузере. Данные, используемые для формирования умозаключений, тоже целиком обрабатываются на клиентской системе. Не имеет значения и марка графического процессора — поддерживаются чипы как AMD, так и Nvidia.
На сайте TensorFire приводится пример веб-приложения, реализующего нейронную сеть, которая позволяет стилизовать одно изображение под другое Источник: tenso.rs |
На сайте TensorFire приводится пример веб-приложения, реализующего нейронную сеть, которая позволяет стилизовать одно изображение под другое. Наиболее медленная часть демонстрации — загрузка модели и компиляция шейдерного конвейера, само же выполнение занимает не больше пары секунд.
Создатели TensorFire утверждают, что библиотека работает быстрее, чем другие подобные решения, одно из узких мест которых — перенос данных между графическим и центральным процессором; TensorFire избегает этой процедуры, стараясь обрабатывать максимально возможный объем данных на графическом процессоре.
Наиболее важные преимущества TensorFire — переносимость и удобство. Современные браузеры существуют практически для всех операционных систем и аппаратных платформ, при этом даже у смартфонов эконом-класса ресурсы графического процессора доступны в избытке. Значительная часть работы по получению полезных результатов от моделей машинного обучения состоит в создании конвейера для обучения или предоставления выводов. Здесь же этот процесс, по крайней мере для некоторых видов задач, сведен к открытию браузера и выполнению пары щелчков мышью, что весьма удобно.
Еще одно преимущество, заявленное создателями TensorFire, — возможность получения прогнозов с использованием ресурсов только клиентского устройства. Когда обученная модель и данные уже находятся в облаке, это не имеет большого значения, но когда модель компактна, данные находятся на клиенте, а пользователь не желает загружать что-либо в облако, польза есть.
Третий плюс TensorFire состоит в том, что библиотека не накладывает ограничений на тип поддерживаемых видеопроцессоров, давая возможность пользоваться ускорителями как Nvidia, так и AMD.
На сегодня технология Nvidia CUDA считается предпочтительной для ускорения машинного обучения средствами графических процессоров, поскольку она обеспечивает более высокую производительность, чем открытый стандарт OpenCL, поддерживающий более широкий круг оборудования. У AMD есть идеи по преодолению нехватки производительности OpenCL, но TensorFire дает разработчикам возможность полностью обойти проблему.
Библиотека использует в работе прием, набирающий популярность среди разработчиков подобных систем: повышение компактности и эффективности моделей машинного обучения за счет небольшой, практически незаметной потери точности. В итоге на клиентах развертываются модели меньшего размера, а результаты генерируются быстрее.