Bog'liq Цэй Ш., Байлесчи С., и др. - JаvaScript для глубокого обучения (Библиотека программиста) - 2021
Глава 1. Глубокое обучение и JavaScript
55 При использовании Keras для реализации полного технологического процесса
глубокого обучения хватает нескольких строк кода. Благодаря гибкости низкоуров
невых и удобству использования высокоуровневых API TensorFlow и Keras обра
зуют ведущую (в смысле использования в промышленности и научной среде) эко
систему глубокого обучения (см. твит
http://mng.bz/vlDJ
). Не стоит недооценивать их
роль в обеспечении доступности глубокого обучения для широкой публики. До по
явления фреймворков наподобие TensorFlow и Keras осуществлять глубокое обуче
ние на практике могли только специалисты с навыками программирования CUDA
и обширным опытом написания нейронных сетей на C++. Благодаря TensorFlow
и Keras создание глубоких нейронных сетей с GPUускорением требует намного
меньше навыков и усилий. Но оставалась одна проблема: раньше было невозможно
реализовывать модели TensorFlow или Keras непосредственно в браузере. Для вы
дачи обученных моделей DL в браузере приходилось выполнять HTTPзапросы
к серверу прикладной части. Именно здесь и пригодилась TensorFlow.js. Создателями
проекта TensorFlow.js были Нихиль Торат и Дэниел Смилков — два эксперта по
визуализации данных глубокого обучения и человекомашинному взаимодействию
1
из компании Google. Как мы уже упоминали, начало проекта TensorFlow.js заложи
ла чрезвычайно популярная демонстрационная модель глубоких нейронных сетей
TensorFlow Playground. В сентябре 2017 года была выпущена библиотека deeplearn.js
с API, аналогичным низкоуровневому API TensorFlow. Она поддерживала опера
ции над нейронными сетями с WebGLускорением, обеспечивая работу реальных
нейронных сетей в браузере с низкими задержками вывода.
После первых успехов deeplearn.js к проекту присоединились и другие участники
команды Google Brain, и он был переименован в TensorFlow.js. JavaScript API под
вергся серьезной переработке для усиления его совместимости с TensorFlow. Кроме
того, поверх низкоуровневого ядра был надстроен высокоуровневый API аля Keras,
что значительно упростило для пользователей описание, обучение и выполнение
моделей глубокого обучения в этой JavaScriptбиблиотеке. Сегодня все сказанное
выше относительно мощи и удобства использования Keras справедливо и для
TensorFlow.js. Для дальнейшего расширения совместимости были созданы средства
преобразования для импорта в TensorFlow.js моделей, сохраненных из TensorFlow
и Keras, а равно и экспорта их оттуда. После первой его демонстрации на конферен
циях TensorFlow Developer Summit и Google I/O весной 2018го (см.
www.youtube.com/
watch?v=YB-kfeNIPCE
и
www.youtube.com/watch?v=OmofOvMApTU
), TensorFlow.js быстро
стала чрезвычайно популярной библиотекой глубокого обучения на JavaScript с наи
большим на сегодня количеством веток среди всех подобных библиотек на GitHub.
На рис. 1.8 приведена общая архитектура TensorFlow.js. Нижний уровень от
вечает за быстрые параллельные вычисления математических операций. Хотя
большинству пользователей этот уровень не виден, его высокая производитель
ность чрезвычайно важна и позволяет обеспечить максимально быстрое обучение
модели и вывод на более высоких уровнях API. В браузере для GPUускорения
используется WebGL (см. инфобокс 1.2). В Node.js доступны как прямые привязки
для распараллеливания с помощью многоядерного процессора, так и GPUускорение
1
Интересная историческая справка: эти авторы также сыграли ключевую роль в создании
TensorBoard — популярного инструмента визуализации моделей TensorFlow.