«Какая польза от модели машинного обучения, если вы не развертываете ее в производственной среде» - Аноним
Вы проделали огромную работу по созданию этой потрясающей модели машинного обучения с точностью 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
- Создайте учетную запись Google Cloud - https://cloud.google.com/
- Создайте новый проект Google Cloud Platform. Вы можете выполнить шаги здесь
- Перейдите в корень этого проекта фляги в своем терминале и запустите:
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.
Спасибо за чтение 👍