Одним із аспектів сценарію є створення моделі машинного навчання. Він має бути придатним для використання в реальному світі та доступним споживачам і розробникам.
Найпростіший і найпопулярніший спосіб розгортання моделей машинного навчання — це включити їх у 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; працюватиме Uvuicorn або Hypercorn. Це працює, ввівши таку команду в термінал:
Тепер, коли API створено, ви можете використовувати бажаний редактор коду та переглядати його. Щоб почати, створіть сценарій Python під назвою ml_model.py. Ви можете дати своїй іншій назві, але для цієї публікації я називатиму цей файл ml_model.py.
Щоб створити простий API із двома кінцевими точками, ви повинні виконати такі завдання:
- Імпортуйте бібліотеки FastAPI та Uvicorn.
- Налаштуйте екземпляр класу FastAPI.
- Оголошіть перший маршрут, який на сторінці індексу створює звичайний об’єкт JSON.
- Оголошіть другий маршрут, який надає простий об’єкт JSON із налаштованим повідомленням. Параметр імені береться прямо з URL-адреси (наприклад, https://127.0.0.1:8000/Jay).
- Використовуйте Uvicorn для запуску API.
Реалізація цих п’яти етапів показана в наступному фрагменті коду, тобто. створення простого API
Готово! Давайте негайно запустимо наш API. Для цього відкрийте вікно терміналу поруч із файлом ml model.py. Далі введіть наступне:
клавішу Enter. Перш ніж рухатися далі, давайте розвінчаємо це твердження. Перша програма використовує лише назву файлу Python без розширення. Друга програма повинна мати таке ж ім’я, як і ваш екземпляр FastAPI.
Використовуючи -reload, ви повідомляєте API, що хочете, щоб він автоматично перезавантажувався, коли ви зберігаєте файл, а не починати з нуля.
Тепер запустіть браузер і перейдіть до https://127.0.0.1:8000; результат має виглядати так:
Тепер ви розумієте, як створити простий API за допомогою FastAPI.
Побудова та навчання моделі машинного навчання
Не збираючи та не аналізуючи дані, ми просто навчимо просту модель. Вони не пов’язані з розгортанням моделей і не є суттєвими для розглянутої теми.
Модель, засновану на наборі даних Iris, можна встановити за допомогою того самого нейронної мережі спосіб установки.
І ми зробимо саме це: завантажимо Набір даних Iris і навчіть модель. Це буде не просто. Для початку створіть файл з назвою jaysmlmodel.py.
У ньому ви будете робити наступне:
- Імпорт — вам знадобляться pandas, scikit-RandomForecastClassifier, BaseModel від learn's pydantic (ви дізнаєтеся, чому це відбувається в наступному кроці), і joblib для зберігання та завантаження моделей.
- Оголошіть клас IrisSpecies, який успадковує базову модель. Цей клас містить лише поля, необхідні для прогнозування одного виду квітів (докладніше про це в наступному розділі)
- Створіть клас. IrisModel — це інструмент навчання моделі та прогнозування.
- Оголошіть метод під назвою _train model у IrisModel. Він використовується для навчання моделей за допомогою техніки випадкових лісів. Процедура повертає навчену модель.
- Оголошення функції передбаченого виду всередині IrisModel. Він використовується для прогнозування на основі 4 вхідних факторів (вимірювання квітів). Алгоритм повертає як прогноз (вид квітки), так і ймовірність передбачення.
- Змініть конструктор у IrisModel так, щоб він завантажував набір даних Iris і навчав модель, якщо її немає в папці. Це вирішує проблему багаторазового навчання нових моделей. Бібліотека joblib використовується для завантаження та збереження моделі.
Ось весь код:
Я сподіваюся, що наведений вище список і коментарі зробили його легким для сприйняття, хоча це була значна кількість коду для створення. Тепер, коли цю модель розроблено, давайте опублікуємо її можливості прогнозування на a REST API.
Створення повного REST API
Поверніться до файлу ml_model.py і очистіть усі дані. Шаблон буде, по суті, таким самим, як і раніше, але ми повинні почати спочатку з порожнього файлу.
Цього разу ви визначите лише одну кінцеву точку, яка використовується для визначення типу квітки. IrisModel.predict species(), який було оголошено в попередньому розділі, викликається цією кінцевою точкою для виконання прогнозу.
Ще одна велика зміна — тип запиту. Щоб передавати параметри в форматі JSON, а не в URL-адресі, рекомендується використовувати POST під час використання навчання за допомогою машини API.
Наведене вище речення могло прозвучати як тарабарщина, якщо ви a вчений даних, але це нормально. Щоб розробляти та розгортати моделі, необов’язково бути експертом із запитів HTTP та REST API.
Завдань для ml model.py небагато і вони прості:
- Ви повинні імпортувати наступне з попередньо створеного файлу jaymlmodel.py: uvicorn, FastAPI, IrisModel і IrisSpecies.
- Створіть екземпляри FastAPI та IrisModel.
- Оголошіть функцію за адресою https://127.0.0.1:8000/predict, щоб робити прогнози.
- Метод IrisModel.predict species() отримує об’єкт типу IrisSpecies, перетворює його на словник, а потім повертає. Повернення – це очікуваний клас і прогнозована ймовірність.
- Використовуйте uvicorn для виконання API.
Знову ж таки, ось весь код файлу разом із його коментарями:
Це все, що вам потрібно зробити. На наступному кроці давайте протестуємо API.
Тестування API
Повторно введіть наступний рядок у терміналі, щоб виконати API: uvicorn ml_model:app –reload
Ось як виглядає сторінка документації:
Ось і все на сьогодні. У частині після цього давайте завершимо.
Висновок
Сьогодні ви дізналися, що таке FastAPI і як ним користуватися, використовуючи як простий приклад API, так і простий приклад машинного навчання. Ви також дізналися, як створювати та переглядати документацію API, а також як її тестувати.
Це багато для окремого твору, тож не дивуйтеся, якщо для правильного розуміння знадобиться кілька читань.
Щасливого кодування.
залишити коментар