Mlops: От доказательства концепций до индустриализации
В последние годы ИИ и машинное обучение наблюдали огромный рост в разных отраслях в различных случаях инновационного использования. Это самая важная стратегическая тенденция для лидеров бизнеса. Когда мы погружаемся в технологии, первым шагом обычно является эксперименты в небольших масштабах и для очень основных вариантов использования, тогда следующим шагом является масштаб работы. Сложные модели ML помогают компаниям эффективно обнаружить закономерности, раскрывать аномалии, делать прогнозы и решения, и генерировать понимание, и все больше становятся ключевым различием на рынке. Компании признают необходимость перехода от доказательства концепций к инженерным решениям и перемещать модели ML от разработки в производство. Отсутствие согласованности в инструментах, а процесс разработки и развертывания неэффективен. По мере того, как эти технологии созревают, нам нужна оперативная дисциплина и сложные рабочие процессы, чтобы воспользоваться преимуществами и работать в масштабе. Это широко известно как MLOPS или ML CI/CD или ML DevOps. В этой статье мы исследуем, как это можно достичь с помощью проекта Kubeflow, который делает рабочие процессы развертывания машинного обучения на Kubernetes простыми, портативными и масштабируемыми.
Mlops in Cloud Native World
Существуют платформы ML Enterprise, такие как Amazon SageMaker, Azure ML, Google Cloud AI и IBM Watson Studio в общедоступных средах. В случае на Prem и гибридной платформе с открытым исходным кодом наиболее заметным проектом является Kubeflow.
Что такое kubeflow?
Kubeflow — это кураторская коллекция фреймворков и инструментов машинного обучения. Это платформа для ученых данных и инженеров ML, которые хотят экспериментировать со своей моделью и разработать эффективный рабочий процесс для разработки, тестирования и развертывания в масштабе. Это портативная, масштабируемая и платформа с открытым исходным кодом, созданную на вершине Kubernetes, абстрагируя основные концепции Kubernetes.
Kubeflow Architecture
Kubeflow использует различные облачные нативные технологии, такие как примитивы Istio, Knatie, Argo, Tekton и Kubernetes, такие как развертывание, услуги и пользовательские ресурсы. Istio и Knative Help предоставляют такие возможности, как синие/зеленые развертывания, расщепление трафика, канарейские релизы и автоматическое масштаб. Kubeflow абстрагирует компоненты Kubernetes, предоставляя пользовательский интерфейс, CLI и простые рабочие процессы, которые могут использовать пользователи, не являющиеся Kubernetes.
Для возможностей ML Kubeflow объединяет лучшие структуры и такие инструменты, как Tensorflow, Mxnet, Jupyter Notebooks, Pytorch и Seldon Core. Эта интеграция обеспечивает подготовку, обучение и обслуживание данных.
Давайте посмотрим на компоненты Kubeflow
- Центральная приборная панель : Пользовательский интерфейс для управления всеми трубопроводом Kubeflow и взаимодействия с различными компонентами.
- Няневые блокноты : Это позволяет сотрудничать с другими членами команды и разрабатывать модель.
- Метаданные — Это помогает в организации рабочих процессов, отслеживая и управляя метаданными в артефактах. В этом контексте метаданные означают информацию о выполнениях (запусках), моделях, наборах данных и других артефактах. Артефакты — это файлы и объекты, которые формируют входы и выходы компонентов в вашем рабочем процессе ML.
- Обтекание : Это позволяет удаленно выполнять работу обучения, внедряя его в ноутбук или локальный код Python и развернуть конечные точки прогнозирования.
- Магазин функций (праздник) : Это помогает в совместном использовании и повторном использовании функций, обслуживающих функции в масштабе, обеспечивая согласованность между обучением и обслуживанием, правильностью времени, поддержание качества данных и валидации.
- ML Frameworks : Это коллекция фреймворков, в том числе цепь (устаревший), MPI, MXNET, Pytorch, TensorFlow, предоставление
- Катиб : Он используется для реализации автоматизированного машинного обучения с использованием гиперпараметров (переменных для управления процессом обучения модели), поиска нейронной архитектуры (NAS) для улучшения прогнозирования точной и производительности модели и веб -интерфейса для взаимодействия с Katib.
- Трубопроводы : Обеспечивает сквозную оркестровку и простые в повторном использовании решения для облегчения экспериментов.
- Инструменты для подачи : Существует две модельные системы обслуживания, которые позволяют многопрофильной модели модели: KFServing и Seldon Core. Вы можете прочитать больше о инструментах для обслуживания здесь Анкет
Каковы некоторые из вариантов использования Kubeflow?
Гибридная платформа ML-Cloud ML в масштабе : Поскольку Kubeflow основан на Kubernetes, он использовал все функции и мощность, которые предоставляет Kubernetes. Это позволяет вам разрабатывать платформы ML, которые являются портативными и используют одни и те же API и т. Д. Для запуска на объектах и общественных облаках.
Эксперименты : Легкий пользовательский интерфейс и абстракция помогают в быстрых экспериментах и сотрудничестве. Это ускоряет разработку, предоставляя управляемых поездок пользователей.
DevOps для платформы ML : Конвейеры Kubeflow могут помочь в создании воспроизводимых рабочих процессов, которые обеспечивают согласованность, экономит время итерации и помогает в отладке, проверке и требованиях соответствия.
Настройка модели гиперпараметров во время обучения : Во время разработки моделей настройка гиперпараметров часто трудно настроить и занимать много времени. Это также важно для производительности и точности модели. Катиб может сократить время тестирования и улучшить скорость доставки, автоматизируя настройку гиперпараметров.
Kubeflow Demo
Давайте попробуем выучить kubeflow с примером. В этой демонстрации мы попробуем Kubeflow в локальном кластере. У вас должно быть как минимум 16 ГБ оперативной памяти, 8 CPUS Modern Machine, чтобы попробовать ее на локальной машине, в противном случае используйте виртуальную машину в облаке. Мы будем использовать набор данных MNIST за Zalando и Эта записная книжка Manceps для демонстрации.
Из -за некоторых Выпуск Я должен был включить несколько функций и дополнительных аргументов сервера API, чтобы заставить его работать. Пожалуйста, используйте следующую конфигурацию для создания кластера.
# kind cluster configuration - kind.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 featureGates: "TokenRequest": true "TokenRequestProjection": true kubeadmConfigPatches: - | kind: ClusterConfiguration metadata: name: config apiServer: extraArgs: "service-account-signing-key-file": "/etc/kubernetes/pki/sa.key" "service-account-issuer": "kubernetes.default.svc"
Создайте добрый кластер и установите Kubeflow.
# Create Kind cluster kind create cluster --config kind.yaml # Deploy Kubeflow on Kind. mkdir -p /root/kubeflow/v1.0 cd /root/kubeflow/v1.0 wget https://github.com/kubeflow/kfctl/releases/download/v1.0/kfctl_v1.0-0-g94c35cf_linux.tar.gz tar -xvf kfctl_v1.0-0-g94c35cf_linux.tar.gz export PATH=$PATH:/root/kubeflow/v1.0 export KF_NAME=my-kubeflow export BASE_DIR=/root/kubeflow/v1.0 export KF_DIR=${BASE_DIR}/${KF_NAME} export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.2-branch/kfdef/kfctl_k8s_istio.v1.2.0.yaml" mkdir -p ${KF_DIR} cd ${KF_DIR} kfctl apply -f ${CONFIG_URI}
Чтобы поднять все услуги, может потребоваться 15-20 минут.
❯ kubectl get pods -n kubeflow NAME READY STATUS RESTARTS AGE admission-webhook-bootstrap-stateful-set-0 1/1 Running 0 19m admission-webhook-deployment-5cd7dc96f5-4hsqr 1/1 Running 0 18m application-controller-stateful-set-0 1/1 Running 0 21m argo-ui-65df8c7c84-dcm6m 1/1 Running 0 18m cache-deployer-deployment-5f4979f45-6fvg2 2/2 Running 1 3m21s cache-server-7859fd67f5-982mg 2/2 Running 0 102s centraldashboard-67767584dc-f5zhh 1/1 Running 0 18m jupyter-web-app-deployment-8486d5ffff-4cb8n 1/1 Running 0 18m katib-controller-7fcc95676b-brk2q 1/1 Running 0 18m katib-db-manager-85db457c64-bb7dp 1/1 Running 3 18m katib-mysql-6c7f7fb869-c4qqx 1/1 Running 0 18m katib-ui-65dc4cf6f5-qrjpm 1/1 Running 0 18m kfserving-controller-manager-0 2/2 Running 0 18m kubeflow-pipelines-profile-controller-797fb44db9-hdnxc 1/1 Running 0 18m metacontroller-0 1/1 Running 0 19m metadata-db-6dd978c5b-wtglv 1/1 Running 0 18m metadata-envoy-deployment-67bd5954c-z8qrv 1/1 Running 0 18m metadata-grpc-deployment-577c67c96f-ts9v6 1/1 Running 6 18m metadata-writer-756dbdd478-7cbgj 2/2 Running 0 18m minio-54d995c97b-85xl6 1/1 Running 0 18m ml-pipeline-7c56db5db9-9mswf 2/2 Running 0 18s ml-pipeline-persistenceagent-d984c9585-82qvs 2/2 Running 0 18m ml-pipeline-scheduledworkflow-5ccf4c9fcc-mjrwz 2/2 Running 0 18m ml-pipeline-ui-7ddcd74489-jw8gj 2/2 Running 0 18m ml-pipeline-viewer-crd-56c68f6c85-tszc4 2/2 Running 1 18m ml-pipeline-visualizationserver-5b9bd8f6bf-dj2r6 2/2 Running 0 18m mpi-operator-d5bfb8489-9jzsf 1/1 Running 0 4m27s mxnet-operator-7576d697d6-7wj52 1/1 Running 0 18m mysql-74f8f99bc8-fddww 2/2 Running 0 18m notebook-controller-deployment-5bb6bdbd6d-vx8tv 1/1 Running 0 18m profiles-deployment-56bc5d7dcb-8x7vr 2/2 Running 0 18m pytorch-operator-847c8d55d8-zgh2x 1/1 Running 0 18m seldon-controller-manager-6bf8b45656-6k8r7 1/1 Running 0 18m spark-operatorsparkoperator-fdfbfd99-5drsc 1/1 Running 0 19m spartakus-volunteer-558f8bfd47-h2w62 1/1 Running 0 18m tf-job-operator-58477797f8-86z42 1/1 Running 0 18m workflow-controller-64fd7cffc5-77g6z 1/1 Running 0 18m
Теперь вы можете получить доступ к приборной панели Kubeflow, путем перевозки порта на HTTP2/$ intress_port, где можно извлечь с помощью ниже.
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
Попробуем эксперимент
Мы будем использовать набор данных модного имистического данных Zalando, чтобы показать базовую классификацию с использованием TensorFlow в этом эксперименте.
О наборе данных Fashion-Mnist-это набор данных изображений статьи Заландо-с помощью учебного набора из 60 000 примеров и тестового набора из 10 000 примеров. Каждый пример представляет собой изображение серого серого 28×28, связанное с меткой из 10 классов. Мы намерены модно-мнист, чтобы выступить в качестве прямой замены для оригинального набора данных MNIST для анализа анализов машинного обучения. Он разделяет точный размер изображения и структуру обучения и разделения тестирования. источник : https://github.com/zalandoresearch/fashion-mnist
Весь эксперимент получен из Manceps ноутбук. Создайте ноутбук Jupyter с именем Kf-Demo
используя этот ноутбук Анкет
Вы можете запустить ноутбук с приборной панели и создать трубопровод. Обратите внимание, что в Kubeflow v1.2 есть проблема, вызывающая RBAC: разрешение отказано
Ошибка при подключении к трубопроводу. Это будет исправлено в v1.3, и вы можете прочитать больше о проблеме Здесь Анкет Как обходной путь, вам нужно создать ISTIO ServiceRoleBinding
и Envoyfilter
Чтобы добавить личность в заголовке. См. Это суть для патч Анкет
Kubeflow будет организовать различные компоненты для создания трубопровода и запустить эксперимент ML. Вы можете получить доступ к результатам через приборную панель. За сценой созданы капсулы Kubernetes, рабочие процессы Argo и т. Д., о которых вам не нужно беспокоиться.
Стручки с ноутбуком KF-Demo и трубопроводом
Я также заметил, что при запуске трубопровода в натуральной форме он жаловался на следующее:
MountVolume.SetUp failed for volume "docker-sock" : hostPath type check failed: /var/run/docker.sock is not a socket file
Чтобы решить это, мне пришлось изменить конфигурацию рабочего процесса Argo, чтобы использовать PNS
вместо Docker
Исполнитель выполнения контейнера.
После изменения перезапустите эксперимент с приборной панели, который затем пройдет.
Экспериментальный поток Результат прогнозирования
Вывод
Если вы ищете ловкость, улучшение управления с помощью функций предприятия, такими как RBAC, многопользовательское и изоляцию, безопасность, аудит, сотрудничество для операций машинного обучения в вашей организации, Kubeflow-отличный вариант. Он стабильный, зрелый и куратор с лучшими в своем классе инструментов и структуры, которые можно развернуть в любом распределении Kubernetes. Смотрите Дорожная карта Kubeflow здесь Чтобы посмотреть, что будет в следующей версии.
Надеюсь, это было полезно для вас. Попробуйте Kubeflow и поделитесь своим опытом, связавшись со мной на Twitter Анкет
использованная литература
- https://www.gartner.com/smarterwithgartner/gartner-top-strategic-technology-rends-for-2021/
- https://www2.deloitte.com/content/dam/insights/articles/6730_TT-Landing-page/DI_2021-Tech-Trends.pdf
- https://www.crn.com/news/cloud/5-emerging-ai-and-machine-learning-trends-to-watch-in-2021?itc=refresh
- https://www.cncf.io/blog/2019/07/30/deploy-your-machine-learning-models-with-kubernetes/
- https://events19.linuxfoundation.org/wp-content/uploads/2018/02/OpenFinTech-MLonKube10112018-atin-and-sahdev.pdf
- https://thenewstack.io/how-kubernetes-could-orchestrate-machine-learning-pipelines/
- https://cloud.google.com/community/tutorials/kubernetes-ml-ops
Оригинал: «https://dev.to/infracloud/machine-learning-orchestration-on-kubernetes-using-kubeflow-22nk»