90 % усилий, необходимых для успеха в машинном обучении, связаны не с алгоритмом, моделью или обучением, а с логистикой.
Red Hat OpenShift предоставляет отличные инструменты поверх Kubernetes, которые сокращают время выхода на рынок и уменьшают логистические проблемы. Red Hat также имеет партнерские отношения с Nvidia, которые делают возможными контейнерные рабочие нагрузки графического процессора в OpenShift, используя функцию подключаемого модуля устройства в OpenShift.
Теперь вернемся к развертыванию модели глубокого обучения в OpenShift.
Если вы видели мой недавний пост в блоге, у нас есть постоянная потребность в повторении моделей и улучшении их.
Для зрелости этих моделей требуется более быстрое и дополнительное тестирование.
Контейнеры и Openshift могут быть здесь хорошим подспорьем, так как вы можете развернуть несколько моделей параллельно и направить запрос — разделение запросов, скажем, на 50% к каждой модели — к этим моделям, чтобы увидеть, как они себя ведут.
Давайте возьмем модель глубокого обучения и развернем ее на OpenShift.
Мы возьмем Keras и построим с его помощью модель глубокого обучения. Мы можем обернуть его с помощью Rest API и развернуть на OpenShift.
Я буду использовать код, предоставленный Адрианом Роузброком на github[1].
При этом используется архитектура ResNet50, предварительно обученная на наборе данных ImageNet.
Предварительно обученная модель помогает нам сэкономить много времени и очень полезна, так как мне не нужно использовать вычисления, чтобы добиться этого.
Вы можете взять этот код и преобразовать его в изображение. Теперь образ готов и доступен в Dockerhub по адресу vikasgrover2004/keras-app(https://hub.docker.com/r/vikasgrover2004/keras-app/)
Как только ваш образ будет готов, вы можете работать над его развертыванием в OpenShift.
Вот шаги для тех, кто хочет поиграть с этой моделью и запустить ее в OpenShift.
$oc запустить keras-app1 — image=vikasgrover2004/keras-app — port=5000
Конфигурация развертывания "keras-app1" создана
$oc получить пакеты
ИМЯ СТАТУС ГОТОВ ПЕРЕЗАПУСКАЕТ ВОЗРАСТ
keras-app1–1-wg26g 1/1 Бег 0 1 м
$oc expose dc keras-app1 — type=LoadBalancer — порт 80 — целевой порт 5000
служба keras-app1 раскрыта
Теперь, когда ваш модуль запущен и служба готова, вы можете использовать консоль OpenShift для создания маршрута (или использовать команду oc)
Даже если вы открыли маршрут, вы не сможете получить к нему доступ с помощью веб-браузера, потому что открытый /predict принимает только POST.
Итак, curl поможет здесь, и мы можем отправить изображение в эту модель и посмотреть, какие прогнозы она нам дает.
Например: я предоставил изображение автомобиля и получил следующие прогнозы, которые не были такими впечатляющими.
Но я предоставил изображение Тигра, и это был довольно хороший результат.
curl -X POST -F [email protected] ‘http://keras-app1-mlprj1.127.0.0.1.nip.io/predict'
{«предсказания»:[{«метка»: «решетка», «вероятность»: 0,2803921401500702}, {«метка»: «пикап», «вероятность»: 0,25131097435951233}, {«метка»: «гонщик», «вероятность» :0.18713875114917755}, {"метка": "sports_car", "вероятность": 0,14187376201152802}, {"метка": "car_wheel", "вероятность": 0,044908713549375534}], "успех": правда}
curl -X POST -F [email protected] ‘http://keras-app1-mlprj1.127.0.0.1.nip.io/predict'
{«предсказания»:[{«метка»: «тигр», «вероятность»: 0,860263466835022}, {«метка»: «tiger_cat», «вероятность»: 0,1142442524433136}, {«метка»: «зебра», «вероятность» :0,011854393407702446},{"метка":"ягуар","вероятность":0,004141010344028473},{"метка":"рысь","вероятность":0,002418165560811758}]",успех":true}
Теперь, возвращаясь к исходной точке, где вам может потребоваться выполнить различные итерации, вы можете вносить изменения в модель, развертывать, использовать функции OpenShift для разделения трафика в разных версиях и тестировать, чтобы увидеть, как ваша модель улучшается.