Часть I • Актуальность и основные понятия
сравнима со скоростью Keras в Python. А значит, tfjsnode — подходящая среда для
обучения больших моделей ML со значительными объемами данных. В книге при
водятся примеры, в которых мы обучаем с помощью tfjsnode такие модели, которые
не по зубам браузеру (например, модель для распознавания слов в главе 5 и средство
анализа тональности текста в главе 9).
Но почему вообще имеет смысл предпочесть Node.js более широко известной
среде Python для обучения моделей машинного обучения? Ответов два: 1) бы
стродействие; 2) совместимость с уже существующим стеком и набором профес
сиональных навыков программистов. Вопервых, что касается быстродействия, то
новейшие интерпретаторы JavaScript (например, используемый Node.js движок V8)
выполняют динамическую (JIT) компиляцию кода на JavaScript, что обеспечивает
более высокую, по сравнению с Python, производительность. В результате обучение
модели в tfjsnode зачастую занимает меньше времени, чем в Keras (Python), если
эта модель достаточно мала для того, чтобы определяющим фактором была произ
водительность интерпретатора языка.
Вовторых, Node.js — очень популярная среда для создания серверных прило
жений. Если ваша серверная часть уже написана на Node.js и вы хотите добавить
в свой стек машинное обучение, будет разумнее воспользоваться tfjsnode, а не
Python. Благодаря тому что весь код написан на одном языке, можно напрямую
переиспользовать большие фрагменты базы кода, включая функции загрузки
и форматирования данных, а значит, ускорить подготовку конвейера обучения
модели. А поскольку в стек не добавляется новый язык, его сложность и затраты
на сопровождение снижаются и, возможно, не придется дополнительно нанимать
программиста на Python.
Наконец, написанный на TensorFlow.js код машинного обучения будет работать
как в среде браузера, так и в Node.js, за исключением, возможно, кода обработки
данных, использующего API, работающие исключительно в браузере или Node.
Почти все примеры кода из книги будут работать в обеих средах. Мы приложили
все усилия, чтобы отделить не зависящий от среды, ориентированный на машинное
обучение код от ориентированного на конкретную среду кода ввода и обработки
данных. Дополнительное преимущество состоит в том, что достаточно изучить одну
библиотеку, чтобы проводить глубокое обучение как на стороне сервера, так и на
стороне клиента.
1.2.2. Экосистема JavaScript
При оценке того, подходит ли JavaScript для определенного типа приложений, на
пример для глубокого обучения, не стоит игнорировать исключительно обширную
экосистему этого языка. На протяжении многих лет JavaScript неизменно занимал
первое место среди нескольких десятков языков программирования по количеству
репозиториев и запросов на включение кода на GitHub (см.
http://githut.info/
). В си
стеме управления пакетами npm, дефакто главном открытом репозитории пакетов
JavaScript, по состоянию на июль 2018 года насчитывалось более 600 000 пакетов.
Это более чем вчетверо превышает количество пакетов в PyPI, фактически главном
открытом репозитории пакетов Python (
http://www.modulecounts.com/
). И хотя у ма
Do'stlaringiz bilan baham: |