Здравствуйте! Добро пожаловать в Учебник по машинному обучению для начинающих.

В сегодняшнем уроке мы узнаем, как обучить модель 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