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/Критика…