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

1] https://github.com/jrosebr1/simple-keras-rest-api