Amazon SageMaker에서 RStudio를 사용한 병렬 데이터 처리

작년에 우리는 일반 출시를 발표했습니다. Amazon SageMaker의 RStudio, 클라우드에서 업계 최초의 완전 관리형 RStudio Workbench 통합 개발 환경(IDE)입니다. 친숙한 RStudio IDE를 빠르게 시작하고 작업을 중단하지 않고 기본 컴퓨팅 리소스를 확장 및 축소할 수 있으므로 R에서 머신 러닝(ML) 및 분석 솔루션을 대규모로 쉽게 구축할 수 있습니다.

생성되는 데이터의 양이 계속 늘어남에 따라 ML 및 통계 분석에 사용되는 데이터 세트도 함께 증가하고 있습니다. 이로 인해 개발 시간 및 컴퓨팅 인프라 관리가 증가하는 문제가 발생합니다. 이러한 문제를 해결하기 위해 데이터 과학자들은 병렬 데이터 처리 기술을 구현하려고 했습니다. 병렬 데이터 처리 또는 데이터 병렬화, 대규모 기존 데이터 세트를 가져와 여러 프로세서 또는 노드에 배포하여 데이터에서 동시에 작동합니다. 이를 통해 컴퓨팅에서 최적화된 사용과 함께 더 큰 데이터 세트의 처리 시간을 단축할 수 있습니다. 이를 통해 ML 실무자가 데이터 세트 생성을 위해 재사용 가능한 패턴을 생성하고 컴퓨팅 인프라 부하 및 비용을 줄이는 데 도움이 될 수 있습니다.

솔루션 개요

이내 아마존 세이지 메이커, 많은 고객이 사용 SageMaker 처리 병렬 데이터 처리를 구현하는 데 도움이 됩니다. SageMaker Processing을 사용하면 SageMaker에서 간소화된 관리 환경을 사용하여 기능 엔지니어링, 데이터 유효성 검사, 모델 평가 및 모델 해석과 같은 데이터 처리 워크로드를 실행할 수 있습니다. 이는 관리해야 할 장기 실행 인프라가 없기 때문에 많은 이점을 제공합니다. 작업이 완료되면 처리 인스턴스가 스핀다운되고, 컨테이너를 통해 환경을 표준화할 수 있으며, 아마존 단순 스토리지 서비스 (Amazon S3)는 기본적으로 여러 인스턴스에 분산되어 있으며 인프라 설정은 메모리, 컴퓨팅 및 스토리지 측면에서 유연합니다.

SageMaker Processing은 데이터 배포 방법에 대한 옵션을 제공합니다. 병렬 데이터 처리의 경우 다음을 사용해야 합니다. S3DataDistributionType에 대한 ShardedByS3Key 옵션. 이 매개변수를 선택하면 SageMaker Processing이 제공된 n 인스턴스 및 배포 개체 1/n 인스턴스 전반에 걸쳐 입력 데이터 소스의 개체. 예를 들어 XNUMX개의 인스턴스에 XNUMX개의 데이터 개체가 제공되면 각 인스턴스는 XNUMX개의 개체를 받습니다.

SageMaker Processing은 처리 작업을 실행하기 위해 세 가지 구성 요소가 필요합니다.

  • 데이터 처리 워크로드를 실행하기 위한 코드와 종속성이 있는 컨테이너 이미지
  • Amazon S3 내의 입력 데이터 원본에 대한 경로
  • Amazon S3 내의 출력 데이터 원본에 대한 경로

프로세스는 다음 다이어그램에 설명되어 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.

이 게시물에서는 SageMaker에서 RStudio를 사용하여 일련의 SageMaker Processing 작업과 인터페이스하여 다음을 사용하여 병렬 데이터 처리 파이프라인을 생성하는 방법을 보여줍니다. R 프로그래밍 언어.

솔루션은 다음 단계로 구성됩니다.

  1. RStudio 프로젝트를 설정합니다.
  2. 처리 컨테이너 이미지를 빌드하고 등록합니다.
  3. XNUMX단계 처리 파이프라인을 실행합니다.
    1. 첫 번째 단계는 여러 데이터 파일을 가져와 일련의 처리 작업에서 처리합니다.
    2. 두 번째 단계는 출력 파일을 연결하고 이를 학습, 테스트 및 검증 데이터 세트로 분할합니다.

사전 조건

다음 전제 조건을 완료하십시오.

  1. SageMaker Workbench에서 RStudio를 설정합니다. 자세한 내용은 다음을 참조하십시오. 데이터 과학자를 위한 Amazon SageMaker의 완전 관리형 RStudio 발표.
  2. 적절한 액세스 권한이 있는 SageMaker에서 RStudio로 사용자를 생성합니다.

RStudio 프로젝트 설정

RStudio 프로젝트를 설정하려면 다음 단계를 완료하십시오.

  1. 귀하의 아마존 세이지 메이커 스튜디오 SageMaker 콘솔의 제어판.
  2. RStudio 환경에서 앱을 시작합니다.
    Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.
  3. 새 RStudio 세션을 시작합니다.
  4. 럭셔리 세션 이름이름을 입력하십시오.
  5. 럭셔리 인스턴스 유형영상, 기본 설정을 사용합니다.
  6. 왼쪽 메뉴에서 세션 시작.
    Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.
  7. 세션으로 이동합니다.
  8. 왼쪽 메뉴에서 새 프로젝트, 버전 관리하고 힘내 선택.
  9. 럭셔리 저장소 URL, 입력 https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. 나머지 옵션은 기본값으로 두고 다음을 선택합니다. 프로젝트 만들기.
    Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.

당신은 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 Registry (아마존 ECR). 다음 단계를 완료하십시오.

  1. 로 이동 Container_Build.rmd 파일.
  2. 설치 SageMaker Studio 이미지 빌드 CLI 다음 셀을 실행하여 이 단계를 완료하기 전에 필요한 권한이 있는지 확인하십시오. 이는 Studio 내에서 컨테이너 이미지를 푸시하고 등록하도록 설계된 CLI입니다.
    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을 사용하여 병렬 데이터 처리 파이프라인을 생성하는 데 도움이 되는 일련의 단계가 포함되어 있습니다. 다음 다이어그램은 완료하는 파이프라인의 단계를 보여줍니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.

패키지 가져오기 단계를 실행하여 시작합니다. SageMaker SDK와 함께 필요한 RStudio 패키지를 가져옵니다.

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")

파일이 업로드되면 다음 단계로 이동합니다.

병렬 데이터 처리 수행

이 단계에서는 데이터 파일을 가져오고 기능 엔지니어링을 수행하여 특정 열을 필터링합니다. 이 작업은 일련의 처리 인스턴스에 분산됩니다(이 예에서는 XNUMX개 사용).

우리는을 사용하여 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 콘솔로 이동하십시오.

다음 스크린샷과 같이 필터링 작업부터 시작합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.

완료되면 파이프라인이 데이터 처리 작업으로 이동합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.

두 작업이 모두 완료되면 S3 버킷으로 이동합니다. 내에서 봐 sagemaker-rstudio-example 폴더, 아래 processed. 훈련, 테스트 및 검증 데이터 세트에 대한 파일을 볼 수 있습니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.

결론

점점 더 정교한 모델을 구축하는 데 필요한 데이터 양이 증가함에 따라 데이터 처리 방식에 대한 접근 방식을 변경해야 합니다. 병렬 데이터 처리는 데이터 세트 생성을 가속화하는 효율적인 방법이며, SageMaker의 RStudio 및 SageMaker Processing과 같은 최신 클라우드 환경 및 도구와 결합하면 인프라 관리, 상용구 코드 생성 및 환경 관리의 획일적인 무거운 작업을 상당 부분 제거할 수 있습니다. 이 게시물에서는 SageMaker의 RStudio 내에서 병렬 데이터 처리를 구현하는 방법을 살펴보았습니다. GitHub 리포지토리를 복제하여 사용해 볼 것을 권장하며, 경험을 개선하는 방법에 대한 제안 사항이 있으면 문제를 제출하거나 pull 요청을 제출하세요.

이 솔루션에 사용된 기능 및 서비스에 대한 자세한 내용은 다음을 참조하십시오. Amazon SageMaker의 RStudioAmazon SageMaker 처리.


저자 소개

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함. 라지 파탁 캐나다와 미국 전역의 Fortune 50대 기업 및 중견 FSI(은행, 보험, 자본 시장) 고객의 솔루션 설계자이자 기술 고문입니다. Raj는 문서 추출, 컨택 센터 변환 및 컴퓨터 비전 애플리케이션을 사용하는 기계 학습을 전문으로 합니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.제이크 웬 ML 교육 및 자연어 처리에 대한 열정이 있는 AWS의 솔루션 아키텍트입니다. Jake는 설계 및 사고 리더십을 갖춘 중소기업 고객이 대규모 응용 프로그램을 구축 및 배포할 수 있도록 지원합니다. 그는 일 외에는 하이킹을 즐깁니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.아디티 라지니쉬 워털루 대학교의 소프트웨어 공학 XNUMX학년 학생입니다. 그녀의 관심 분야는 컴퓨터 비전, 자연어 처리 및 에지 컴퓨팅입니다. 그녀는 또한 지역 사회 기반 STEM 봉사 활동 및 옹호에 열정적입니다. 그녀는 여가 시간에 암벽 등반, 피아노 연주, 완벽한 스콘 굽는 법을 배울 수 있습니다.

션 모건션 모건 AWS의 AI/ML 솔루션 아키텍트입니다. 그는 반도체 및 학술 연구 분야에서 경험을 쌓았고 자신의 경험을 사용하여 고객이 AWS에서 목표를 달성할 수 있도록 돕습니다. 여가 시간에 Sean은 활발한 오픈 소스 기고자이자 유지 관리자이며 TensorFlow Add-ons의 특별 이익 그룹 책임자입니다.

Amazon SageMaker PlatoBlockchain 데이터 인텔리전스에서 RStudio를 사용한 병렬 데이터 처리. 수직 검색. 일체 포함.폴 우 텍사스에 있는 AWS의 Greenfield Business에서 일하는 솔루션 아키텍트입니다. 그의 전문 분야에는 컨테이너 및 마이그레이션이 포함됩니다.

타임 스탬프 :

더보기 AWS 기계 학습