Параллельная обработка данных с помощью RStudio на Amazon SageMaker

В прошлом году мы объявили об общедоступности RStudio на Amazon SageMaker, первая в отрасли полностью управляемая интегрированная среда разработки (IDE) RStudio Workbench в облаке. Вы можете быстро запустить знакомую интегрированную среду разработки RStudio и переключаться между базовыми вычислительными ресурсами, не прерывая работу, что упрощает создание решений машинного обучения (ML) и аналитики на R в любом масштабе.

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

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

В Создатель мудреца Амазонки, многие клиенты используют Обработка SageMaker чтобы помочь реализовать параллельную обработку данных. С помощью SageMaker Processing вы можете использовать упрощенный управляемый интерфейс SageMaker для выполнения рабочих нагрузок по обработке данных, таких как разработка функций, проверка данных, оценка модели и интерпретация модели. Это дает много преимуществ, поскольку отсутствует долговременная инфраструктура, которой нужно было бы управлять: экземпляры обработки останавливаются после завершения заданий, среды можно стандартизировать с помощью контейнеров, данные внутри Простой сервис хранения Amazon (Amazon S3) изначально распределяется между экземплярами, а настройки инфраструктуры являются гибкими с точки зрения памяти, вычислений и хранилища.

SageMaker Processing предлагает варианты распространения данных. Для параллельной обработки данных необходимо использовать Параметр ShardedByS3Key для S3DataDistributionType.. Если выбран этот параметр, SageMaker Processing принимает предоставленный n экземпляры и распределять объекты 1/n объекты из источника входных данных в экземплярах. Например, если два экземпляра снабжены четырьмя объектами данных, каждый экземпляр получает два объекта.

Для запуска заданий обработки SageMaker Processing требуются три компонента:

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

Процесс изображен на следующей схеме.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

В этом посте мы покажем вам, как использовать RStudio в SageMaker для взаимодействия с серией заданий обработки SageMaker для создания параллельного конвейера обработки данных с использованием Язык программирования R.

Решение состоит из следующих шагов:

  1. Настройте проект RStudio.
  2. Создайте и зарегистрируйте образ контейнера обработки.
  3. Запустите двухэтапный конвейер обработки:
    1. На первом этапе берется несколько файлов данных и обрабатывается их с помощью серии заданий обработки.
    2. На втором этапе выходные файлы объединяются и разбиваются на наборы данных обучения, тестирования и проверки.

Предпосылки

Выполните следующие предварительные условия:

  1. Настройте RStudio в SageMaker Workbench. Для получения дополнительной информации см. Анонс полностью управляемой RStudio на Amazon SageMaker для специалистов по данным.
  2. Создайте пользователя RStudio в SageMaker с соответствующими правами доступа.

Настройте проект RStudio

Чтобы настроить проект RStudio, выполните следующие шаги:

  1. Перейдите к своему Студия Amazon SageMaker панель управления на консоли SageMaker.
  2. Запустите свое приложение в среде RStudio.
    Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  3. Начните новый сеанс RStudio.
  4. Что касается Имя сеансавведите имя.
  5. Что касается Тип экземпляра и Фото товара, используйте настройки по умолчанию.
  6. Выберите Начать сессию.
    Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  7. Перейдите в сеанс.
  8. Выберите Новый проект, Контроль версий, а затем Выберите Git.
  9. Что касается URL-адрес репозитория, войти https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Остальные параметры оставьте по умолчанию и выберите Создать проект.
    Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Вы можете перейти к aws-parallel-data-processing-R каталог на Файлы вкладка для просмотра репозитория. Репозиторий содержит следующие файлы:

  • Container_Build.rmd
  • /dataset
    • bank-additional-full-data1.csv
    • bank-additional-full-data2.csv
    • bank-additional-full-data3.csv
    • bank-additional-full-data4.csv
  • /docker
  • Dockerfile-Processing
  • Parallel_Data_Processing.rmd
  • /preprocessing
    • filter.R
    • process.R

Создайте контейнер

На этом этапе мы создаем образ контейнера обработки и отправляем его в Реестр Amazon Elastic Container (Амазонка ECR). Выполните следующие шаги:

  1. Перейдите в Container_Build.rmd .
  2. Установить Интерфейс командной строки сборки образа SageMaker Studio запустив следующую ячейку. Прежде чем выполнять этот шаг, убедитесь, что у вас есть необходимые разрешения. Это интерфейс командной строки, предназначенный для отправки и регистрации образов контейнеров в Studio.
    pip install sagemaker-studio-image-build

  3. Запустите следующую ячейку, чтобы построить и зарегистрировать наш контейнер обработки:
    /home/sagemaker-user/.local/bin/sm-docker build . --file ./docker/Dockerfile-Processing --repository sagemaker-rstudio-parallel-processing:1.0

После успешного выполнения задания вы получите вывод, который выглядит следующим образом:

Image URI: <Account_Number>.dkr.ecr.<Region>.amazonaws.com/sagemaker-rstudio- parallel-processing:1.0

Запуск конвейера обработки

После создания контейнера перейдите к Parallel_Data_Processing.rmd файл. Этот файл содержит ряд шагов, которые помогут нам создать конвейер параллельной обработки данных с помощью SageMaker Processing. На следующей диаграмме показаны этапы конвейера, которые мы завершаем.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Начните с выполнения шага импорта пакета. Импортируйте необходимые пакеты RStudio вместе с SageMaker SDK:

suppressWarnings(library(dplyr))
suppressWarnings(library(reticulate))
suppressWarnings(library(readr))
path_to_python <- system(‘which python’, intern = TRUE)

use_python(path_to_python)
sagemaker <- import('sagemaker')

Теперь настройте роль выполнения SageMaker и сведения о среде:

role = sagemaker$get_execution_role()
session = sagemaker$Session()
bucket = session$default_bucket()
account_id <- session$account_id()
region <- session$boto_region_name
local_path <- dirname(rstudioapi::getSourceEditorContext()$path)

Инициализируйте контейнер, который мы создали и зарегистрировали на предыдущем этапе:

container_uri <- paste(account_id, "dkr.ecr", region, "amazonaws.com/sagemaker-rstudio-parallel-processing:1.0", sep=".")
print(container_uri)

Отсюда мы углубимся в каждый из этапов обработки более подробно.

Загрузите набор данных

Для нашего примера мы используем Набор данных банковского маркетинга от UCI. Мы уже разделили набор данных на несколько файлов меньшего размера. Запустите следующий код, чтобы загрузить файлы на Amazon S3:

local_dataset_path <- paste0(local_path,"/dataset/")

dataset_files <- list.files(path=local_dataset_path, pattern=".csv$", full.names=TRUE)
for (file in dataset_files){
  session$upload_data(file, bucket=bucket, key_prefix="sagemaker-rstudio-example/split")
}

input_s3_split_location <- paste0("s3://", bucket, "/sagemaker-rstudio-example/split")

После загрузки файлов перейдите к следующему шагу.

Выполнять параллельную обработку данных

На этом этапе мы берем файлы данных и выполняем разработку функций, чтобы отфильтровать определенные столбцы. Это задание распределяется по нескольким экземплярам обработки (в нашем примере мы используем два).

Мы используем filter.R файл для обработки данных и настройте задание следующим образом:

filter_processor <- sagemaker$processing$ScriptProcessor(command=list("Rscript"),
                                                        image_uri=container_uri,
                                                        role=role,
                                                        instance_count=2L,
                                                        instance_type="ml.m5.large")

output_s3_filter_location <- paste0("s3://", bucket, "/sagemaker-rstudio-example/filtered")
s3_filter_input <- sagemaker$processing$ProcessingInput(source=input_s3_split_location,
                                                        destination="/opt/ml/processing/input",
                                                        s3_data_distribution_type="ShardedByS3Key",
                                                        s3_data_type="S3Prefix")
s3_filter_output <- sagemaker$processing$ProcessingOutput(output_name="bank-additional-full-filtered",
                                                         destination=output_s3_filter_location,
                                                         source="/opt/ml/processing/output")

filtering_step <- sagemaker$workflow$steps$ProcessingStep(name="FilterProcessingStep",
                                                      code=paste0(local_path, "/preprocessing/filter.R"),
                                                      processor=filter_processor,
                                                      inputs=list(s3_filter_input),
                                                      outputs=list(s3_filter_output))

Как упоминалось ранее, при запуске задания параллельной обработки данных вы должны настроить входной параметр, указав способ сегментирования данных и тип данных. Поэтому мы предоставляем метод шардинга S3Prefix:

s3_data_distribution_type="ShardedByS3Key",
                                                      s3_data_type="S3Prefix")

После того как вы вставите эти параметры, SageMaker Processing равномерно распределит данные по количеству выбранных экземпляров.

При необходимости настройте параметры, а затем запустите ячейку, чтобы создать экземпляр задания.

Создание наборов данных для обучения, тестирования и проверки

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

Мы используем process.R файл для обработки данных и настройте задание следующим образом:

script_processor <- sagemaker$processing$ScriptProcessor(command=list("Rscript"),
                                                         image_uri=container_uri,
                                                         role=role,
                                                         instance_count=1L,
                                                         instance_type="ml.m5.large")

output_s3_processed_location <- paste0("s3://", bucket, "/sagemaker-rstudio-example/processed")
s3_processed_input <- sagemaker$processing$ProcessingInput(source=output_s3_filter_location,
                                                         destination="/opt/ml/processing/input",
                                                         s3_data_type="S3Prefix")
s3_processed_output <- sagemaker$processing$ProcessingOutput(output_name="bank-additional-full-processed",
                                                         destination=output_s3_processed_location,
                                                         source="/opt/ml/processing/output")

processing_step <- sagemaker$workflow$steps$ProcessingStep(name="ProcessingStep",
                                                      code=paste0(local_path, "/preprocessing/process.R"),
                                                      processor=script_processor,
                                                      inputs=list(s3_processed_input),
                                                      outputs=list(s3_processed_output),
                                                      depends_on=list(filtering_step))

Отрегулируйте необходимые параметры, а затем запустите ячейку, чтобы создать экземпляр задания.

Запустить конвейер

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

pipeline = sagemaker$workflow$pipeline$Pipeline(
  name="BankAdditionalPipelineUsingR",
  steps=list(filtering_step, processing_step)
)

upserted <- pipeline$upsert(role_arn=role)
execution <- pipeline$start()

execution$describe()
execution$wait()

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

Перейдите в консоль SageMaker, чтобы увидеть все ваши задания по обработке.

Начнем с задания фильтрации, как показано на следующем снимке экрана.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

По завершении конвейер переходит к заданию обработки данных.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Когда оба задания будут выполнены, перейдите к корзине S3. Загляните в sagemaker-rstudio-example папка, под processed. Вы можете просмотреть файлы наборов обучающих, тестовых и проверочных данных.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Заключение

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

Дополнительные сведения о функциях и службах, используемых в этом решении, см. RStudio на Amazon SageMaker и Обработка Amazon SageMaker.


Об авторах

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Радж Патхак является архитектором решений и техническим консультантом для клиентов из списка Fortune 50 и среднего размера FSI (банковское дело, страхование, рынки капитала) в Канаде и США. Радж специализируется на машинном обучении с приложениями для извлечения документов, преобразования контакт-центра и компьютерного зрения.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Джейк Вен — архитектор решений в AWS, увлекающийся обучением машинному обучению и обработке естественного языка. Джейк помогает клиентам малого и среднего бизнеса с помощью дизайна и идейного лидерства создавать и развертывать приложения в большом масштабе. Помимо работы, он увлекается пешим туризмом.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Адити Раджниш учится на первом курсе по разработке программного обеспечения в Университете Ватерлоо. Ее интересы включают компьютерное зрение, обработку естественного языка и граничные вычисления. Она также увлечена общественной деятельностью STEM и защитой интересов. В свободное время она занимается скалолазанием, игрой на пианино или учится печь идеальные лепешки.

Шон МорганШон Морган является архитектором решений AI/ML в AWS. У него есть опыт работы в области полупроводников и академических исследований, и он использует свой опыт, чтобы помочь клиентам достичь своих целей в AWS. В свободное время Шон активно участвует в разработке и сопровождении проектов с открытым исходным кодом, а также является руководителем специальной группы по интересам надстроек TensorFlow.

Параллельная обработка данных с помощью RStudio в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Пол Ву — архитектор решений, работающий в новом подразделении AWS в Техасе. В сферу его компетенции входят контейнеры и миграция.

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

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