Найти тему
17 подписчиков

Процесс развертывания Kubeflow и Seldon для обработки и предсказания данных на основе модели машинного обучения (Часть 2)


Seldon Core позволяет легко развертывать и масштабировать модели машинного обучения в Kubernetes, предоставляя API для взаимодействия с ними. Производитель утверждает, что данное решение поможет защитить модель от некоторых типов adversarial attack.

Добавляем репозиторий Seldon, создаем пространство имен и устанавливаем оператор Seldon Core, который управляет развертыванием моделей машинного обучения:

helm repo add seldon-charts https://storage.googleapis.com/seldon-charts
kubectl create namespace seldon-system
helm install seldon-core seldon-core-operator \
--repo https://storage.googleapis.com/seldon-charts \
--set usageMetrics.enabled=true \
--namespace seldon-system \
--set istio.enabled=true

Обучаем и экспортируем модель:

my_sklearn_model.train(...)
joblib.dump(my_sklearn_model, "model.joblib")

Здесь выполняется обучение модели с использованием библиотеки Scikit-learn, после чего модель сохраняется в файл model.joblib. Сохранение модели позволяет повторно использовать ее без необходимости повторного обучения.

Публикуем модель в Object Storage. Облачное хранилище предоставляет доступ к модели из различных окружений и позволяет легко развертывать ее в Kubernetes.

gsutil cp model.joblib gs://seldon-models/v1.19.0-dev/sklearn/iris/model.joblib

Модель загружается в Google Cloud Storage, что позволяет использовать ее для развертывания в Kubernetes.

Публикуем модель в Kubernetes:
kubectl apply -f - << END
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
name: iris-model
namespace: model-namespace
spec:
name: iris
predictors:
- graph:
implementation: SKLEARN_SERVER
modelUri: gs://seldon-models/v1.19.0-dev/sklearn/iris
name: classifier
name: default
replicas: 1
END

Проверяем работоспособность модели:
curl -X POST http://<ingress>/seldon/model-namespace/iris-model/api/v1.0/predictions \
-H 'Content-Type: application/json' \
-d '{ "data": { "ndarray": [1,2,3,4] } }' | json_pp

Пример ответа от модели:
{
"meta" : {},
"data" : {
"names" : [
"t:0",
"t:1",
"t:2"
],
"ndarray" : [
[
0.000698519453116284,
0.00366803903943576,
0.995633441507448
]
]
}
}

Ответ содержит предсказания модели в формате JSON, где ndarray — это массив выходных значений для входных данных, переданных в запросе.

#MLOps
Процесс развертывания Kubeflow и Seldon для обработки и предсказания данных на основе модели машинного обучения (Часть 2)  Seldon Core позволяет легко развертывать и масштабировать модели машинного...
1 минута