В этой статье мы рассмотрим процесс обучения модели машинного обучения и развертывания ее в виде RESTful API с использованием FastAPI, современной, быстрой (высокопроизводительной) веб-инфраструктуры для создания API с помощью Python 3.6+ на основе стандартного Python. введите подсказки.
Предпосылки
Прежде чем мы начнем, давайте удостоверимся, что Anaconda установлена в нашей системе. Выполните следующие действия, чтобы установить Anaconda:
- Посетите веб-сайт Anaconda по адресу https://www.anaconda.com/products/individual.
- Загрузите установщик Anaconda для своей операционной системы (Windows, macOS или Linux).
- Запустите программу установки и следуйте инструкциям на экране, чтобы завершить установку.
После установки Anaconda мы можем приступить к запуску JupyterLab.
Запуск JupyterLab
JupyterLab — это мощная веб-среда разработки, которая позволяет нам создавать и выполнять блокноты Jupyter. Чтобы запустить JupyterLab, выполните следующие действия:
- Откройте терминал или командную строку.
- Введите следующую команду и нажмите Enter:
jupyter lab
3. JupyterLab запустится в веб-браузере по умолчанию, предоставив вам удобный интерфейс для работы с блокнотами.
Запустив JupyterLab, давайте погрузимся в процесс обучения модели машинного обучения и ее развертывания в виде RESTful API с использованием FastAPI.
Обучение модели
Сначала мы обучим простую модель на наборе данных Iris. Мы будем использовать RandomForestClassifier из scikit-learn для простоты.
В JupyterLab создайте новый файл Notebook (.ipynb) и введите следующий код:
# Import necessary libraries import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score import pickle # Step 1: Get tabular data # For this example, we'll use the Iris dataset from UCI Machine Learning Repository url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data" data = pd.read_csv(url, names=['sepal_length','sepal_width','petal_length','petal_width','class']) # Step 2: Set the target X = data.iloc[:, :-1] # Features y = data.iloc[:, -1] # Target # Step 3: Train and Test model X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.9, random_state=42) # Using RandomForestClassifier for the sake of simplicity model = RandomForestClassifier() model.fit(X_train, y_train) # Test the model predictions = model.predict(X_test) print("Model Accuracy: ", accuracy_score(y_test, predictions)) # Step 4: Save the model pickle.dump(model, open('model.pkl', 'wb'))
Этот код обучает модель и сохраняет ее в файле pickle.
Создание приложения FastAPI
Далее мы создадим приложение FastAPI, которое будет служить интерфейсом для нашей модели машинного обучения. Вот код:
from fastapi import FastAPI from pydantic import BaseModel import pickle model = pickle.load(open('model.pkl', 'rb')) app = FastAPI() class Iris(BaseModel): sepal_length: float sepal_width: float petal_length: float petal_width: float @app.post('/api') def predict(iris: Iris): data = [iris.sepal_length, iris.sepal_width, iris.petal_length, iris.petal_width] prediction = model.predict([data]) return {'prediction': prediction[0]}
Этот код создает приложение FastAPI с одной конечной точкой /api
. Эта конечная точка ожидает запрос POST с телом JSON, содержащим измерения радужной оболочки. Он использует эти измерения для прогнозирования класса радужной оболочки с помощью обученной модели.
Запуск сервера
Вы можете запустить сервер FastAPI с помощью следующей команды:
uvicorn app:app --reload --port 5555
Эта команда запускает сервер на порту 5555
. Вы можете заменить 5555
любым допустимым номером порта, который хотите использовать.
После выполнения этой команды ваша модель будет доступна как RESTful API по адресу localhost:5555/api
.
FastAPI также включает автоматическую генерацию документов API. Чтобы получить доступ к документации и протестировать API через пользовательский интерфейс (UI), вы можете просто запустить URL-адрес с «/docs».
Например, если вы запускаете FastAPI локально на своем компьютере с портом по умолчанию 5555, вы можете получить доступ к документации API, посетив http://localhost:5555/docs в своем веб-браузере.
Это отобразит автоматически сгенерированную документацию, что позволит вам изучить доступные конечные точки, модели запросов и ответов и даже сделать тестовые запросы непосредственно из пользовательского интерфейса.
Заключение
FastAPI — это мощный инструмент для развертывания моделей машинного обучения в виде RESTful API. Он прост в использовании, обладает высокой производительностью и поставляется с автоматической интерактивной документацией по API. С помощью FastAPI вы можете быстро и легко перевести свои модели машинного обучения от обучения к развертыванию.