Позвольте инженерам машинного обучения обучать, развертывать и прогнозировать модели (ML) в облаке AWS простым и экономичным способом.
Введение
Amazon SageMaker - это полностью управляемый сервис, который позволяет специалистам по данным и инженерам машинного обучения быстро создавать, обучать и развертывать модели и конвейеры машинного обучения легко масштабируемым и экономичным способом. SageMaker был запущен примерно в ноябре 2017 года, и у меня была возможность узнать о встроенных алгоритмах и функциях SageMaker от Криса Скринака во время выездного семинара для партнеров Amazon. За этот период SageMaker значительно повзрослел, чтобы позволить инженерам машинного обучения быстро и масштабируемо развертывать и отслеживать модели. Помимо встроенных алгоритмов, появилось много новых функций, таких как AutoPilot, Model Clarify и Feature Store, Docker Container. В этом блоге будут рассмотрены эти новые функции SageMaker и способ обучения без использования сервера, развертывание и вывод в реальном времени.
Архитектура
Шаги для приведенной ниже эталонной архитектуры объясняются в конце раздела этой статьи о конвейере SageMaker.
Возможности SageMaker
A) Машинное обучение Auto Pilot-Low Code
- Запущен примерно в декабре 2019 г.
- Первое в отрасли автоматизированное машинное обучение, обеспечивающее контроль и прозрачность моделей машинного обучения
- Выполняет обработку функций, выбирает лучший алгоритм, обучает и выбирает лучшую модель всего за несколько кликов
- Вертикальные сервисы искусственного интеллекта, такие как Amazon Personalize и Amazon Forecast, можно использовать для персонализированных рекомендаций и прогнозирования проблем.
- AutoPilot - это общий сервис машинного обучения для всех видов задач классификации и регрессии, таких как обнаружение мошенничества, анализ оттока и целевой маркетинг.
- Поддерживает встроенные алгоритмы SageMaker, такие как xgboost и linear Learner
- Максимальный размер входного набора данных по умолчанию составляет 5 ГБ, но его можно увеличить только в ГБ.
Демонстрация автопилота
Данные для эксперимента с автопилотом
Рассматриваемый набор данных является общедоступными данными, предоставленными UCI.
Информация о наборе данных:
Данные опроса описывают различные сценарии вождения, включая пункт назначения, текущее время, погоду, количество пассажиров и т. Д., А затем спрашивают человека, примет ли он купон, если он является водителем. Задача, которую мы будем выполнять с этим набором данных, - это Классификация
Эксперимент с автопилотом
Импортируйте данные для обучения.
%%sh wget https://archive.ics.uci.edu/ml/machine-learning-databases/00603/in-vehicle-coupon-recommendation.csv
После загрузки данных AutoPilot можно настроить за считанные минуты с помощью студии SageMaker. Добавьте пути обучающих входных и выходных данных, метку для прогнозирования и включения автоматического развертывания модели. SageMaker развертывает лучшую модель и создает конечную точку после успешного обучения.
В качестве альтернативы можно выбрать модель по своему желанию и развернуть ее.
Конфигурации конечных точек и сведения о конечных точках развернутой модели можно найти в консоли.
Вывести и оценить модель
Возьмите запись проверки и вызовите конечную точку. Задачи разработки функций выполняются автопилотом, поэтому необработанные данные функций могут сделать вывод об обученной модели и спрогнозировать.
No Urgent Place,Friend(s),Sunny,80,10AM,Carry out & Take away,2h,Female,21,Unmarried partner,1,Some college - no degree,Unemployed,$37500 - $49999,,never,never,,4~8,1~3,1,1,0,0,1,1
Сделайте вывод о модели, используя набор данных проверки, используя код, приведенный в Github.
Б) Уточнение SageMaker
- Запущен примерно в декабре 2020 г.
- Объясняет, как модели машинного обучения (ML) делали прогнозы во время экспериментов с автопилотом.
- Отслеживает дрейф смещения для моделей в производстве
- Предоставляет компоненты, которые помогают клиентам AWS создавать менее предвзятые и более понятные модели машинного обучения.
- Предоставляет объяснения для отдельных прогнозов, доступных через API.
- Помогает в создании модели управления для приложений машинного обучения.
Информация о смещении может быть получена для эксперимента с автопилотом.
bias_data_config = sagemaker.clarify.DataConfig( s3_data_input_path=training_data_s3_uri, s3_output_path=bias_report_1_output_path, label="Y", headers=train_cols, dataset_type="text/csv", ) model_config = sagemaker.clarify.ModelConfig( model_name=model_name, instance_type=train_instance_type, instance_count=1, accept_type="text/csv", )
В) Магазин функций SageMaker
- Запущен примерно в декабре 2020 г.
- Amazon SageMaker Feature Store - это полностью управляемый репозиторий для хранения, обновления, извлечения и совместного использования функций машинного обучения (ML) в S3.
- Набор функций, который использовался для обучения модели, должен быть доступен для прогнозирования в реальном времени (вывода).
- Data Wrangler из SageMaker Studio можно использовать для разработки функций и загрузки функций в хранилище функций.
- Магазин функций - как онлайн-магазины, так и офлайн-магазины могут быть загружены через отдельный канал разработки с помощью SDK
- Источники потоковой передачи могут напрямую загружать функции в онлайн-магазин функций для вывода или создания функций.
- Магазин функций автоматически создает каталог данных Amazon Glue при создании групп функций, и при необходимости его можно отключить.
В таблице ниже показаны различные хранилища данных, используемые для поддержки функций. Некоторые платформы с открытым исходным кодом, такие как Feast, превратились в платформу хранилища функций, и любое хранилище данных типа "ключ-значение", поддерживающее быстрый поиск, можно использовать в качестве хранилища функций.
Хранилища функций являются конечным этапом конвейера разработки функций, и функции могут храниться в облачных хранилищах данных, таких как Snowflake и RedShift, как показано на рисунке ниже.
record_identifier_value = str(2990130) featurestore_runtime.get_record(FeatureGroupName=transaction_feature_group_name, RecordIdentifierValueAsString=record_identifier_value)
Группа функций также доступна как внешняя таблица Hive.
CREATE EXTERNAL TABLE IF NOT EXISTS sagemaker_featurestore.coupon ( write_time TIMESTAMP event_time TIMESTAMP is_deleted BOOLEAN ) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat' OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat' LOCATION 's3://coupon-featurestore/onlinestore/139219451296/sagemaker/ap-south-1/offline-store/coupon-1621050755/data'
D) Конвейеры SageMaker
- Запущен примерно в декабре 2020 г.
- SageMaker изначально поддерживает MLOPS через проект SageMaker, а конвейеры создаются во время создания проекта SageMaker.
- MLOPS - это стандарт для оптимизации непрерывной поставки моделей. Это необходимо для успешного применения машинного обучения промышленного уровня.
- Конвейер SageMaker - это серия взаимосвязанных шагов, которые определены определением конвейера JSON для выполнения сборки, обучения и развертывания или только обучения и развертывания и т. Д.
- Альтернативными способами настройки MLOPS в SageMaker являются Mlflow, Airflow и Kubeflow, Step Functions и т. Д.
Контейнеры Docker
Сама SageMaker Studio запускается из контейнера Docker. Контейнеры докеров можно использовать для миграции существующих локальных конвейеров и моделей живого машинного обучения в среду SageMaker.
Могут быть созданы конвейеры вывода как с сохранением состояния, так и без него. Например, конвейеры обнаружения аномалий и мошенничества не имеют состояния, а пример, рассмотренный в этой статье, представляет собой конвейер вывода модели с отслеживанием состояния.
Демонстрация контейнера SageMaker
Загрузите папку Github. В папке контейнера должны отображаться файлы, как показано на изображении.
Набор данных такой же, как мы рассматривали для эксперимента с автопилотом.
Алгоритм sckit-learn используется для локального обучения и настройки модели. После различных итераций менее важные функции были удалены, а затем было выполнено кодирование ключевых функций.
Окончательно закодированные объекты (97 меток) хранятся в coupon_train.csv и будут использоваться для обучения и проверки на местном уровне.
Сборка контейнера Docker
Следующие шаги должны быть выполнены упорядоченным образом.
- Создайте изображение
docker build -t recommend-in-vehicle-coupon:latest .
2. Обучите функции в локальном режиме
./train_local.sh recommend-in-vehicle-coupon:latest
3. Обслуживать модель в локальном режиме
./serve_local.sh recommend-in-vehicle-coupon:latest
Серверы работают и ждут запроса.
4. Прогнозирование на местном уровне
В payload.csv будут функции для прогнозирования модели. Выполните команду ниже, чтобы предсказать ответ для функций, доступных в CSV.
./predict.sh payload.csv
Как только запрос будет принят, серверы, которые слушают, ответят на полученные запросы.
5. Отправить изображение
После завершения локального тестирования образ контейнерного поезда, развертывания и обслуживания можно отправить в AWS ECR. В случае, если какое-либо изменение кода сделано, достаточно только финальной сборки и шага push.
./build_and_push.sh
Развернутый образ контейнера
Образы AWS ECR можно извлекать, а контейнеры запускать из Lambda, AWS EKS и т. Д.
Лямбда-функция
Вызовы API SageMaker, предназначенные для обучения, развертывания и вывода, создаются как лямбда-функции. Затем развернутую функцию обработчика Lambda следует интегрировать со шлюзом API, чтобы конвейер можно было запустить для любого инициированного события API.
Лямбда-функция, хранящаяся в Github, состоит из трех основных блоков.
Создание обучающей программы SageMaker
Лямбда прочитает функции из s3 и завершит обучение.
client = boto3.client("sagemaker", region_name=region) client.create_training_job(**create_training_params) status = client.describe_training_job(TrainingJobName=job_name)["TrainingJobStatus"]
Создание модели и конечной точки SageMaker
Создайте модель
Во время обучения модели артефакты будут помещены в s3, и эта модель должна быть зарегистрирована в SageMaker.
Зарегистрируйте модели в среде SageMaker, используя приведенный ниже вызов API.
create_model_response = client.create_model( ModelName=model_name, ExecutionRoleArn=role, PrimaryContainer=primary_container )
Создать конфигурацию конечной точки
response = client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { 'VariantName': 'variant-1', 'ModelName': model_name, 'InitialInstanceCount': 1, 'InstanceType': 'ml.t2.medium' } ] )
Создать конечную точку
response = client.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name )
Вызов функции модели SageMaker
На основе сообщения тела запроса API конечная точка будет вызываться Lambda.
response = client.invoke_endpoint( EndpointName=EndpointName, Body=event_body.encode('utf-8'), ContentType='text/csv' )
Состояние рабочей конечной точки и запросы, сделанные к конечной точке, можно проверить в журналах наблюдения за облаком.
Тестирование вывода в реальном времени с полным состоянием
Запуск обучения SageMaker
После интеграции шлюза API и Lambda можно запустить задание Training Job, передав тело запроса ниже в функцию Lambda.
{"key":"train_data"}
Запуск модели SageMaker и развертывание конечной точки
После завершения учебной работы разверните модель с приведенным ниже телом запроса. Учебная работа должна быть той работой, которую мы создали недавно.
{"key" : "deploy_model", "training_job" :"<training job name>" }
Запуск конечной точки модели SageMaker
Вызовите конечную точку с помощью следующего запроса. Функция закодирована и должна быть такой же, как мы использовали для обучения.
Ожидаемый ответ будет таким, как показано ниже.
События, созданные во время вызова, можно просмотреть в журналах облачного наблюдения.
Вывод
Затраты на логические выводы машинного обучения составляют более 80% операционных затрат на выполнение рабочих нагрузок машинного обучения. Возможности SageMaker, такие как оркестровка контейнеров, многомодельная конечная точка, бессерверный вывод, могут сэкономить как эксплуатационные расходы, так и затраты на разработку. Кроме того, конвейеры обучения и вывода, основанные на событиях, могут позволить любому нетехническому специалисту из отдела продаж или маркетинга обновлять как пакетные прогнозы, так и прогнозы в реальном времени одним нажатием кнопки, созданной с использованием таких механизмов, как API, веб-перехватчики со своего портала продаж. на специальной основе перед запуском своей кампании.