Многие люди, которые начинают изучать сверточные нейронные сети, часто сталкиваются с задачей классификации изображения кошки или собаки. Большинство людей могут легко создать классификатор, но вы когда-нибудь хотели развернуть сеть как сервис, где вы могли бы просто передать изображение, и результат будет возвращен без каких-либо хлопот? А вы когда-нибудь хотели с легкостью развернуть приложение Streamlit, которое вы могли бы сделать для взаимодействия с пользователем? TrueFoundry поможет вам. Он позволяет выполнять все три вышеперечисленные функции и многое другое!

Что такое TrueFoundry?

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

Чтобы узнать больше о TrueFoundry, вы можете посетить приведенный ниже блог, где я рассказал о различных функциях и вариантах использования TrueFoundry.



В этой статье мы будем создавать полноценное приложение Streamlit, где мы будем экспериментировать с нашей CNN, развертывать модель как услугу, создавать приложение Streamlit и, наконец, развертывать его, и все это с помощью TrueFoundry. Финальное потоковое приложение, которое мы будем создавать, можно найти по этой ссылке.

Мы будем создавать классификатор кошек и собак, и прежде чем мы начнем, убедитесь, что вы создали ключ API, перейдя на страницу настроек.

Давайте начнем

Первый шаг, который нам нужно сделать, это создать модель, которую можно обучать и использовать. Давайте создадим папку Train, содержащую скрипт для обучения CNN, а также изображения для обучения и тестирования. Скачать обе можно по этой ссылке. Я не буду объяснять функционирование CNN в этом блоге, так как это выходит за рамки блога.

Сначала мы создадим файл с именем «train_local.py», который позволит нам обучать модель локально.

С помощью приведенного выше кода мы можем обучить базовую CNN с 20 эпохами, а затем сохранить модель локально с помощью Pickle.

Обучение модели и отслеживание экспериментов с помощью TrueFoundry

Теперь, когда у нас есть базовая архитектура модели, мы можем создать запуск в TrueFoundry, который поможет нам отслеживать производительность нашей модели с различными гиперпараметрами. Один запуск представляет собой один эксперимент или одну модель машинного обучения, которую мы обучили.

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

На приведенном ниже рисунке вы можете заметить, что я создал три прогона, дважды с количеством эпох, равным двум, и один раз с десятью эпохами.

Если вы войдете в один из экспериментов и просмотрите «Результаты», вы увидите значение точности проверки для каждой тренировки эпохи.

Чтобы просмотреть сохраненную модель, вы можете перейти на вкладку «Модели», и модель будет сохранена там. Мы будем использовать модель в ближайшее время. Вы можете получить доступ к модели через полное доменное имя, указанное помимо названия модели.

Развертывание модели как задания и услуги

TrueFoundry позволяет развернуть вашу модель как задание или услугу. Задание — это не что иное, как однократное выполнение кода. Если оно успешно выполнено, оно помечается как Успех, в противном случае — как Неудачное. Задание можно запускать вручную или через определенные промежутки времени, запланировав задание. Служба, с другой стороны, представляет собой непрерывно работающий процесс с API для взаимодействия с ним. Ресурсы можно масштабировать в соответствии с трафиком API.

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

Модель как работа

Задание позволяет выполнять код один раз или по запросу, и если оно завершается успешно, задание помечается как выполненное успешно. Задание помечается как «Неудачное», если оно не завершается в течение установленного количества повторных попыток. Основное преимущество развертывания модели в качестве задания заключается в том, что ресурсы компьютера и памяти высвобождаются после завершения задания, и никаких дополнительных затрат не требуется.

Чтобы развернуть модель как задание, мы создали файл с именем «train_deploy.py», который поможет вам развернуть модель как задание.

Модель как услуга

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

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

Мы будем использовать FastAPI для разработки API для этой конкретной задачи. Чтобы узнать больше о FastAPI, перейдите по этой ссылке.

Мы разработали простое приложение FastAPI, которое будет принимать входные данные в виде байтов (представляющих изображение), преобразовывать изображение в массив numpy, передавать его в модель и возвращать предсказанное значение.

Держите под рукой полное доменное имя версии модели для следующего шага, так как пришло время развернуть модель как услугу.

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

Бум! С помощью TrueFoundry было очень легко создать и развернуть вашу модель (как работу или услугу). Это действительно делает нашу жизнь проще. Теперь, когда наш сервис запущен и работает, пришло время создать приложение Streamlit.

Развертывание приложения Streamlit

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

Давайте создадим простое веб-приложение, которое позволит пользователю загружать изображение, затем отображать изображение, загруженное пользователем, а затем отображать изображение кошки или собаки.

Вместо этого вы можете ввести URL-адрес конечной точки для вашей службы в приведенном выше коде. Если мы запустим приведенный выше код, приложение Streamlit будет выглядеть так, как показано ниже.

Давайте загрузим одно изображение кошки и одно изображение собаки, чтобы увидеть результат.

Чтобы развернуть приложение, мы можем легко сделать это через TrueFoundry, введя следующий код:

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

Заключение

Благодаря этому блогу мы смогли создать полноценное приложение и выполнять различные задачи, такие как развертывание модели, отслеживание экспериментов, развертывание приложений и т. д. с помощью одного сервиса, т. е. TrueFoundry. Разве это не удивительно и довольно полезно?

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



Документация охватывает все концепции и очень проста для интерпретации и понимания.



Подпишитесь на DDIntel Здесь.

Посетите наш сайт здесь: https://www.datadriveninvestor.com

Присоединяйтесь к нашей сети здесь: https://datadriveninvestor.com/collaborate