20 секунд на обучение и развертывание модели машинного обучения? Расскажите о Pipcook 2.0

открытый источник алгоритм внешний интерфейс
20 секунд на обучение и развертывание модели машинного обучения? Расскажите о Pipcook 2.0

Текст / Департамент Али ТаоF(x) Team - Муму

Pipcook1.0 позволяет веб-разработчикам начать путь машинного обучения с относительно низким порогом, открывая и ускоряя эру интерфейсного интеллекта. В процессе практики мы также обнаружили некоторые проблемы.Среди них, наиболее часто сообщаемая пользователями проблема заключается в том, что установка Pipcook сложна и вероятность успеха относительно низкая.Установка часто завершается сбоем из-за проблем с сетью.Даже если сеть гладкая, время установки займет не менее 3 минут, а во-вторых, Pipcook установит плагин при первом запуске обучения, что также отнимет у пользователей много времени.


В ответ на проблемы 1.0 мы сделали много рефакторинга и оптимизации в 2.0.Давайте посмотрим на скорость установки Pipcook 2.0:


Уменьшено с минут на 1,0 до менее чем 20 секунд! больше не нужно проходитьpipcook initкоманда для установки демона. Из-за разделения тяжелой среды машинного обучения размер пакета эффективно контролируется, а вероятность успешной установки близка к 100%.

Давайте еще раз взглянем на время от обучения модели до запуска сервиса для задач классификации текста:


Да, от начала обучения модели до запуска сервиса классификации текстов проходит всего 20 секунд!

Далее давайте сделаем это сами и посмотрим, как использовать Pipcook 2.0 для быстрого обучения модели и развертывания ее в сети.

Введение в конвейеры

Прежде чем мы начнем, нам нужно сначала понять Pipeline. В Pipcook мы используем Pipeline для представления рабочего процесса модели и в настоящее время реализуем 4 Pipeline, соответственно:

Имя конвейера тип задачи Ссылка CDN файла конвейера
image classification MobileNet Классификация изображений image-classification-mobilenet.json
image classification ResNet Классификация изображений image-classification-resnet.json
text classification Bayes Категоризация текста text-classification-bayes.json
object detection YOLO Обнаружение цели object-detection-yolo.json

что продемонстрировано в начале статьиtext classification BayesМодель. ​

Так как же выглядит этот Pipeline? Pipeline использует JSON для описания сбора образцов, потока данных, этапов обучения/прогнозирования модели и параметров, связанных с каждым этапом.

{
  "specVersion": "2.0",
  "type": "ImageClassification",
  "datasource": "https://cdn.jsdelivr.net/gh/imgcook/pipcook-script@5ec4cdf/scripts/image-classification/build/datasource.js?url=http://ai-sample.oss-cn-hangzhou.aliyuncs.com/image_classification/datasets/imageclass-test.zip",
  "dataflow": [
    "https://cdn.jsdelivr.net/gh/imgcook/pipcook-script@5ec4cdf/scripts/image-classification/build/dataflow.js?size=224&size=224"
  ],
  "model": "https://cdn.jsdelivr.net/gh/imgcook/pipcook-script@5ec4cdf/scripts/image-classification/build/model.js",
  "artifacts": [],
  "options": {
    "framework": "tfjs@3.8",
    "train": {
      "epochs": 10
    }
  }
}

Как показано в приведенном выше JSON, конвейер состоит из версии, типа конвейера иdataSource,dataflowиmodelЭти три типа скриптов и сборка плагиновartifacts, параметр Конвейерoptionsсочинение. В настоящее время поддерживаемые типы конвейеров включаютImageClassification(классификация изображений),TextClassification(категоризация текста),ObjectDetection(обнаружение цели), а поддержка других типов задач будет добавляться в последующих версиях Pipcook. Каждый скрипт передает параметры через запрос URI, и параметры модельных скриптов также могут передаваться черезoptions.trainопределение.artifactsОпределен набор подключаемых модулей сборки, каждый подключаемый модуль сборки будет вызываться по очереди после обучения, чтобы выходную модель можно было преобразовать, упаковать, развернуть и т. д.optionsСодержит определения структуры и определения параметров обучения.

В этом примере Pipeline тип задачи —ImageClassification, то есть классификация изображений. Мы также определяем сценарии источников данных, сценарии обработки данных и сценарии моделей, необходимые для классификации изображений.Подготовленные нами источники данных хранятся в OSS (Love-sample.OSS-talent-Hangzhou.Alibaba Cloud Killing.com/image_class…), выборка содержит две категории, а именноavatarиblurBackground, вы также можете заменить его пользовательским набором данных для обучения собственной модели классификации. Платформа, определяющая используемые зависимости работы конвейера, — tfjs 3.8, а параметры обучения — 10 эпох.

Далее мы можем запустить его через Pipcook.

Запустить конвейер

Установить

Для установки и запуска Pipcook необходимо выполнить несколько условий:

  • Операционная система: MacOS или Linux (Windows имеет базовую поддержку, но не полностью протестирована)
  • Node.js v12.17.0 или выше v14.0.0 (v13 не поддерживается)

Затем выполните команду:

$ npm install @pipcook/cli -g

Дождитесь завершения установки.

тренироваться

Мы сохраняем файл Pipeline какimage-classification.json, затем выполните:

$ pipcook train ./image-classification.json -o my-pipcook
ℹ preparing framework
████████████████████████████████████████ 100% 133 MB/133 MB
ℹ preparing scripts
████████████████████████████████████████ 100% 1.12 MB/231 kB
████████████████████████████████████████ 100% 11.9 kB/3.29 kB
████████████████████████████████████████ 100% 123 kB/23.2 kB
ℹ preparing artifact plugins
ℹ initializing framework packages
ℹ running data source script
downloading dataset ...
unzip and collecting data...
ℹ running data flow script
ℹ running model script
Platform node has already been set. Overwriting the platform with [object Object].
2021-08-29 23:32:08.647853: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
loading model ...
Epoch 0/10 start
Iteration 0/20 result --- loss: 0.8201805353164673 accuracy: 0.5
Iteration 2/20 result --- loss: 0.03593956679105759 accuracy: 1
.....
Epoch 9/10 start
Iteration 0/20 result --- loss: 1.1920930376163597e-7 accuracy: 1
Iteration 2/20 result --- loss: 2.0116573296036222e-7 accuracy: 1
Iteration 4/20 result --- loss: 2.5331991082566674e-7 accuracy: 1
Iteration 6/20 result --- loss: 2.123416322774574e-7 accuracy: 1
Iteration 8/20 result --- loss: 1.937151523634384e-7 accuracy: 1
Iteration 10/20 result --- loss: 0.000002644990900080302 accuracy: 1
Iteration 12/20 result --- loss: 0.000003799833848461276 accuracy: 1
Iteration 14/20 result --- loss: 2.8312223321336205e-7 accuracy: 1
Iteration 16/20 result --- loss: 1.49011640360186e-7 accuracy: 1
Iteration 18/20 result --- loss: 5.438936341306544e-7 accuracy: 1
ℹ pipeline finished, the model has been saved at /Users/pipcook-playground/my-pipcook/model

У нас также есть этот пример в репозитории, вы также можете запустить его прямо из URL:

$ pipcook train https://cdn.jsdelivr.net/gh/alibaba/pipcook@main/example/pipelines/image-classification-mobilenet.json -o my-pipcook

параметр-oозначает, что наше учебное рабочее пространство определено в./my-pipcookсередина.

Из лога мы видим, что на этапе подготовки Pipcook скачает некоторые необходимые зависимости, а именно:

  • Платформа: Платформа относится к набору сжатых пакетов, каждый из которых предоставляет зависимости, необходимые для работы конвейера для различных операционных сред, таких как операционные системы, версии узлов и т. д. Наша операционная среда — MacOS, узел 12.22, опираясь на фреймворк tfjs 3.8, Pipcook автоматически выберет соответствующий файл фреймворка в соответствии с текущей средой. Этот файл фреймворка поддерживается Pipcook, а изображение по умолчанию — внутреннее OSS Alibaba Cloud, поэтому учащимся с плохой сетью не нужно беспокоиться о загрузке. в то же времяus-westКопия также сохраняется, и иностранные студенты также могут легко ее скачать. Файл для каждого URL-адреса кадра будет загружен только один раз, а затем извлечен из кэша при повторном использовании.
  • Скрипты: модельные задачи Pipcook состоят из набора связанных скриптов, в этом примере скрипты хранятся вgithubВышеупомянутое ускорение CDN можно выполнить через jsdelivr, а скрипты могут импортировать пакеты в фреймворк для обработки данных или выполнения обучения модели.
  • Артефакты: создавайте плагины для обработки обученной модели, например загрузки OSS и других операций после обучения. Поскольку эти плагины сами по себе относительно легкие, и каждый плагин будет кэшироваться после установки, они разработаны как пакеты npm и устанавливаются через клиент npm. В этом примере не настроен плагин сборки, поэтому он игнорируется.

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

Мы определяем параметр обучения Pipeline равным 10 эпохам, поэтому обучение модели останавливается после 10 эпох.

На данный момент наш обучающий продукт сохранен в рабочей области../my-pipcookсерединаmodelвнутри папки.

my-pipcook
    ├── cache
    ├── data
    ├── framework -> /Users/pipcook-playground/.pipcook/framework/c4903fcee957e1dbead6cc61e52bb599
    ├── image-classification.json
    ├── model
    └── scripts

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

предсказывать

Далее мы подготавливаем изображение аватара.


пройти черезpipcook predictМодель ввода команд выполняет прогнозирование категорий, а двумя параметрами являются рабочее пространство и адрес изображения, которые необходимо прогнозировать: ​

$ pipcook predict ./my-pipcook -s ./avatar.jpg
ℹ preparing framework
ℹ preparing scripts
ℹ preparing artifact plugins
ℹ initializing framework packages
ℹ prepare data source
ℹ running data flow script
ℹ running model script
Platform node has already been set. Overwriting the platform with [object Object].
2021-08-30 00:08:28.070916: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
predict result: [{"id":0,"category":"avatar","score":0.9999955892562866}]
✔ Origin result:[{"id":0,"category":"avatar","score":0.9999955892562866}]

Прогнозирование аналогично обучению, также подготавливаются необходимые зависимости, такие как Framework, Scripts и Artifacts, которые игнорируются, если зависимости уже существуют. Таким образом, даже если мы переместим модель на другие устройства, ее можно будет запустить напрямую, и Pipcook автоматически подготовит рабочую среду. Из выходного журнала модель предсказывает, что тип этого изображенияavatar, с доверительной вероятностью 0,999.

развертывать

Команда для развертывания модели машинного обучения через Pipcook:pipcook serve <workspace-path>.

$ pipcook serve ./my-pipcook
ℹ preparing framework
ℹ preparing scripts
ℹ preparing artifact plugins
ℹ initializing framework packages
Pipcook has served at: http://localhost:9091

Порт по умолчанию — 9091, к которому также можно получить доступ через-pспецификация параметра. Затем открываем его через браузерhttp://localhost:9091Вы можете получить доступ к интерактивному интерфейсу задачи классификации изображений для тестирования.


Выберите изображение и нажмите кнопку Predict:


Конечно, мы также можем напрямую получить доступ к интерфейсу предсказания:

$ curl http://localhost:9091/predict -F "image=@/Users/pipcook-playground/avatar.jpg" -v
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 9091 (#0)
> POST /predict HTTP/1.1
> Host: localhost:9091
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 60452
> Content-Type: multipart/form-data; boundary=------------------------6917c53e808d414f
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: application/json; charset=utf-8
< Content-Length: 64
< ETag: W/"40-kCOJxkKqWqcndfPNbdrICzIiW+A"
< Date: Mon, 30 Aug 2021 03:59:49 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
<
* Connection #0 to host localhost left intact
{"success":true,"data":[{"id":0,"category":"avatar","score":1}]}* Closing connection 0

Pipcook предоставит различные интерактивные интерфейсы и интерфейсы в зависимости от типа конвейера.

Эпилог

Знакомство с Pipcook 2.0 завершено. Добро пожаловать заинтересованным друзьям.star,Добро пожаловатьissueИ PR, вы также можете присоединиться к групповому обсуждению DingTalk.


Адрес склада Pipcook:GitHub.com/alibaba/criticism…Адрес хранилища скриптов:GitHub.com/IMG cook/Критика…



Front-end-F-x-Team Amoy открывает WeiboЛа! (Отображается после входа в Weibo)
Помимо статей, вас ждет разблокировка еще командного контента ?