Введение:

Развертывание моделей машинного обучения — важный шаг на пути внедрения ваших моделей в реальные приложения. Однако процесс развертывания и интеграции моделей с пользовательскими интерфейсами может быть сложным и занимать много времени. Gradio, библиотека Python, упрощает этот процесс, предоставляя удобный интерфейс для развертывания моделей машинного обучения.
В этой статье я проведу вас через пошаговый процесс развертывания модели машинного обучения с помощью Gradio. .

  • Шаг 1: Создайте папку проекта

Для начала вам нужно зайти в проводник и создать новую папку для вашего проекта, назовем ее gradio_app. Затем вы можете создать файл requirements.txt, который будет содержать все пакеты и библиотеки, которые вам нужны в вашей виртуальной среде для запуска вашего приложения, затем вы можете создать файл readme.md, чтобы поместить несколько описаний о вашей работе. затем файл .gitignore с именем вашей виртуальной среды внутри, чтобы папка среды игнорировалась git при создании репозитория для проекта. Вы также можете создать папку src, в которой будут храниться файл app.py и файл компонента модели машинного обучения или другие файлы, которые вы могли экспортировать из своей записной книжки. Когда ваша папка будет готова, вы можете открыть ее в любом текстовом редакторе по вашему выбору, скажем, в Visual Studio Code. После того, как папка проекта открыта в vscode, вы можете открыть файл requirements.txt, содержащий необходимые установки для вашего проекта, после чего появится всплывающая кнопка с просьбой создать виртуальную среду, или вы можете открыть терминал и сделать ярлык на Windows ctrl+shift+p, чтобы открыть список команд, затем вы можете выбрать создание виртуальной среды, после чего она создаст виртуальную среду на основе установок, указанных в файле requirements.txt. Допустим, имя вашей новой среды — venv, тогда вы можете ввести следующую команду в терминале, чтобы активировать вашу виртуальную среду; venv/Скрипты/активировать.

  • Шаг 2: Подготовьте модель

Перед развертыванием модели убедитесь, что она обучена и готова к использованию. Допустим, вы используете библиотеку Scikit-learn, тогда вы можете построить конвейер с классом конвейера scikit-learn, который будет содержать все модули для предварительной обработки данных, такие как кодировщики, импутеры и масштабаторы, а также оценщик, подходящий для обучающего набора данных и экспортированный. с рассолом, готовым к использованию в вашем приложении gradio.

  • Шаг 3: Импортируйте необходимые библиотеки

В вашем app.py вы можете импортировать необходимые библиотеки, включая Gradio и библиотеки, связанные с вашей платформой машинного обучения. Например, если вы используете Scikit-learn;

import gradio as gr
import sklearn
import pandas pd
import numpy as np
  • Шаг 4: Определите свою модель и функции ввода/вывода

Определите свою модель и любые необходимые функции предварительной обработки. Для Gradio требуется функция, которая принимает входные данные и возвращает выходные данные. Убедитесь, что форматы ввода и вывода соответствуют требованиям вашей модели. Допустим, вы обучили свою модель на данных об оттоке клиентов, таких как в этом блокноте, тогда ваш код может выглядеть так, как показано ниже.

def make_prediction(gender, Partner, Dependents, tenure, MultipleLines,
       InternetService, OnlineSecurity, OnlineBackup, DeviceProtection,
       TechSupport, Contract, PaperlessBilling, PaymentMethod,
       MonthlyCharges, TotalCharges):
   input_data = pd.DataFrame({'gender':[gender], 'Partner':[Partner], 'Dependents':[Dependents], 'tenure':[tenure], 'MultipleLines':[MultipleLines],
       'InternetService':[InternetService], 'OnlineSecurity':[OnlineSecurity], 'OnlineBackup':[OnlineBackup], 'DeviceProtection':[DeviceProtection],
       'TechSupport':[TechSupport], 'Contract':[Contract], 'PaperlessBilling':[PaperlessBilling], 'PaymentMethod':[PaymentMethod],
       'MonthlyCharges':[MonthlyCharges], 'TotalCharges':[TotalCharges]})
   
   #load already saved pipeline and make predictions
    with open("ml_model.pkl", "rb") as f:
        model = pickle.load(f)
        predt = model.predict(input_data) 
    #return prediction 
    return predt
  • Шаг 5: Создайте компонент вменения
#create the input components for gradio
gender_input = gr.inputs.Dropdown(choices =['Female', 'Male']) 
Partner_input = gr.inputs.Dropdown(choices =['Yes', 'No']) 
Dependents_input = gr.inputs.Dropdown(choices =['Yes', 'No'])
tenure_input = gr.Number()
MultipleLines_input = gr.inputs.Dropdown(choices =['No phone service', 'No', 'Yes'])
InternetService_input = gr.inputs.Dropdown(choices =['DSL', 'Fiber optic', 'No']) 
OnlineSecurity_input = gr.inputs.Dropdown(choices =['No', 'Yes', 'No internet service']) 
OnlineBackup_input = gr.inputs.Dropdown(choices =['Yes', 'No', 'No internet service']) 
DeviceProtection_input = gr.inputs.Dropdown(choices =['No', 'Yes', 'No internet service'])
TechSupport_input = gr.inputs.Dropdown(choices =['No', 'Yes', 'No internet service'])
Contract_input = gr.inputs.Dropdown(choices =['Month-to-month', 'One year', 'Two year'])
PaperlessBilling_input = gr.inputs.Dropdown(choices =['Yes', 'No']) 
PaymentMethod_input = gr.inputs.Dropdown(choices =['Electronic check', 'Mailed check', 'Bank transfer (automatic)','Credit card (automatic)'])    
MonthlyCharges_input = gr.Number()
TotalCharges_input = gr.Number()

output = gr.Textbox(label='Prediction') 
  • Шаг 6: Создайте интерфейс Gradio

Создайте интерфейс Gradio, указав тип ввода, тип вывода и любые дополнительные параметры, которые вы хотите включить. Gradio поддерживает различные типы ввода, включая изображения, ввод текста и раскрывающиеся меню, а также типы вывода, такие как текст и изображения.

#create the interface component

app = gr.Interface(fn =make_prediction,inputs =[gender_input,
                                                 Partner_input,
                                                 Dependents_input,
                                                 tenure_input,
                                                 MultipleLines_input,
                                                 InternetService_input,
                                                 OnlineSecurity_input,
                                                 OnlineBackup_input,
                                                 DeviceProtection_input,
                                                 TechSupport_input,
                                                 Contract_input,
                                                 PaperlessBilling_input,
                                                 PaymentMethod_input,
                                                 MonthlyCharges_input,
                                                 TotalCharges_input],
                                                 title ="Customer Churn Predictor", 
                                                  description="Enter the feilds Below and click the submit button to Make Your Prediction",
                                                 outputs = output)
  • Шаг 7: Запустите интерфейс

Запустите интерфейс Gradio, используя метод launch(). Это запустит локальный веб-сервер, на котором размещена ваша модель.

app.launch(share = True)
  • Шаг 8. Протестируйте развернутую модель

После запуска интерфейса вы можете протестировать развернутую модель, взаимодействуя с предоставленным веб-интерфейсом.

  • Шаг 9. Поделитесь развернутой моделью

Gradio предоставляет простой способ поделиться развернутой моделью с другими. По умолчанию Gradio создает веб-интерфейс, доступный по адресу http://localhost:7860. Вы можете поделиться этим URL-адресом с другими, что позволит им взаимодействовать с вашей развернутой моделью через свой веб-браузер.

Заключение:

Развертывание моделей машинного обучения может быть сложной задачей, но с Gradio этот процесс значительно упрощается. Следуя пошаговому руководству, описанному в этой статье, вы сможете быстро развернуть свои модели машинного обучения с помощью удобного интерфейса. Гибкость и простота использования Gradio делают его отличным выбором для создания прототипов и демонстрации ваших моделей более широкой аудитории. Так что вперед, попробуйте Gradio и с легкостью воплотите в жизнь свои модели машинного обучения.