Внедрение контейнеров и облачной разработки изменило ландшафт для практиков машинного обучения. Контейнеризация жизненного цикла машинного обучения улучшает согласованность, переносимость, компоновку, распространение и масштабирование, поддерживаемые системой оркестровки контейнеров Kubernetes и ее более широкой экосистемой.

Поскольку программные продукты включают машинное обучение для расширения набора функций или создания совершенно нового опыта, на этапах жизненного цикла машинного обучения формируются дополнительные команды и роли — специалисты по данным, инженеры по обработке данных и инженеры MLOps. Включение специалистов-практиков в процесс разработки программного обеспечения и предоставление платформы машинного обучения, учитывающей их потребности, становится все более важным по мере роста команд.

Организации, которые уже внедрили Amazon EKS и Kubernetes, могут расширить свои команды по разработке платформ, чтобы привлечь и обслуживать растущую группу специалистов по машинному обучению.

Контейнеризация жизненного цикла разработки машинного обучения, включая обработку данных, обучение моделей и обслуживание, привела к появлению интегрированных платформ, таких как Kubeflow, инкубационного проекта с открытым исходным кодом с CNCF, созданного для развертывания в Kubernetes.

Жизненный цикл машинного обучения и разработки программного обеспечения (SDLC) имеет много общих элементов, таких как исходный код, сторонние зависимости и среды. Тем не менее, машинное обучение усложняет задачу из-за дополнительных компонентов, которые используются для создания воспроизводимых моделей, таких как наборы данных и гиперпараметры.

Kubeflow учитывает дополнительные компоненты и расширяет набор систем сборки, включив в него репозиторий хранилища функций, хранилище отслеживания экспериментов, реестр моделей и хранилище отслеживания происхождения. Платформа Kubeflow предоставляет эти компоненты через различные рабочие группы (WG): рабочую группу Notebooks, рабочую группу операторов обучения, рабочую группу AutoML, рабочую группу Kubeflow Pipelines и рабочую группу KServe.

Для тех, у кого ограниченный бюджет: TL;DR следующих разделов призван показать, как команды платформы могут использовать Amazon EKS и Kubeflow on AWS для ускорения внедрения команд машинного обучения на общую платформу. Стандартизация Kubeflow как многопользовательской платформы машинного обучения для совместной работы может быть наиболее актуальной для тех, кто создал команды платформы с возможностями управления Kubernetes. Команды платформы могут выбирать различные стили развертывания в соответствии с требованиями доступности, надежности и безопасности. Использование интеграции Kubeflow с управляемыми сервисами Amazon SageMaker также может стать эффективной стратегией сокращения накладных расходов и недифференцированной тяжелой работы. Наконец, использование непосредственно Amazon SageMaker может стать путем к внедрению платформы машинного обучения в качестве управляемой услуги.

Ускорение с помощью Amazon EKS

Команды разработчиков платформ проектируют и запускают кластеры Kubernetes, которые обеспечивают основу облачной операционной системы для контейнерных приложений и рабочих нагрузок. Они часто поставляют инфраструктурный код, определяют надстройки кластера Kubernetes, предоставляют шаблоны развертывания приложений с помощью Kustomize, Helm и Operators и управляют многокластерными средами, охватывающими предпроизводственные и рабочие кластеры: критические рабочие нагрузки. Рабочие нагрузки включают внутренние платформы разработчиков, защищенные фабрики программного обеспечения и приложения для клиентов.

Amazon Elastic Kubernetes Service, или сокращенно Amazon EKS, — отличное место для запуска рабочих нагрузок Kubernetes. При использовании Amazon EKS команды по проектированию платформ перекладывают часть работы на AWS, поскольку сервисная группа Amazon EKS обеспечивает безопасность компонентов Kubernetes Control Plane и управляет ими от нашего имени.

Расширение Kubernetes с помощью выбора надстроек кластера и шаблонов развертывания — еще один ключевой элемент для инженеров платформ, некоторые из которых можно перенести на AWS, приняв Дополнения Amazon EKS, где это применимо. В зависимости от организационных требований могут потребоваться другие дополнения Kubernetes, и мы можем выбирать из различных источников, включая управляемые дополнения Amazon EKS, дополнения Amazon EKS от независимых поставщиков программного обеспечения, дополнения через чертежи EKS и дополнения с самостоятельным управлением.

Использование команд разработки платформ может эффективно предоставить платформу машинного обучения на базе Kubernetes для растущей группы специалистов.

Встречайте Kubeflow… платформу машинного обучения, которая помогает обеспечить связующую ткань MLOps с оркестровкой контейнеров и Kubernetes.

Ускорение с помощью Kubeflow на AWS

Развертывание, эксплуатация и поддержка платформы Kubeflow для групп машинного обучения требуют тщательного рассмотрения, поскольку Kubeflow, пожалуй, лучше всего понимать как набор лучших в своем классе компонентов и инструментов с открытым исходным кодом, которые в совокупности удовлетворяют конкретные потребности жизненный цикл машинного обучения: блокноты Kubeflow, конвейеры Kubeflow, операторы обучения, Katib для AutoML, хранилища метаданных моделей и артефактов, а также KServe для развертывания и обслуживания моделей.

Kubeflow также поставляется с предварительно выбранным набором вспомогательных компонентов, которые удовлетворяют зависимостям приложения, например хранилище идентификаторов пользователей, реляционная база данных и обработчик хранилища; Восходящее распределение работает как единое целое. Установщики развертывания ванильного Kubeflow известны своей расширяемостью и адаптируемостью к различным средам и используют расширения Kubernetes, такие как Ingress Controller, Services Mesh, Knative и другие.

Команды платформы могут обратить внимание на AWS Labs, которая создала дистрибутив Kubeflow с открытым исходным кодом для AWS, метко названный Kubeflow on AWS. Этот дистрибутив предоставляет типы установки Kubeflow, адаптированные к Amazon EKS, в качестве цели развертывания. Сопровождающие Amazon Labs со временем обновляют дистрибутив по мере того, как проект Kubeflow делает доступными новые выпуски.

Ванильный тип установки Kubeflow может быть полезен при подготовке временных и экспериментальных песочниц. Компоненты плоскости управления Kubeflow и их зависимости развертываются на рабочих узлах Kubernetes, включая хранилище идентификаторов, базу данных MySQL и хранилище объектов, как показано ниже.

Vanilla Kubeflow на AWS в качестве песочницы

Документация «Kubeflow on AWS» довольно хороша, и для дополнительного удобства вот фрагмент, который поможет вам быстро туда добраться.

### setup cloud9 as your machine to run the installation 
# launch an ubuntu 18.04 cloud9 instance, turn off credential management and use your aws credentials
# once you're on Cloud9c ...
# set some variables to select the kubeflow version to install
alias python=python3.8
export KUBEFLOW_RELEASE_VERSION=v1.7.0
export AWS_RELEASE_VERSION=v1.7.0-aws-b1.0.2
# clone the installers from awslabs and kubeflow
git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
git checkout ${AWS_RELEASE_VERSION}
git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
# and install the cli tooling we'll need for the kubeflow install
make install-tools
### setup cloud9 as your machine from which to run the installation 
# set some more variables that apply to you
export CLUSTER_NAME=kubeflow
export CLUSTER_REGION=eu-west-1
export AWS_ACCOUNT=012345678901
# provision a new eks cluster 
eksctl create cluster \
--name ${CLUSTER_NAME} \
--version 1.25 \
--region ${CLUSTER_REGION} \
--nodegroup-name linux-nodes \
--node-type m6a.xlarge \
--nodes 2 \
--nodes-min 2 \
--nodes-max 10 \
--managed \
--with-oidc
# provision a serviceaccount and create an IAM role we need for the EBS CSI driver 
eksctl create iamserviceaccount \
    --name ebs-csi-controller-sa \
    --namespace kube-system \
    --cluster ${CLUSTER_NAME} \
    --region ${CLUSTER_REGION} \
    --role-name AmazonEKS_EBS_CSI_DriverRole \
    --role-only \
    --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
    --approve
# provision the EBS CSI Driver 
eksctl create addon \
 --name aws-ebs-csi-driver \
 --cluster ${CLUSTER_NAME} \
 --region ${CLUSTER_REGION} \
 --service-account-role-arn arn:aws:iam::$AWS_ACCOUNT:role/AmazonEKS_EBS_CSI_DriverRole \
 --force
### install kubeflow vanilla 
# use helm to install kubeflow 
make deploy-kubeflow INSTALLATION_OPTION=helm DEPLOYMENT_OPTION=vanilla
### and connect to the kubeflow dashboard from cloud9
# use port-forward and cloud9-preview on the chosen port, for example 8081  
k port-forward svc/istio-ingressgateway -n istio-system 8081:80
# and use cloud9 "pop out into new window" to create a new browser tab on the local machine
# log into dex with the default kubeflow credentials
# enjoy the test drive!

Теперь у нас есть стандартная песочница Kubeflow, работающая на Amazon EKS, как показано на рисунке. AWS on Kubeflow также предоставляет варианты установки, предварительно интегрированные с другими сервисами AWS, такими как Amazon Cognito, Amazon RDS for MySQL и Amazon S3.

На диаграмме ниже показана настройка, включая дополнительные сервисы AWS для обеспечения безопасности, мониторинга и управления: Общая облачная архитектура платформы будет соответствовать Лучшим практикам Amazon EKS и различным основам AWS Well Architected Framework.

Kubeflow на AWS, интегрированный с сервисами AWS

Платформу Kubeflow можно интегрировать в более широкую облачную среду AWS в соответствии с требованиями организации.

Это особенно полезно, когда важны соответствие, управление и согласованность существующего парка учетных записей AWS Organizations и облачных ресурсов.

Выбор Amazon Cognito в качестве поставщика удостоверений может помочь повысить уровень безопасности удостоверений и их учетных данных. Amazon Cognito интегрируется с Application Load Balancer (ALB), который предоставляет пользовательский интерфейс панели управления Kubeflow через контроллер входа Kubernetes, который перенаправляет в Amazon Cognito для входа пользователя. Пользователи и группы определяются через пул пользователей Amazon Cognito, а в Kubeflow — через настраиваемое определение ресурса профиля Kubeflow, которое ссылается на имена пользователей для входа, но не содержит учетных данных. Amazon Cognito также можно настроить как федеративный поставщик удостоверений в тех случаях, когда необходимо использовать существующее стороннее хранилище удостоверений.

Использование управляемого сервиса для базы данных MySQL, работающей за пределами кластера Amazon EKS, может помочь улучшить и согласовать существующие облачные операционные модели. Amazon RDS предоставляет ряд функций управления, включая высокую доступность и автоматическое аварийное переключение, изменение типов экземпляров базы данных и размера тома хранилища, обновление версий ядра MySQL, шифрование данных с помощью ключей, управляемых клиентом AWS KMS, резервное копирование и восстановление на определенный момент времени. , и более. Это особенно полезно при настройке на существующий парк экземпляров RDS.

Точно так же настройка обработчика хранилища Kubeflow MinIO для чтения и записи в Amazon S3 вместо использования службы внутреннего хранилища кластера может иметь важное значение при проектировании работоспособности, доступности, долговечности и безопасности объектного хранилища. Amazon S3 не требует изменения размера емкости, предоставляет политики жизненного цикла и управление версиями, реплицируется в нескольких зонах доступности, отличается высокой надежностью и поддерживает межрегиональную репликацию. Определение ключей Amazon S3 SSE-KMS для шифрования на стороне сервера с помощью ключей KMS, управляемых клиентом, повышает безопасность за счет разделения доступа к корзинам S3 и доступа к ключам шифрования KMS.

Дополнения для развертывания Kubeflow on AWS также предусматривают интеграцию с общими сетевыми файловыми системами хранения, такими как Amazon EFS, что обеспечивает совместное использование рабочих пространств для ноутбуков Kubeflow. Amazon EFS — это бессерверная и эластичная служба хранения, которая расширяется и сжимается по мере добавления и удаления файлов и доступна в виде классов хранения Standard MultiZone и OneZone, для которых можно настроить режимы производительности и пропускной способности.

В тех случаях, когда требуется доступ к большим наборам данных на Amazon S3 с низкой задержкой и высокой пропускной способностью для распределенного обучения и повторяющегося доступа, Amazon FSx for Lustre может помочь в этом. Kubeflow on AWS поставляется с возможностью развертывания FSx для Lustre, которая может кэшировать наборы обучающих данных, находящиеся на Amazon S3.

Ускорение с помощью Kubeflow и Amazon SageMaker

Дистрибутив «Kubeflow on AWS» можно настроить для использования управляемого сервиса Amazon SageMaker для выполнения различных заданий во время выполнения.

Kubeflow Pipelines (KFP) может использовать Интеграцию компонентов Kubeflow SageMaker. Каждое задание в рабочем процессе KPF может затем выполняться в SageMaker вместо кластера Kubernetes, и KPF сохраняет параметры задания, состояние и выходные данные заданий, которые выполняет SageMaker.

Кроме того, мы можем использовать Контроллеры AWS для Kubernetes (ACK) для Amazon SageMaker, которые предварительно установлены с вариантами развертывания Kubeflow on AWS. SageMaker ACK предоставляет ресурсы SageMaker и управляет ими непосредственно из Kubernetes или оптимизированных для AWS блокнотов Kubeflow, созданных на основе контейнеров глубокого обучения AWS (DLC).

Использование DLC может стать важным ускорителем, поскольку нам не обязательно создавать образы контейнеров с нуля для различных платформ глубокого обучения, а затем поддерживать их по мере изменения версий платформы.

Команда сервисов Amazon SageMaker публикует предварительно упакованные образы контейнеров, которые оптимизированы для AWS, настроены и проверены. Обучение и вывод Дополнения поддерживаются и обновляются с помощью новых версий основных платформ глубокого обучения, таких как MXNet, PyTorch и TensorFlow. Образы DLC также можно настраивать, поскольку на них можно ссылаться как на базовый образ при определении нового Dockerfile при создании пользовательских образов: добавлять дополнительные зависимости и пакеты, добавлять стек пользовательского кода, определять переменные среды, добавлять точку входа и затем создайте и отправьте образ контейнера в Amazon ECR с помощью такого набора инструментов, как Finch, Podman или Docker.

Ускорение напрямую с помощью Amazon SageMaker

Непосредственный переход на Amazon SageMaker — еще один вариант предложения управляемой платформы для растущих команд машинного обучения. Этот путь может помочь ускорить запуск управляемой платформы машинного обучения, когда выделенные команды платформы Kubernetes недоступны или когда у команд машинного обучения нет инвестиций и набора навыков для Kubeflow.

Amazon SageMaker — это управляемый сервис машинного обучения, и мы можем передать операции, безопасность и обслуживание сервисной команде Amazon SageMaker. Сам сервис Amazon SageMaker имеет активную дорожную карту функций. Он предоставляет различные среды машинного обучения, в том числе интегрированную среду разработки машинного обучения (IDE) с Amazon SageMaker Studio, предназначенную для специалистов по данным, инженеров данных и инженеров MLOps, занимающихся разработкой, выпуском и обслуживанием моделей и приложений машинного обучения, использующих их.

Среда разработки Amazon SageMaker Studio похожа на пользовательский интерфейс Kubeflow Dashboard и включает в себя расширяющийся набор функций и компонентов жизненного цикла машинного обучения, поддерживаемых различными облачными сервисами AWS.

Возьмем, к примеру, Эксперименты SageMaker. Во многом так же, как и в случае с Kubeflow Experiments, эта функция помогает управлять этапом экспериментирования: специалисты повторяют обучение множеству различных моделей на начальном этапе разработки модели в поисках определенного набора вариантов, в результате которого получается модель, соответствующая ожиданиям. SageMaker Experiments — это журнал, который отслеживает отдельные прогоны и помогает группировать, просматривать и сравнивать экспериментальные модели, чтобы облегчить процесс выбора модели.

Аналогично Kubeflow Pipelines, SageMaker Pipelines реализует потоки управления как важнейший элемент систематизации, подключения и автоматизации шагов SDLC машинного обучения в повторяемые прогоны. Конвейеры выполняют направленные ациклические графы (DAG) взаимосвязанных действий, например, для конвейера повторного обучения модели. Конвейер переобучения может содержать этапы обработки данных, обучение модели, оценку модели и условные этапы регистрации модели. Конвейеры машинного обучения являются основным компонентом настройки MLOps, а конвейеры SageMaker поддерживаются AWS Code Pipeline и другими облачными сервисами.

Реестр моделей SageMaker — это хранилище метаданных для моделей машинного обучения, готовых к развертыванию и обслуживанию. Модели перечислены, зарегистрированы и имеют версии как пакеты моделей, причем каждый пакет содержит ссылку S3 URI на обученную модель и ссылку URI Amazon ECR на образ контейнера вывода. Пакеты моделей затем группируются в группы моделей, которые отслеживают варианты переобучения модели с течением времени.

Другой аспект использования SageMaker Studio в качестве платформы машинного обучения связан с ее управляемым сервисом, при котором мы перекладываем большую часть администрирования, обеспечения безопасности и обеспечения доступности на команду SageMaker.

Напротив, вариант с преимущественно самоуправлением, такой как «Kubeflow на AWS», предполагает, что команда платформы берет на себя операции, обрабатывает обновления версий Kubeflow и выполняет обязательства по доступности. Когда в процесс вовлечено все больше активных команд и пользователей машинного обучения или рабочие модели передаются в клиентские приложения с поддержкой машинного обучения, ставки на бесперебойное обслуживание могут возрасти.

Еще один набор вопросов касается сопутствующих сервисов вокруг SageMaker, которые продолжают развиваться по мере выпуска новых выпусков AWS. Например, SageMaker Projects нацелен на ускорение настройки рабочих процессов ML и инфраструктуры MLOps. Шаблоны проектов SageMaker, предоставляемые AWS, используют сервисы AWS для CI/CD, такие как AWS CodeBuild, AWS CodePipeline и AWS CodeCommit, которые можно адаптировать для интеграции с другими поддерживаемыми менеджерами исходного кода и системами сборки. Проекты SageMaker поддерживаются Каталогом сервисов AWS, и администраторы платформы могут включить предопределенные шаблоны проектов или определить свои собственные шаблоны AWS CloudFormation.

Amazon SageMaker также начинает выпускать интеграцию с Amazon Bedrock. Amazon SageMaker Studio JumpStart включает доступ к предварительно обученным генеративным моделям. SageMaker Experiments отслеживает тестирование различных моделей и конвейеров для управления большими языковыми моделями (LLM) и базовыми моделями (FM) в любом масштабе.

Выводы

Предоставление внутренних платформ разработки, обеспечивающих самообслуживание разработчиков, сыграло важную роль в поддержании производительности и уменьшении зависимости от передачи управления в жизненном цикле разработки программного обеспечения. Поскольку разработчики прикладного программного обеспечения расширяют возможности продуктов на основе машинного обучения, мы теперь стремимся расширить внутренние платформы для удовлетворения конкретных требований жизненного цикла машинного обучения.

Предоставление платформ машинного обучения растущим командам специалистов по обработке данных и инженеров становится критически важным для поддержания производительности и сотрудничества на протяжении расширенного жизненного цикла разработки программного обеспечения и машинного обучения.

Команды машинного обучения с обширным опытом Kubeflow могут быть подключены к платформе машинного обучения Kubeflow on AWS, настроенной с высокой доступностью, безопасностью резервного копирования и восстановления, а также мониторингом. Команды разработчиков программного обеспечения и машинного обучения, не имеющие специального контекста в Kubeflow, могут быть подключены непосредственно к Amazon SageMaker Studio.

Подпишитесь на меня на Medium и в LinkedIn Исмаил ЛАМААКАЛ