Одним из аспектов сценария является создание модели машинного обучения. Он должен быть пригоден для использования в реальном мире и доступен для потребителей и разработчиков.
Самый простой и популярный способ развертывания моделей машинного обучения — заключить их в REST API.
С популярной библиотекой под названием FastAPI именно это мы и сделаем сегодня.
Но что такое FastAPI?
Веб-фреймворк FastAPI Python был создан с нуля, чтобы использовать преимущества современных возможностей Python.
Для асинхронной параллельной связи с клиентами он соответствует стандарту ASGI, а также может использовать WSGI.
Конечные точки и маршруты могут использовать асинхронные функции. Кроме того, FastAPI позволяет продуктивно создавать веб-приложения в чистом, современном коде Python с подсказками.
Как следует из названия, основным вариантом использования FastAPI является создание конечных точек API.
Использование стандарта OpenAPI, который включает интерактивный пользовательский интерфейс Swagger, или предоставление данных словаря Python в виде JSON — два простых способа добиться этого. Однако FastAPI предназначен не только для API.
Его можно использовать для предоставления стандартных веб-страниц с использованием механизма шаблонов Jinja2 и для обслуживания приложений, использующих WebSockets, в дополнение ко всему остальному, что может делать веб-фреймворк.
В этой статье мы разработаем простую модель машинного обучения, а затем используем FastAPI для ее развертывания. Давайте начнем.
Установка FastAPI и создание первого API
Сначала необходимо установить библиотеку и сервер ASGI; подойдет либо Увуикорн, либо Гиперкорн. Это работает, введя следующую команду в Терминал:
Теперь, когда API создан, вы можете использовать предпочитаемый вами редактор кода и просматривать его. Для начала создайте скрипт Python с именем ml_model.py. Вы можете дать своему файлу другое имя, но ради этого поста я буду называть этот файл как ml_model.py.
Чтобы создать простой API с двумя конечными точками, необходимо выполнить следующие задачи:
- Импортируйте библиотеки FastAPI и Uvicorn.
- Настройте экземпляр класса FastAPI.
- Объявите первый маршрут, который на странице индекса создает простой объект JSON.
- Объявите второй маршрут, который предоставляет простой объект JSON с настроенным сообщением. Параметр name берется прямо из URL-адреса (например, https://127.0.0.1:8000/Jay).
- Используйте Uvicorn для запуска API.
Реализация этих пяти этапов показана в следующем фрагменте кода, т.е. создание простого API
Все сделано! Давайте немедленно запустим наш API. Для этого откройте окно терминала рядом с файлом ml model.py. Далее введите следующее:
клавишу Ввод. Прежде чем двигаться дальше, давайте развенчаем это утверждение. Первое приложение использует только имя файла Python без расширения. Имя второго приложения должно совпадать с именем вашего экземпляра FastAPI.
Используя -reload, вы сообщаете API, что хотите, чтобы он автоматически перезагружался при сохранении файла, а не начинал с нуля.
Теперь запустите браузер и перейдите по адресу https://127.0.0.1:8000; результат должен выглядеть следующим образом:
Теперь вы понимаете, как создать простой API с помощью FastAPI.
Построение и обучение модели машинного обучения
Не собирая и не анализируя какие-либо данные, мы просто обучим простую модель. Они не связаны с развертыванием моделей и не являются существенными для рассматриваемой темы.
Модель, основанную на наборе данных Iris, можно установить с помощью того же нейронной сети способ установки.
И мы сделаем именно это: загрузите Набор данных Iris и обучить модель. Это будет непросто. Для начала создайте файл с именем jaysmlmodel.py.
В нем вы будете делать следующее:
- Импорт — вам понадобятся pandas, scikit-RandomForecastClassifier, BaseModel от pydantic (вы узнаете почему на следующем шаге) и joblib для хранения и загрузки моделей.
- Объявите класс IrisSpecies, который наследуется от базовой модели. Этот класс содержит только поля, необходимые для прогнозирования одного вида цветов (подробнее об этом в следующем разделе).
- Создайте класс. IrisModel — это инструмент для обучения и прогнозирования моделей.
- Объявите метод с именем _train model в IrisModel. Он используется для обучения моделей с использованием метода Random Forests. Обученная модель возвращается процедурой.
- Объявите функцию прогнозируемого вида внутри IrisModel. Он используется для прогнозирования на основе 4 входных факторов (измерения цветов). Алгоритм возвращает как прогноз (виды цветов), так и вероятность прогноза.
- Измените конструктор в IrisModel, чтобы он загружал набор данных Iris и обучал модель, если она отсутствует в папке. Это решает проблему многократного обучения новых моделей. Библиотека joblib используется для загрузки и сохранения модели.
Вот весь код:
Я надеюсь, что приведенный выше список и комментарии облегчили понимание, хотя это был значительный объем кода для создания. Теперь, когда эта модель разработана, давайте опубликуем ее возможности прогнозирования в течение REST API.
Создание полноценного REST API
Вернитесь к файлу ml_model.py и очистите все данные. Шаблон будет в основном таким же, как и раньше, но мы должны начать с чистого файла.
На этот раз вы определите только одну конечную точку, которая используется для определения типа цветка. Эта конечная точка вызывает IrisModel.predict spec(), объявленную в предыдущем разделе, для выполнения прогноза.
Тип запроса — еще одно большое изменение. Чтобы передавать параметры в JSON, а не в URL, рекомендуется использовать POST при использовании обучение с помощью машины API-интерфейсы.
Приведенное выше предложение может показаться тарабарщиной, если вы ученый данных, но это нормально. Для разработки и развертывания моделей не обязательно быть экспертом по HTTP-запросам и REST API.
Задачи для ml model.py немногочисленны и просты:
- Вы должны импортировать из ранее созданного файла jaymlmodel.py следующее: uvicorn, FastAPI, IrisModel и IrisSpecies.
- Создайте экземпляры FastAPI и IrisModel.
- Объявите функцию по адресу https://127.0.0.1:8000/predict, чтобы делать прогнозы.
- Метод IrisModel.predict видов() получает объект типа IrisSpecies, преобразовывает его в словарь, а затем возвращает. Возвращает ожидаемый класс и прогнозируемую вероятность.
- Используйте uvicorn для выполнения API.
Еще раз, вот весь код файла вместе с комментариями:
Это все, что вам нужно сделать. На следующем этапе давайте проверим API.
Тестирование API
Повторно введите следующую строку в Терминал, чтобы выполнить API: uvicorn ml_model:app –reload
Вот как выглядит страница документации:
Вот и все на сегодня. В части после этого давайте завершим.
Заключение
Сегодня вы узнали, что такое FastAPI и как его использовать, используя как простой пример API, так и простой пример машинного обучения. Вы также узнали, как создавать и просматривать документацию по API, а также как ее тестировать.
Это много для одного произведения, поэтому не удивляйтесь, если для правильного понимания потребуется несколько прочтений.
Удачного кодирования.
Оставьте комментарий