#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