AWS SageMaker ML DevOps tooling / архитектура — Kubeflow?

#machine-learning #amazon-sagemaker #kubeflow-pipelines

#машинное обучение #amazon-sagemaker #kubeflow-конвейеры

Вопрос:

Мне поручено определить инструменты AWS для разработки ML в компании среднего размера. Предположим, что около дюжины инженеров ML плюс другие сотрудники DevOps знакомы с бессерверными (лямбды и фреймворк). Основные вопросы: а) что такое архитектура, которая позволяет решать основные задачи, связанные с разработкой ML (создание, обучение, подгонка моделей, предварительная обработка данных, оптимизация гиперпараметров, управление заданиями, упаковка бессерверных сервисов, сбор метрик модели и т. Д.), б) какие основные инструменты, которыеможет использоваться для упаковки и развертывания вещей и c) какие инструменты разработки (IDE, SDK, «фреймворки») используются для этого? Я просто хочу отложить ноутбуки Jupyter на секунду. Ноутбуки Jupyter отлично подходят для проверки правильности концепций и максимально приближены к PowerPoint для управления… Но у меня проблема с ноутбуками, когда я думаю о развертываемых единицах кода.
Моя интуиция указывает на предварительную целевую архитектуру из 5 частей:

1 — «Ядро» с моделями ML, поддерживающими базовые операции с моделями (создание пустых, создание предварительно подготовленных, обучение, тестирование / подгонка и т. Д.). Я предвижу основные сценарии Python здесь — без проблем.

2- (необязательно) «Контейнерный набор вещей», который выполняет оптимизацию гиперпараметров и / или управление версиями модели

3- «модульный модуль Python-scripts-around-models», который предоставляет API, выполняет управление заданиями и включает предварительную обработку данных. Это также считывает и записывает в сегменты S3.

4 — «Бессерверный уровень» с высокоуровневым API (на Python). Он ссылается на # 3 и / или # 1 выше.

5. Какой-нибудь контейнер или пакет, который будет распаковывать файлы из Git и развертывать их в различных сервисах AWS, создавая вещи из предыдущих 3 пунктов.

Как вы можете видеть, мои термины довольно расплывчаты 🙂 Если кто-то может уточнить термины, которые будут полезны. Моя интуиция и мои предварительные показания говорят о том, что ответ, скорее всего, будет включать локальную среду разработки, такую как PyCharm или Anaconda, или облачную среду разработки (что это может быть? — пожалуйста, не упоминайте ноутбуки). Вопрос, который мне не совсем понятен, — это # 5. Кандидаты включают компоненты Amazon SageMaker для конвейеров Kubeflow и / или компоненты Amazon SageMaker для конвейеров Kubeflow и / или AWS Step Functions DS SDK для SageMaker. Однако мне неясно, как они могут выполнять # 5. Kubeflow выглядит очень интересно, но достаточно ли он принят или он умрет через 2 года? Являются ли компоненты Amazon SageMaker для конвейеров Kubeflow, компоненты Amazon SageMaker для конвейеров Kubeflow и AWS Step Functions DS SDK для SageMaker взаимоисключающими? Как каждый из них может помочь с «контейнеризацией вещей» и базовыми задачами подготовки и развертывания?

Ответ №1:

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

1- CI / CDeployment: в этом образе docker будет проходить такие этапы, как сборка, тестирование и отправка версионного обучающего образа в реестр. Вы также можете выполнять обучение в них и хранить версионную модель, используя ссылки на git. введите описание изображения здесь

2- Непрерывное обучение: здесь мы имеем дело с конвейером ML. Автоматизация процесса с использованием новых данных для переобучения моделей. Это становится очень полезным, когда вам приходится запускать весь конвейер ML с новыми данными или новой реализацией.

Инструменты для реализации: конвейеры Kubeflow, Sagemaker, Nuclio введите описание изображения здесь

3- Непрерывная доставка: где?? В облаке или на границе? В облаке вы можете использовать KF serving или использовать sage maker с конвейерами kubeflow и развернуть модель с помощью sagemaker через Kubeflow.

Sagemaker и Kubeflow каким-то образом предоставляют одинаковые функциональные возможности, но каждый из них обладает своей уникальной силой. Kubeflow обладает мощью kubernetes, конвейеров, переносимости, кэша и артефактов, в то время как Sagemaker обладает мощью управляемой инфраструктуры и возможностями масштабирования с 0 и сервисами AWS ML, такими как Athena или Groundtruth.

Решение:

Автономные конвейеры Kubeflow AWS Sagemaker (модель обучения обслуживания) Lambda для запуска конвейеров из S3 или Kinesis.

Требуется дополнительная информация.

 -Kubernettess cluster (Atleast 1 m5)
-MinIo or S3 
-Container registry
-Sagemaker credentials
-MySQL or RDS  
-Loadbalancer
-Ingress for using kubeflow SDK
 

Снова вы задали мне мой годовой путь в одном вопросе. Если вам интересно, давайте подключимся 🙂

Разрешения:

 Kube --> registry (Read)
Kube --> S3 (Read, Write)
Kube --> RDS (Read, Write)
Lambda --> S3 (Read)
Lambda --> Kube (API Access) 
Sagemaker --> S3, Registery
 

Хорошее начальное руководство

https://github.com/kubeflow/pipelines/tree/master/manifests/kustomize/env/aws

https://aws.amazon.com/blogs/machine-learning/introducing-amazon-sagemaker-components-for-kubeflow-pipelines/

https://github.com/shashankprasanna/kubeflow-pipelines-sagemaker-examples/blob/master/kfp-sagemaker-custom-container.ipynb