Рубрики
Uncategorized

Оркестрация машинного обучения на Kubernetes с использованием kubeflow

MLOPS: от доказательства концепций до индустриализации В последние годы ИИ и машинное обучение … Помечено с помощью Kubernetes, машинного обучения, DevOps, Cloud Native.

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 Анкет

использованная литература

  1. https://www.gartner.com/smarterwithgartner/gartner-top-strategic-technology-rends-for-2021/
  2. https://www2.deloitte.com/content/dam/insights/articles/6730_TT-Landing-page/DI_2021-Tech-Trends.pdf
  3. https://www.crn.com/news/cloud/5-emerging-ai-and-machine-learning-trends-to-watch-in-2021?itc=refresh
  4. https://www.cncf.io/blog/2019/07/30/deploy-your-machine-learning-models-with-kubernetes/
  5. https://events19.linuxfoundation.org/wp-content/uploads/2018/02/OpenFinTech-MLonKube10112018-atin-and-sahdev.pdf
  6. https://thenewstack.io/how-kubernetes-could-orchestrate-machine-learning-pipelines/
  7. https://cloud.google.com/community/tutorials/kubernetes-ml-ops

Оригинал: «https://dev.to/infracloud/machine-learning-orchestration-on-kubernetes-using-kubeflow-22nk»