Текст/Отсутствие Луны
С развитием глубокого обучения интеллект начал расширять возможности всех сфер жизни.Внешний интерфейс, как ближайшая связь с пользователями в Интернете, также надеется использовать возможности ИИ для значительного повышения эффективности, снижения затрат на рабочую силу и создания лучший опыт для пользователей. Поэтому фронтенд-аналитика также рассматривается как важное направление развития фронтенда в будущем.
Однако на этом пути развитию интеллекта мешали несколько проблем:
- У инженеров-алгоритмистов, знакомых с машинным обучением, нет физического смысла фронтенд-бизнеса, а также они не понимают данных, накапливаемых во фронтенде, и возможной ценности этих данных, поэтому им сложно участвовать в этом процессе.
- Традиционные фронтенд-инженеры не понимают языки, обычно используемые в машинном обучении, такие как python, c++ и т. д., а стоимость обучения и конвертации высока.
- Традиционные фронтенд-инженеры не понимают алгоритмов и принципов самого глубокого обучения, что затрудняет прямое использование некоторых существующих фреймворков машинного обучения (tensorflow, pytorch и т. д.) для обучения.
Чтобы решить эти проблемы и способствовать развитию внешнего интеллекта, мы разработали pipcook. pipcook использует удобную для интерфейса JS-среду, основанную на платформе Tensorflow.js, в качестве базовой возможности алгоритма и оборачивает соответствующие алгоритмы для интерфейсных бизнес-сценариев, чтобы фронтенд-инженеры могли быстро и легко использовать возможности машинного обучения.
В этой статье в основном будет обсуждаться, как pipcook сочетается с Tensorflow.js, с акцентом на то, как использовать базовую модель и вычислительную мощность tfjs-node для построения высокоуровневого конвейера машинного обучения.эта статья.
Зачем использовать Tensorflow.js в качестве основы алгоритма
Tensorflow.js — это фреймворк машинного обучения на основе js, выпущенный Google в 2018 году, и у Google также есть соответствующий код с открытым исходным кодом. pipcook использует tfjs-node в качестве базовой структуры для обработки данных и обучения модели, разрабатывает плагины pipcook поверх Tensorflow.js и собирает их в конвейеры. Мы используем Tensorflow.js по нескольким причинам:
- pipcook позиционируется как разработчик сервисного интерфейса, поэтому он в основном разработан на языке JS, поэтому мы предпочитаем использовать вычислительную среду JS, чтобы избежать потери производительности и рисков ошибок, вызванных соединением других языков.
- По сравнению с некоторыми другими средами машинного обучения JS, Tensorflow сам по себе очень популярен в C ++ и Python, Версия js также повторно использует базовые возможности C ++ и многих операторов и поддерживает большое количество сетевых слоев, функций активации, оптимизаторов и других компонентов. , и имеет хорошую производительность и поддержку графического процессора.
- Предоставляются официальные инструменты, такие как tfjs-converter, которые могут преобразовывать такие модели, как SavedModel или Keras, в модели JS, чтобы можно было повторно использовать многие зрелые модели Python.
- Экология JS с точки зрения математических операций еще не созрела: не существует такой библиотеки для научных вычислений, как numpy, и некоторым подобным библиотекам сложно беспрепятственно интегрироваться с другими вычислительными фреймворками. И сам tfjs обеспечивает инкапсуляцию тензора, что эквивалентно способности numpy arary, и может быть напрямую передано в модель tfjs для обучения, и производительность очень эффективна.
- tfjs предоставляет API набора данных, который может абстрагировать данные, инкапсулировать простой и эффективный интерфейс для данных и выполнять пакетную обработку данных. Метод потока данных Dataset API также можно эффективно комбинировать с конвейерным методом pipcook.
Обработка данных с помощью Tensorflow.js
Доступ и обработка больших объемов данных — ключевая проблема машинного обучения. Для некоторых традиционных сценариев с небольшим объемом данных мы можем считывать данные в память за один раз для работы, но для глубокого обучения данные часто выходят далеко за пределы памяти, поэтому нам нужно сегментировать из источника данных по мере необходимости Возможность доступа к данным. API набора данных, предоставляемый tfjs, завершает обработку этого сценария.
В стандартном конвейере pipcook мы будем использовать API набора данных для переноса и обработки данных. Как показано на рисунке, это типичный процесс потока данных.
- В начале исходные данные обучения будут поступать в конвейер через плагин сбора данных.Эти исходные данные могут быть локальными файлами или данными, хранящимися в облаке, и плагин будет считывать эти данные в конвейер.
- После того, как плагин сбора данных прочитает данные, он оценит формат данных и инкапсулирует их в соответствующий тензор.
- За доступ к этим данным отвечает плагин доступа к данным, оборачивая тензор в tf.Dataset, что удобно для пакетной обработки данных и обучения в дальнейшем
- В плагине обработки данных мы будем выполнять определенную обработку данных, включая операции перемешивания, увеличения и др. Эти операции будут использовать некоторые операторы, такие как карта, инкапсулированная набором данных, чтобы выполнять пакетную обработку данных в режиме реального времени. ручей
- Затем при загрузке модели данные считываются в модель партиями для обучения.
На этом этапе мы можем думать о наборе данных как о повторяемом наборе обучающих данных, подобно потоку в Node.js. Всякий раз, когда из набора данных запрашивается следующий элемент, внутренняя реализация обращается к нему по мере необходимости и выполняет предварительно заданные операции обработки данных. Эта абстракция упрощает обучение моделей на больших объемах данных. Наборы данных также облегчают совместное использование и организацию наборов данных в один и тот же набор абстракций, когда у нас есть несколько наборов данных.
Обучите модель
TensorFlow.js разделен на две группы низкоуровневых и высокоуровневых API. Низкоуровневый API является производным от deeplearn.js, включая оператор (OP), необходимый для построения модели, который отвечает за обработку некоторых низкоуровневых операций с данными, таких как линейная алгебра и т. д., чтобы помочь нам справиться с математическими задачами. операционная часть машинного обучения. Высокоуровневый API-интерфейс Layers используется для обертывания некоторых часто используемых алгоритмов машинного обучения, позволяя нам загружать обученные модели, такие как модели, изученные Keras, и т. д.
pipcook разрабатывает и запускает модели через плагины.Каждый плагин загрузки модели отвечает за загрузку конкретной модели.Большинство моделей реализовано на основе tfjs. В то же время tfjs-node также предоставляет такие функции, как ускорение GPU, что может повысить скорость обучения модели. Конечно, по экологическим и другим причинам на данном этапе стоимость реализации некоторых конкретных моделей в tfjs относительно высока.Для этой части проблемы pipcook также предоставляет такие методы, как мосты python, которые могут напрямую вызывать python в js. среда выполнения для обучения, подробности этой части моста мы подробно представим в последующих главах.
развертывать
Для конвейера машинного обучения промышленного уровня после завершения модели обучения должен быть способ развернуть вашу модель, чтобы модель могла служить реальному бизнесу.В настоящее время существуют в основном следующие решения для развертывания pipcook.Эти решения все делается через плагин развертывания модели
- Схема быстрой проверки: часто вам может понадобиться провести быстрые эксперименты с вашими данными и моделями, например, используя небольшие пакеты данных и небольшое количество эпох, для этого сценария нам не нужно развертывать модель на удаленном компьютере для проверки. . В связи с этим у pipcook есть встроенные плагины для локального развертывания.После завершения обучения на машине pipcook локально запустит сервер прогнозирования для предоставления услуг прогнозирования.
- Образ докера сервера: pipcook предоставляет официальный образ, этот официальный образ содержит необходимую среду для обучения и прогнозирования pipcook, вы можете напрямую развернуть этот образ на хосте развертывания или использовать k8s и другие кластерные решения для управления образами докеров.
- Подключение к облачному сервису: pipcook будет постепенно открывать службы развертывания машинного обучения различных поставщиков облачных услуг в последующей разработке.На самом деле, Gcloud уже предоставил комбинацию tfjs и automl на этом этапе, и pipcook будет постепенно поддерживать Alibaba Cloud , AWS и другие сервисы.
Сравнение с TFX (расширенный Tensorflow)
Нашей конечной целью является зрелый конвейер машинного обучения промышленного уровня, который может применять отличные модели в производственной среде. Фактически, чтобы удовлетворить этот спрос, Google официально выпустила TFX на основе многолетней практики и открыла исходный код этого проекта. Тогда у внешнего мира могут возникнуть некоторые вопросы, в чем разница между тем, что мы делаем, и TFX, на самом деле ядро pipcook не в том, чтобы заменить какой-либо другой фреймворк, тем более продукты, основанные на экосистеме python, потому что миссия pipcook состоит в том, чтобы продвигать передовую интеллектуальную разработку, поэтому технологический стек и методы производства, используемые pipcook, ориентированы на переднюю часть, например
- TFX использует метод DAG, потому что он включает в себя генерацию данных, статистический анализ данных, проверку данных, преобразование данных и другие операции, и эти операции можно свободно комбинировать.На самом деле, для многих сценариев внешнего интерфейса нам не нужен много сложных комбинированных операций.Поэтому pipcook использует конвейерный метод, который абстрагирует операции с данными в простые подключаемые модули в конвейерах, что может снизить стоимость использования интерфейсных инженеров.
- TFX использует Apache Airfow для планирования, в то время как pipcook использует для таких операций стек технологий внешнего интерфейса.Например, мы используем адаптивные фреймворки, такие как Rxjs, для ответа и подключения к различным плагинам, что удобно для внешнего интерфейса, чтобы понимать и вносить свой вклад. код
- В то же время разработанный нами API также основан на привычках JS, а стоимость обучения и начала работы низкая для внешнего интерфейса.
Основываясь на приведенных выше проектах, мы делаем все возможное, чтобы создать удобную среду машинного обучения для достижения наших ожиданий и целей.
перспективы на будущее
Прошел уже месяц с момента открытия исходников pipcook.За это время мы также получили отзывы от некоторых пользователей.В то же время по нашему плану у нас еще много дел.Мы также надеемся использовать мощность сообщества открытого исходного кода, чтобы постоянно улучшать pipcook.
- Сотрудничайте с различными поставщиками облачных услуг (Alibaba Cloud, AWS, Gcloud и т. д.), чтобы открыть pipcook для каждой ссылки на развертывание машинного обучения облачных служб.
- Экология идеальна, и установлена демонстрационная площадка pipcook, чтобы снизить начальные затраты пользователя.
- Улучшенная поддержка распределенного обучения
- Богатые плагины, совершенные модели и поддержка большего количества конвейеров
В будущем мы надеемся объединить силы внутренней команды аналитики переднего плана Alibaba и всего сообщества открытого исходного кода, чтобы постоянно улучшать интеллектуальную кампанию переднего плана, представленную pipcook и pipcook, чтобы интеллектуальные технологические решения переднего плана были универсальные и более конкурентоспособные Образцы и модели обеспечивают интеллектуальные услуги генерации кода с более высокой точностью и большей доступностью, эффективно улучшают эффективность передовых исследований и разработок, сокращают простую повторяющуюся работу, работают меньше сверхурочно и фокусируются на более сложной работе вместе!
Как внести свой вклад?
Если вы заинтересованы в нашем проекте и хотите внести свой вклад в развитие интеллектуального анализа, приглашаем вас посетить нашрепозиторий с открытым исходным кодом на гитхабе