Почему фронтенд должен запускать модели искусственного интеллекта локально с помощью ONNX

По мнению консультанта Angular и Full-Stack разработчика Сону Капура, фронтенд-разработчикам необходимо изменить парадигму создания приложений с использованием моделей искусственного интеллекта.

До сих пор ИИ сводился к вызову API к модели «черного ящика», работающей в облаке, рассказал Капур The New Stack. Но так не должно быть, добавил он.

Капур предсказал, что следующей эволюцией моделей искусственного интеллекта и машинного обучения (ML) станет использование моделей в качестве локального актива в конвейере сборки внешнего интерфейса. Один из способов сделать это — загрузить модели и запустить их на устройстве.

«Большая часть моего опыта связана с тем, чтобы сделать эти модели пригодными для использования в реальных продуктах, а затем подключить их, особенно к интерфейсу и информационным панелям, на чем я специализируюсь, чтобы они действительно приносили пользу пользователям, а не просто оставались в блокнотах», — рассказал Капур The New Stack.

По его словам, перемещение машинного обучения во внешний интерфейс создаст значительные преимущества с точки зрения производительности и конфиденциальности данных для пользователей.

По его словам, сейчас машинное обучение кажется чем-то экзотическим, потому что это «черный ящик». Но переход на работу в браузере меняет ситуацию, сказал он.

«Для меня это больше похоже на инженерное дело», — сказал он. «Это больше соответствует тому, что я делаю, и тому, как я подхожу к делу. [rather] чем иметь черный ящик, работающий где-то в облаке, который делает все эти вещи сам по себе».

Преимущества локального запуска

Одной из причин, по которой разработчики могут захотеть запустить модель локально, является конфиденциальность. Облачные модели требуют отправки конфиденциальных данных по проводам, что особенно проблематично в сфере финансовых технологий или здравоохранения, говорит Капур, ранее работавший старшим консультантом по Angular в финансовой компании CitiGroup, где он разработал приложение Electron, которое обрабатывало миллионы записей о финансовых сделках за считанные секунды.

Он отметил, что когда модель загружается и запускается локально через ONNX, конфиденциальные данные никогда не покидают устройство.

«Огромная проблема с моделями — это конфиденциальность, потому что вы отправляете данные по проводу на серверную часть, чтобы модель что-то сделала для вас», — сказал Капур. «Иногда вы можете не захотеть этого делать из соображений конфиденциальности, у вас есть конфиденциальные данные и т. д. Если у вас есть модель, загруженная локально, то вам не придется этого делать».

ONNX позволяет разработчикам запускать приложение с помощью загруженной модели, что может повысить конфиденциальность.

По его словам, запуск моделей локально также обеспечивает лучший оффлайновый UX и мгновенную обратную связь. Если вызов API завершается неудачей, приложение все равно может предоставить эвристический ответ или результат кэширования, а не просто завершить работу со сбоем. По его словам, даже частичные результаты могут сделать пользовательский опыт более интеллектуальным и интерактивным.

Локальные модели позволяют разработчикам создавать приложения, которые могут внедрять рассуждения и автоматизацию — а не только прогнозы — непосредственно в рабочие процессы пользователей.
– Сону Капур, консультант Angular

По его словам, локальные модели позволяют разработчикам создавать приложения, которые могут внедрять рассуждения и автоматизацию — а не только прогнозы — непосредственно в рабочие процессы пользователей. Это открывает возможность приложениям быть более адаптивными и контекстно-зависимыми.

Но это также не выбор «или/или». Разработчики могут сочетать и балансировать локальную стратегию с облачным подходом.

Например, разработчики могут запускать меньшую модель локально для решения задач с низкой задержкой, таких как автозаполнение или обнаружение намерений, и вызывать облако только для задач, требующих серьезных рассуждений, сказал он.

Также важно, чтобы разработчики открыто рассказывали пользователям о том, что работает локально, а что — в облаке, — сказал он. Это означает, что приложение должно четко показывать, когда вывод происходит локально, а не удаленно, чтобы пользователи могли видеть любые данные, которые покидают их устройства. По словам Капура, даже небольшой UX-сигнал, такой как всплывающая подсказка или метка конфиденциальности, может помочь укрепить доверие при смешивании локальных и облачных моделей.

Перенос моделей в браузер

По словам Капура, один из способов перенести модели в браузер — через Open Neural Network Exchange (ONNX) Runtime Web, версию ONNX Runtime, разработанную специально для запуска моделей машинного обучения в браузере с использованием JavaScript, сказал Капур.

«Вы можете обучить модель с помощью одного инструмента, скажем, Pytorch или даже TensorFlow, а затем сохранить ее в формате ONNX; и это позволит вам запускать ее где угодно», — сказал Капур. «Это делает его действительно отличным для развертывания, особенно если вы хотите запустить модель вне Python, потому что многие из этих моделей требуют, чтобы вы знали Python или [that] вы запускаете их внутри Python».

Он описал ONNX как PDF-файл для машинного обучения — универсальный формат, который позволяет моделям, обученным в таких средах, как PyTorch или TensorFlow, работать где угодно.

«Команды, изучающие TensorFlow.js или ONNX Runtime Web, быстро обнаруживают, что время загрузки модели и блокировка потоков ведут себя так же, как и любой другой бюджет производительности», — сказал Капур. «На самом деле, с помощью ONNX вы можете загрузить модель, преобразовать ее и запустить где угодно, например, с помощью JavaScript или Node.js».

ONNX похож на .pdf для машинного обучения — универсальный формат, который позволяет моделям, обученным в таких средах, как PyTorch или TensorFlow, работать где угодно.
— Капур

Фактически, недавно он создал приложение для презентации НАСА, которое интегрировало модель прогнозирования солнечных вспышек — в частности, модель Авроры НАСА — с использованием ONNX, чтобы сделать ее пригодной для использования на панели управления реальным продуктом во внешнем интерфейсе.

«Я интегрировал это с бесплатной моделью НАСА Aurora, а затем работал с моделями TensorFlow и Pytorch через API и использовал что-то вроде BERT. [an AI model that excels at text] или КЛИП [a neural network that handles connecting text and images] для встраивания изображений и текста», — сказал он. «Большая часть моего опыта связана с тем, как сделать эти модели пригодными для использования в реальных продуктах, а затем подключить их, особенно к интерфейсу и информационным панелям, на чем я специализируюсь, чтобы они действительно приносили пользу пользователям, а не просто оставались в блокнотах».

Он указал на способность Angular эффективно обрабатывать большие объемы данных как на ключ к успеху глобальной торговой платформы стоимостью 4 миллиарда долларов, которая включала данные в реальном времени и расширенную визуализацию.

«Если уже произойдет задержка в пару секунд, это будет стоить им больших денег», — сказал он. «Вот тут-то и приходят на помощь сигналы Angular. Когда вы получаете такие объемные данные, вам нужно, чтобы они были действительно быстрыми и действительно производительными».

Приложение было развернуто локально (предварительно скомпилировано и упаковано) в системе каждого трейдера, что исключило потенциальные задержки в сети.

Преимущество Angular

Успех приложения стал свидетельством способности Angular эффективно обрабатывать большие объемы данных, добавил Капур.

С фреймворком это не всегда было возможно. По его словам, ранее Angular полагался на Zone.js, который требовал повторной проверки всего дерева DOM даже на небольшие изменения данных. Это было неэффективно, особенно при тяжелых вычислениях.

Но принятие Angular Signals в версии 16, выпущенной в мае 2023 года, позволило разработчикам отказаться от Zone.js. По словам Капура, возможность отказаться обеспечивала лучшую изоляцию и позволяла выполнять сложные логические выводы или подготовку данных вне основного потока.

«Можно сказать, что Signals предоставили нам правильную модель изоляции, и с помощью Signals вы можете отказаться от Zone.js, и теперь не нужно перепроверять все дерево DOM», — сказал он. «Таким образом, вы можете выполнить действительно сложный логический вывод или подготовку данных в основном потоке и позволить пользовательскому интерфейсу реагировать только тогда, когда результаты будут готовы».

Реактивное обнаружение изменений Angular и экосистема Signals обеспечивают прочную основу для изоляции ресурсоемких операций от рендеринга пользовательского интерфейса, добавил он.

Следующая эволюция фреймворков

Капур сказал, что следующая эволюция фреймворков будет вращаться вокруг искусственного интеллекта, в частности, создания конвейеров, в которых модели искусственного интеллекта будут рассматриваться как изображения и шрифты. По его словам, они будут объединены и отложенно загружаться вместе с другими активами кода с предсказуемыми затратами на производительность.

Он уже видит признаки этого на сервере MCP Angular. Он работает локально и предлагает контекст проекта. Это также помогает разработчикам создавать компоненты с использованием лучших практик.

Angular также недавно выпустил с открытым исходным кодом Web Codegen Scorer, который позволяет создателям фреймворка настраивать среду, чтобы гарантировать, что модели следуют лучшим практикам для конкретной фреймворка. Angular и Solid уже поддерживаются этим инструментом.

«Как [AI] модели смещаются во внешний интерфейс, разработчикам нужны четкие границы для обеспечения конфиденциальности, производительности и ответственного поведения».
— Капур

Но, по словам Капура, также должны быть установлены ограждения.

«Поскольку модели переходят на внешний интерфейс, разработчикам нужны четкие границы для обеспечения конфиденциальности, производительности и ответственного поведения», — сказал он, рекомендуя следующее:

  • Данные локального вывода никогда не должны сохраняться или просачиваться через хранилище или журналы;
  • Модели должны контролироваться версиями и проверяться по контрольной сумме;
  • Интенсивность вычислений должна быть ограничена, чтобы защитить UX и срок службы батареи; и
  • Приложение должно четко сообщать, когда модель принимает самостоятельные решения, а не предлагает предложения.

В корпоративных сборках эти проверки можно даже включить в конвейер CI/CD. Так, например, приложения должны анализировать метаданные модели или проверять результаты вывода перед их отображением в пользовательском интерфейсе, сказал он.

По словам Капура, настоящий сдвиг заключается не только в использовании моделей на местном уровне. Они относятся к ним как к первоклассным участникам фронтенда: имеют версии, тестируются, доступны для наблюдения и связаны теми же барьерами, что и производственный код.

ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Лорейн Лоусон — опытный репортер в области технологий, которая в течение 25 лет освещала технологические вопросы, от интеграции данных до безопасности. До прихода в The New Stack она работала редактором сайта банковских технологий Bank Automation News. У нее есть… Подробнее от Лорейн Лоусон.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *