НЬЮ-ЙОРК – Лори Лэй, старший инженер-программист в Ippon Technologies, сообщает хорошие новости для разработчиков JavaScript: вам не обязательно осваивать Python для машинного обучения (ML). По ее словам, хотя Python явно доминирует в этой области, использование JavaScript с машинным обучением предложит разработчикам внешнего интерфейса новые способы улучшения функций приложения с помощью искусственного интеллекта на устройствах.
Лэй объяснил, что JavaScript и Node.js выводят на новый уровень развития искусственного интеллекта на Международной конференции JavaScript devmio, проходившей с 30 сентября по октябрь. 1 в Бруклине.
Почему Python — король машинного обучения
До сих пор Python был языком для выполнения задач машинного обучения, но, по словам Лэя, в синтаксисе Python нет ничего врожденного, что сделало бы его лучшим языком для машинного обучения.
«В течение последнего десятилетия любая серьезная дискуссия о машинном обучении всегда была связана с языком программирования Python, и это доминирование не было случайным и не потому, что Python — исключительно быстрый язык», — сказала она. «Истинная причина в том, что Python стал связующим языком высокого уровня для подавляющего большинства других библиотек».
По ее словам, тяжелая работа в машинном обучении выполняется не самим кодом Python, а базовыми библиотеками, такими как NumPy для численных вычислений и Pandas для манипулирования данными. Эти библиотеки на самом деле представляют собой сложные оболочки Python для высокооптимизированного низкоуровневого кода, написанного на C и Fortran, продолжила она.
Лори Лэй представляет доклад о JavaScript и машинном обучении. Фото Лорейн Лоусон.
«Именно эта архитектура позволила ученым и исследователям работать с простым, читаемым синтаксисом Python, а также использовать скорость вычислений C для выполнения интенсивных математических операций», — сказала она. «Такое сочетание простоты и высокой производительности способствовало развитию машинного обучения».
По ее словам, не повредило то, что Python на раннем этапе получил существенные инвестиции от таких компаний, как Google, которые поддержали разработку TensorFlow и наняли создателя Python Гвидо ван Россума.
«Деньги, простота использования и сильное сообщество помогли укрепить позицию Python в создании этой богатой экосистемы, инструментов, инфраструктур и высококачественной документации», — сказала она.
Если не Python, то JavaScript?
Таким образом, барьер для входа на самом деле заключается не в синтаксисе Python, а в «воспроизведении этой огромной, проверенной в боях низкоуровневой экосистемы научных вычислений», — сказала она. Python доминирует в автономном обучении моделей, но сейчас ситуация существенно меняется.
«Идея серьезного машинного обучения в JavaScript теперь стала практической реальностью, поскольку она обусловлена рядом технологических достижений», — сказала она.
Во-первых, это скорость движков JavaScript, таких как Google V8, которая резко возросла благодаря таким методам, как компиляция «точно в срок», которая выполняет JavaScript со скоростями, ранее невообразимыми для интерпретируемого языка, объяснила она. Во-вторых, Node.js предоставляет надежную масштабируемую серверную среду, которая освобождает JavaScript от ограничений браузера.
Существует также экосистема npm, которая создала крупнейший в мире реестр программного обеспечения. По словам Лэя, экосистема поощряет культуру открытого сотрудничества и облегчает обмен сложными инструментами и их использование.
Экосистема npm теперь включает в себя ряд специализированных библиотек машинного обучения, которые предоставляют разработчикам необходимые инструменты для создания и обучения моделей на JavaScript. Но с тех пор, как Python стал чемпионом по машинному обучению, произошел еще более значительный сдвиг, сказала она.
«Возможно, самый влиятельный сдвиг произошел в постоянном совершенствовании аппаратного обеспечения современных клиентских устройств, от ноутбуков до телефонов в ваших карманах, которые теперь обладают такой вычислительной мощностью, что позволяют фактически запускать эти сложные модели машинного обучения локально», — сказал Лэй. «И это изменило правила игры во всем».
JavaScript для машинного обучения
Цель не в том, чтобы заменить Python, предупредил Лэй. Речь идет о включении машинного обучения на клиенте с помощью JavaScript.
«Речь идет о внедрении машинного обучения в среду, где JavaScript является родным языком, а именно в веб-браузере», — сказала она. «Это открывает новый класс приложений, которые действительно сложно или невозможно реализовать с помощью традиционной серверно-ориентированной архитектуры».
«Речь идет о внедрении машинного обучения в среду, где JavaScript является родным языком, а именно в веб-браузере…»
– Лори Лэй, старший инженер-программист в Ippon Technologies.
Запуск моделей машинного обучения на стороне клиента открывает ряд функций, которые раньше были невозможны, продолжил Лэй.
По ее словам, традиционная облачная модель искусственного интеллекта требует, чтобы пользователи отправляли свою личную информацию и данные, включая фотографии, личные сообщения или медицинскую информацию, на сторонний сервер для обработки. Это создает неотъемлемые риски для конфиденциальности и безопасности. Но на устройстве машинное обучение с помощью JavaScript может снизить эти риски.
«Когда модели обучения запускаются непосредственно на устройстве пользователя, данные никогда не покидают его и остаются конфиденциальными и безопасными», — сказала она. «Это действительно важно для приложений, обрабатывающих конфиденциальную информацию, таких как здравоохранение, финансы, наши корпоративные приложения. Мы также видим, что, устраняя зависимость от сетевого подключения, наши приложения работают быстрее и надежнее, а прогнозы могут быть более мгновенными, поскольку приложение может работать даже в автономном режиме».
Модели также могут быть точно настроены и настроены для каждого отдельного пользователя на его собственном устройстве, добавила она.
«Например, модели рекомендаций по продуктам могут адаптироваться к уникальному стилю или одежде пользователя, просматривая его изображения, и им никогда не придется отправлять личные изображения на отдельный сервер», — сказал Лэй.
Преимущество узла
По словам Лэя, Node.js также предлагает преимущества для архитектуры машинного обучения.
По ее словам, серверная логика, основанная на Node, живет в одном мире, в то время как сложные модели машинного обучения, которые почти исключительно написаны на Python, живут в другом мире.
Чтобы заставить их говорить, разработчикам пришлось создать отдельный микросервис Python, обернуть его API Flask (Flask — это легкая, минимальная веб-инфраструктура Python, также используемая для создания API), а затем выполнить сетевые вызовы из приложения Node. По ее словам, это медленное и сложное развертывание, а также создает еще одну точку отказа.
«Сила Node заключается в том, что он построен на управляемой событиями неблокирующей модели ввода-вывода на основе Chrome V8. Это делает Node действительно эффективным в обработке множества одновременных веб-запросов, а добавив функции машинного обучения непосредственно в код JavaScript и на ваш сервер Node, вы можете получить идеальную платформу для предоставления прогнозов на основе уже обученной модели машинного обучения», — сказал Лэй.
Node идеально подходит для создания приложений реального времени для таких вещей, как интеллектуальные чат-боты, позволяющие обрабатывать тысячи одновременных разговоров или обрабатывать данные в реальном времени с подключенных устройств, добавила она. Это позволяет создавать такие функции, как домашний помощник, который может регулировать термостат в зависимости от людей или домашних животных в комнате, или механизм живых рекомендаций для предоставления персонализированных рекомендаций большой базе пользователей с минимальной задержкой.
Почему машинному обучению нужны JavaScript и Python
«Однако одна из главных вещей, которую я хочу убедиться в результате этого выступления, — это то, что перед нами не стоит выбор между Python и JavaScript», — сказал Лэй. «Это не всегда преимущество друг перед другом. Речь идет об использовании сильных сторон каждой из этих экосистем для ваших приложений машинного обучения».
По ее словам, Python по-прежнему превосходен, когда разработчикам требуется интенсивное вычислительное обучение модели. JavaScript лучше всего работает для обслуживания масштабируемых API в реальном времени с помощью Node и клиентской части. Он также поддерживает дополнительные операции безопасности и операции для приложений, специфичные для устройства.
«Сейчас происходит эволюция веб-платформы, и мы, как разработчики, имеем возможность создавать новое поколение этих интеллектуальных приложений».
— Лори Лэй
Можно даже использовать гибридный подход, при котором разработчик обучает модель на Python для оптимизации сложной модели машинного обучения. Модель можно сохранить в формате JSON; а в Node программист может использовать библиотеку типа TensorFlow, которая загружает предварительно обученную модель в память. Затем разработчик сможет предоставить конечную точку API, а клиентские приложения смогут вызывать эту предварительно обученную модель и получать прогнозы, объяснила она.
«Этот подход сочетает в себе мощь и зрелость среды обучения Python со сверхбыстрой производительностью обработки нескольких запросов Node и надежной масштабируемой архитектурой для развертывания здесь моделей машинного обучения», — сказала она.
Не думайте, что машинное обучение в экосистеме JavaScript — это «мимолетная тенденция», добавила она.
«Сейчас происходит эволюция веб-платформы, и мы, как разработчики, имеем возможность создавать новое поколение этих интеллектуальных приложений», — сказал Лэй. «Многие из наших приложений, уже созданных с использованием JavaScript, имеют возможность сохранять данные приложения локализованными, конфиденциальными и в режиме реального времени. Это делает JavaScript действительно идеальным языком для развертывания моделей машинного обучения на наших небольших локальных устройствах с ограниченными ресурсами».
ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Лорейн Лоусон — опытный репортер в области технологий, которая в течение 25 лет освещала технологические вопросы, от интеграции данных до безопасности. До прихода в The New Stack она работала редактором сайта банковских технологий Bank Automation News. У нее есть… Подробнее от Лорейн Лоусон.