«Какая польза от модели машинного обучения, если вы не развертываете ее в производственной среде» - Аноним

Вы проделали огромную работу по созданию этой потрясающей модели машинного обучения с точностью 99%, но большую часть времени ваша работа не выполняется без развертывания. В большинстве случаев наши модели будут интегрированы с существующими веб-приложениями, мобильными приложениями или другими системами. Как же нам добиться этого?

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

Начнем с того, как развернуть модели машинного обучения или интегрировать с другими системами?

1. Через A.P.I

Это включает в себя доступ к вашим моделям через интерфейс прикладного программирования (A.P.I).

Сначала я разверну модель глубокого обучения, созданную Rising Odegua, для классификации клеток малярии. Записную книжку можно найти здесь - https://github.com/risenW/Disease_classifier/blob/master/model_training_files_and_output/notebooks/malaria-cells-classification-dsn-poster.ipynb

Затем я также разверну простую модель классификатора обзоров фильмов из Нигерии, созданную Амину Исраэль. Записную книжку можно найти здесь - https://github.com/AminuIsrael/NLP-movie-review-model/blob/master/main.ipynb

Развертывание модели глубокого обучения через A.P.I

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

cnn_model.save('model_name.h5')

Вы можете переместить сохраненную модель в папку, доступную для вашего кода A.P.I. Я буду использовать Flask для развертывания, но можно использовать Django, Starlette или любые другие среды Python. Вот как выглядит моя структура папок -

Зайдя в нашу папку A.P.I (на базе Flask), первое, что вам нужно сделать, это установить требования. Я сохранил требования в файле requirements.txt. Вот как это выглядит

Вы можете установить эти требования, просто запустив это в своем терминале.

pip install -r requirements.txt

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

В строке 8 мы преобразовали изображение, полученное через конечную точку A.P.I, в массив. Вы заметите небольшую разницу в том, что бы вы сделали в обычном режиме, и это просто из-за хранилища данных Flask. Использование кода в строке 9 будет делать то же самое на платформе, такой как Django, или если вы загружаете с пути на своем компьютере.

В строках 10–15 мы получаем версию нашего изображения RBG, изменяем размер изображения до 100x100 и преобразуем изображение в массив numpy. Мы также масштабировали наше изображение до диапазона [0, 1] и возвращаем кортеж, содержащий True, если ошибок не происходит, и массив с нашим изображением в нем.

На изображении выше показана функция, выполняющая магию.

Строка 26 просто означает, что функция «classify_malaria_cells» будет выполняться при вызове конечной точки «classify».

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

Сохраненную модель можно загрузить с помощью

from keras.models import load_model
# OR
# from tensorflow.keras.models import load_model
malaria_model = load_model(MODEL_PATH)

В строках с 34 по 39 мы загрузили сохраненную модель, выполнили прогноз, чтобы определить класс изображения и получить оценку точности прогноза. В строке 40 результат модели сохраняется в python словаре, который будет отправлен обратно в виде ответа JSON в строке 60.

Мы заканчиваем наш A.P.I следующими словами:

if __name__ == “__main__”:
flask_app.run(port=8080, debug=False, threaded=False)

Благодаря этому мы успешно создали наш A.P.I, и он готов к развертыванию на любой облачной платформе.

Развертывание в Google Cloud

  1. Создайте учетную запись Google Cloud - https://cloud.google.com/
  2. Создайте новый проект Google Cloud Platform. Вы можете выполнить шаги здесь
  3. Перейдите в корень этого проекта фляги в своем терминале и запустите: gcloud app deploy

** Я также добавил Procfile для развертывания в Heroku, просто следуйте инструкциям здесь для развертывания.

Развертывание модели машинного обучения через A.P.I

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

import pickle
FILENAME = 'filename.pkl'
pickle.dump(trained_model, open(FILENAME, 'wb'))

or

import joblib
FILENAME = 'filename.joblib'
joblib.dump(trained_model, FILENAME)

Рекомендуется использовать joblib для сохранения моделей, а не pickle, поскольку он эффективен для объектов, которые несут большие массивы numpy внутри.

Как и в случае с моделью глубокого обучения, сохраните модель в папке, доступной для вашего кода Flask A.P.I. Вот как выглядит моя файловая структура

Наши требования здесь немного другие.

Вы можете установить эти требования, просто снова запустив это в своем терминале.

pip install -r requirements.txt

Затем мы импортируем необходимые модули и инициализируем некоторые переменные.

В приведенной выше вспомогательной функции мы разбили предложение на слова, удалили стоп-слова, загруженные из маринованного файла в строке 10. В строке 18 HashingVectorizer используется для токенизированных слов в матрицу. Результатом этого является матрица scipy.sparse .

Наш обзор фильма будет в текстовом формате. В строке 24 мы проверяем, отправлены ли необходимые данные формы, а затем присваиваем имя переменной данным формы в строке 25. В строке 28 мы открыли и загрузили наш классификатор обзора фильмов с помощью pickle (вы можете добиться того же с помощью joblib). В строках 29–36 мы передали векторизованный обзор фильмов в наш классификатор обзоров фильмов для предсказания, вычислили показатель вероятности предсказания и создали словарь Python, чтобы передать результаты нашего предсказания. Затем результат отправляется обратно в виде ответа JSON в строках 47.

Мы успешно создали классификацию обзора фильмов A.P.I, и она готова к развертыванию на любой облачной платформе. Я также добавил файл конфигурации для развертывания в Google Cloud и Heroku.

Это все о развертывании модели через A.P.I. Вы можете отправить коды, использованные в этой статье, здесь - https://github.com/Emmarex/AThousandWaysToDeployModels

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

Спасибо за чтение 👍