В этой статье мы рассмотрим процесс обучения модели машинного обучения и развертывания ее в виде RESTful API с использованием FastAPI, современной, быстрой (высокопроизводительной) веб-инфраструктуры для создания API с помощью Python 3.6+ на основе стандартного Python. введите подсказки.

Предпосылки

Прежде чем мы начнем, давайте удостоверимся, что Anaconda установлена ​​в нашей системе. Выполните следующие действия, чтобы установить Anaconda:

  1. Посетите веб-сайт Anaconda по адресу https://www.anaconda.com/products/individual.
  2. Загрузите установщик Anaconda для своей операционной системы (Windows, macOS или Linux).
  3. Запустите программу установки и следуйте инструкциям на экране, чтобы завершить установку.

После установки Anaconda мы можем приступить к запуску JupyterLab.

Запуск JupyterLab

JupyterLab — это мощная веб-среда разработки, которая позволяет нам создавать и выполнять блокноты Jupyter. Чтобы запустить JupyterLab, выполните следующие действия:

  1. Откройте терминал или командную строку.
  2. Введите следующую команду и нажмите 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 вы можете быстро и легко перевести свои модели машинного обучения от обучения к развертыванию.