Паралельна обробка даних за допомогою RStudio на Amazon SageMaker

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

З постійно зростаючим обсягом даних, які генеруються, набори даних, які використовуються для ML і статистичного аналізу, зростають разом. Це пов’язано зі збільшенням часу на розробку та керуванням обчислювальною інфраструктурою. Щоб вирішити ці проблеми, науковці з обробки даних прагнули застосувати методи паралельної обробки даних. Паралельна обробка даних, або розпаралелювання даних, бере великі існуючі набори даних і розподіляє їх між кількома процесорами або вузлами для одночасної роботи з даними. Це може прискорити обробку великих наборів даних, а також оптимізувати використання обчислювальної системи. Це може допомогти фахівцям з машинного навчання створити багаторазові шаблони для генерації набору даних, а також допоможе зменшити навантаження на обчислювальну інфраструктуру та витрати.

Огляд рішення

В Amazon SageMaker, використовують багато клієнтів Обробка 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. Вертикальний пошук. Ai.

У цій публікації ми покажемо вам, як використовувати 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. Вертикальний пошук. Ai.
  3. Розпочніть новий сеанс RStudio.
  4. для Назва сеансу, введіть ім'я.
  5. для Тип екземпляра та зображення, використовуйте параметри за замовчуванням.
  6. Вибирати Початок сеансу.
    Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  7. Перейдіть до сеансу.
  8. Вибирати Новий проект, Контроль версії, А потім Виберіть Git.
  9. для URL-адреса сховища, введіть https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Залиште інші параметри за замовчуванням і виберіть Створити проект.
    Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ви можете перейти до 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 (Amazon ECR). Виконайте наступні дії:

  1. перейдіть до Container_Build.rmd файлу.
  2. встановити SageMaker Studio Image Build CLI запустивши наступну клітинку. Переконайтеся, що у вас є необхідні дозволи, перш ніж виконувати цей крок, це інтерфейс командного рядка, призначений для надсилання та реєстрації зображень контейнерів у 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. На наступній діаграмі зображено кроки конвеєра, які ми виконуємо.

Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Почніть із виконання кроку імпорту пакета. Імпортуйте необхідні пакети RStudio разом із SDK SageMaker:

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. Вертикальний пошук. Ai.

Коли це буде завершено, конвеєр переходить до завдання обробки даних.

Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

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

Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Висновок

Зі збільшенням обсягу даних, які знадобляться для створення все більш складних моделей, нам потрібно змінити наш підхід до того, як ми обробляємо дані. Паралельна обробка даних є ефективним методом прискорення створення набору даних, і в поєднанні з сучасними хмарними середовищами та інструментами, такими як RStudio на SageMaker і SageMaker Processing, може усунути велику частину недиференційованої важкої роботи з управління інфраструктурою, створення шаблонного коду та управління середовищем. У цій публікації ми розповіли, як реалізувати паралельну обробку даних у RStudio на SageMaker. Ми заохочуємо вас спробувати це, клонувавши репозиторій GitHub, і якщо у вас є пропозиції щодо покращення роботи, будь ласка, надішліть проблему або запит на отримання.

Щоб дізнатися більше про функції та послуги, які використовуються в цьому рішенні, див RStudio на Amazon SageMaker та Обробка Amazon SageMaker.


Про авторів

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

Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Джейк Вен є архітектором рішень в AWS, який захоплюється навчанням ML і обробці природної мови. Джейк допомагає клієнтам малого середнього бізнесу завдяки дизайну та інтелектуальному лідерству створювати та розгортати програми в масштабі. Поза роботою захоплюється пішим туризмом.

Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Адіті Раджніш є студентом першого курсу програмної інженерії в Університеті Ватерлоо. Її інтереси включають комп’ютерне бачення, обробку природної мови та периферійні обчислення. Вона також захоплюється просвітницькою діяльністю та адвокацією STEM у громаді. У вільний час вона займається скелелазінням, грою на піаніно або вчиться пекти ідеальну булочку.

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

Паралельна обробка даних за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Пол Ву є архітектором рішень, який працює в Greenfield Business компанії AWS у Техасі. Його спеціалізація включає контейнери та міграцію.

Часова мітка:

Більше від AWS Машинне навчання