Здравствуйте! Добро пожаловать в Учебник по машинному обучению для начинающих.
В сегодняшнем уроке мы узнаем, как обучить модель mnist с помощью официального скрипта, сохранить модель и обслуживать модель с помощью Pinferencia.
Никогда не слышали о Pinferencia? Еще не поздно. Посмотреть на GitHub
Обучите и сохраните модель
Посетите Примеры PyTorch — MNIST, загрузите файлы.
Запустите приведенные ниже команды, чтобы установить и обучить модель:
После завершения обучения у вас будет структура папок, как показано ниже. Будет создан файл mnist_cnn.pt.
Структура модели находится в main.py
Загрузите модель
Теперь давайте загрузим модель:
Потому что файл pt
— это просто диктовка состояния. Нам нужно сначала инициализировать модель, а затем загрузить состояние.
Подавать через REST API
Как можно было бы завершить руководство по машинному обучению без развертывания?
Сначала установим Pinferencia.
pip install “pinferencia[uvicorn]”
Если вы не слышали о Pinferencia, перейдите на его страницу github или домашнюю страницу, чтобы проверить это, это потрясающая библиотека, которая поможет вам с легкостью развернуть вашу модель.
Давайте создадим файл app.py в той же папке.
Запустите службу и подождите, пока она загрузит модель и запустит сервер:
uvicorn app:service — reload
Протестируйте сервис:
Давайте использовать изображение, закодированное в base64, вы можете проверить изображение на Лучший онлайн-декодер / конвертер Base64 в изображение (codebeautify.org)
Его строка изображения в кодировке base64:
Использование запросов Python:
Сохраните коды как test.py
:
import requests response = requests.post( url="http://localhost:8000/v1/models/mnist/predict", json={"data": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAcABwBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/APn+uhfwXqy2Ph25VYnPiB3SzhUkPlXCfNkAAEsCCCeOeKx9RsLjStUu9Ou1C3NpM8Eqg5AdSVIz35FVqK9xl0HXhb/C20sdMubjTLMQXs11AhkRXmmDsCwzgAYPpz+XI/GrSLrTfiVqNzPapbw3xE8AWQNvUAKXOOmWVjg+teeUV2fgXxd4hsPE2hWEGuX8Vh9uhja3Fw3lbGcBhtzjGCad8XI7iL4p68twHDGcMm45+QqCuPbBFcVRRU97fXepXb3d9dT3VzJjfNPIXdsAAZY8nAAH4VBX/9k="}, ) print("Prediction:", response.json())
Выполнить python test.py
, ответ:
Круто~~ Еще нет, еще круче:
Вы можете использовать пользовательский интерфейс swagger по адресу http://127.0.0.1:8000 (адрес сервера), чтобы попробовать предсказание.
Дополнительный бонус: Суммируйте изображения MNIST