Масштабируйте обучение и логические выводы тысяч моделей машинного обучения с помощью Amazon SageMaker | Веб-сервисы Амазонки

Масштабируйте обучение и логические выводы тысяч моделей машинного обучения с помощью Amazon SageMaker | Веб-сервисы Амазонки

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

Для обучения и обслуживания тысяч моделей требуется надежная и масштабируемая инфраструктура. Создатель мудреца Амазонки может помочь. SageMaker — это полностью управляемая платформа, которая позволяет разработчикам и специалистам по обработке и анализу данных быстро создавать, обучать и развертывать модели машинного обучения, а также предлагает экономию средств за счет использования облачной инфраструктуры AWS.

В этом посте мы рассмотрим, как вы можете использовать функции SageMaker, в том числе Обработка Amazon SageMaker, обучающие задания SageMaker и мультимодельные конечные точки (MME) SageMaker для обучения и обслуживания тысяч моделей экономичным способом. Чтобы начать работу с описанным решением, вы можете обратиться к прилагаемой записной книжке на GitHub.

Вариант использования: прогнозирование энергопотребления

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

В сгенерированном наборе данных есть три функции:

  • Пользовательский ИД – Это целочисленный идентификатор для каждого клиента в диапазоне от 0 до 999.
  • отметка времени – Это значение даты/времени, указывающее время, когда было измерено потребление энергии. Временные метки генерируются случайным образом между начальной и конечной датами, указанными в коде.
  • потребление – это значение с плавающей запятой, указывающее потребление энергии, измеренное в какой-то условной единице. Значения потребления генерируются случайным образом в диапазоне от 0 до 1,000 с синусоидальной сезонностью.

Обзор решения

Чтобы эффективно обучать и обслуживать тысячи моделей машинного обучения, мы можем использовать следующие функции SageMaker:

  • Обработка SageMaker – SageMaker Processing – это полностью управляемая служба подготовки данных, которая позволяет выполнять задачи по обработке данных и оценке модели на входных данных. Вы можете использовать SageMaker Processing для преобразования необработанных данных в формат, необходимый для обучения и логических выводов, а также для запуска пакетной и онлайн-оценки ваших моделей.
  • Вакансии для обучения SageMaker – Учебные задания SageMaker можно использовать для обучения моделей различным алгоритмам и типам входных данных, а также указывать вычислительные ресурсы, необходимые для обучения.
  • MME SageMaker – Конечные точки с несколькими моделями позволяют размещать несколько моделей в одной конечной точке, что упрощает предоставление прогнозов из нескольких моделей с использованием одного API. MME SageMaker могут сэкономить время и ресурсы за счет сокращения количества конечных точек, необходимых для обслуживания прогнозов из нескольких моделей. MME поддерживают размещение как моделей с поддержкой CPU, так и GPU. Обратите внимание, что в нашем сценарии мы используем 1,000 моделей, но это не ограничение самого сервиса.

Следующая диаграмма иллюстрирует архитектуру решения.

архитектура, отображающая описанный процесс

Рабочий процесс включает в себя следующие шаги:

  1. Мы используем SageMaker Processing для предварительной обработки данных, создания одного CSV-файла для каждого клиента и сохранения его в Простой сервис хранения Amazon (Amazon S3).
  2. Задание обучения SageMaker настроено на считывание выходных данных задания обработки SageMaker и их циклическое распределение по обучающим экземплярам. Обратите внимание, что это также может быть достигнуто с помощью Конвейеры Amazon SageMaker.
  3. Артефакты модели сохраняются в Amazon S3 заданием обучения и обслуживаются непосредственно из SageMaker MME.

Масштабируйте обучение на тысячи моделей

Масштабирование обучения тысяч моделей возможно с помощью distribution параметр ОбучениеВвод в SageMaker Python SDK, который позволяет указать, как данные распределяются между несколькими экземплярами обучения для задания обучения. Есть три варианта для distribution Параметр: FullyReplicated, ShardedByS3Keyи ShardedByRecord, ShardedByS3Key Параметр означает, что обучающие данные разделены по ключу объекта S3, при этом каждый обучающий экземпляр получает уникальное подмножество данных, что позволяет избежать дублирования. После того, как SageMaker скопирует данные в обучающие контейнеры, мы можем прочитать структуру папок и файлов, чтобы обучить уникальную модель для каждого файла клиента. Ниже приведен пример фрагмента кода:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

В каждом учебном задании SageMaker сохраняется модель, сохраненная в /opt/ml/model папку учебного контейнера перед его архивированием в model.tar.gz файл, а затем загружает его в Amazon S3 после завершения обучения. Опытные пользователи также могут автоматизировать этот процесс с помощью SageMaker Pipelines. При сохранении нескольких моделей с помощью одного и того же задания обучения SageMaker создает один model.tar.gz файл, содержащий все обученные модели. Тогда это будет означать, что для обслуживания модели нам нужно сначала распаковать архив. Чтобы избежать этого, мы используем контрольно-пропускные пункты для сохранения состояния отдельных моделей. SageMaker позволяет копировать контрольные точки, созданные во время задания обучения, в Amazon S3. Здесь контрольные точки должны быть сохранены в заранее указанном месте, по умолчанию /opt/ml/checkpoints. Эти контрольные точки можно использовать для возобновления обучения в более поздний момент или в качестве модели для развертывания на конечной точке. Общий обзор того, как учебная платформа SageMaker управляет путями хранения наборов обучающих данных, артефактов моделей, контрольных точек и выходных данных между облачным хранилищем AWS и заданиями обучения в SageMaker, см. Папки Amazon SageMaker Training Storage для обучающих наборов данных, контрольных точек, артефактов модели и выходных данных.

В следующем коде используется фиктивный model.save() функция внутри train.py скрипт, содержащий логику обучения:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Масштабируйте логические выводы до тысяч моделей с помощью SageMaker MME

MME SageMaker позволяют обслуживать несколько моделей одновременно, создавая конфигурацию конечной точки, включающую список всех обслуживаемых моделей, а затем создавая конечную точку с использованием этой конфигурации конечной точки. Нет необходимости повторно развертывать конечную точку каждый раз, когда вы добавляете новую модель, поскольку конечная точка будет автоматически обслуживать все модели, хранящиеся в указанных путях S3. Это достигается с Сервер с несколькими моделями (MMS), инфраструктура с открытым исходным кодом для обслуживания моделей машинного обучения, которую можно установить в контейнеры, чтобы обеспечить внешний интерфейс, отвечающий требованиям для новых API контейнеров MME. Кроме того, вы можете использовать другие модели серверов, включая ФакелСервировать и Тритон. MMS можно установить в ваш пользовательский контейнер через Набор инструментов для логического вывода SageMaker. Чтобы узнать больше о том, как настроить файл Dockerfile для включения MMS и использовать его для обслуживания своих моделей, см. Создайте свой собственный контейнер для мультимодальных конечных точек SageMaker.

В следующем фрагменте кода показано, как создать MME с помощью SageMaker Python SDK:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Когда MME работает, мы можем вызвать его для генерации прогнозов. Вызовы можно выполнять в любом AWS SDK, а также в SageMaker Python SDK, как показано в следующем фрагменте кода:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

При вызове модели модель изначально загружается из Amazon S3 в инстанс, что может привести к «холодному» запуску при вызове новой модели. Часто используемые модели кэшируются в памяти и на диске, чтобы обеспечить вывод с малой задержкой.

Заключение

SageMaker — это мощная и экономичная платформа для обучения и обслуживания тысяч моделей машинного обучения. Его функции, в том числе SageMaker Processing, учебные задания и MME, позволяют организациям эффективно обучать и обслуживать тысячи моделей в любом масштабе, а также извлекать выгоду из преимуществ экономии средств за счет использования облачной инфраструктуры AWS. Чтобы узнать больше о том, как использовать SageMaker для обучения и обслуживания тысяч моделей, см. Данные обработки, Обучите модель с помощью Amazon SageMaker и Размещайте несколько моделей в одном контейнере за одной конечной точкой.


Об авторах

Изображение ДавидеДавиде Галлителли является специалистом по разработке решений для AI/ML в регионе EMEA. Он базируется в Брюсселе и тесно сотрудничает с клиентами из стран Бенилюкса. Он был разработчиком с самого раннего возраста, начав программировать в возрасте 7 лет. Он начал изучать AI/ML в университете и с тех пор влюбился в него.

Изображение МорицМориц де Гроот является архитектором решений в Amazon Web Services, базирующейся в Амстердаме. Ему нравится работать над темами, связанными с машинным обучением, и он любит стартапы. В свободное время любит кататься на лыжах и играть в сквош.

Отметка времени:

Больше от Машинное обучение AWS