Xử lý dữ liệu song song với RStudio trên Amazon SageMaker

Năm ngoái, chúng tôi đã thông báo về tính khả dụng chung của RStudio trên Amazon SageMaker, môi trường phát triển tích hợp RStudio Workbench được quản lý hoàn toàn đầu tiên trong ngành (IDE) trên đám mây. Bạn có thể nhanh chóng khởi chạy RStudio IDE quen thuộc và quay số lên xuống các tài nguyên máy tính bên dưới mà không làm gián đoạn công việc của bạn, giúp dễ dàng xây dựng các giải pháp học máy (ML) và phân tích trong R ở quy mô lớn.

Với khối lượng dữ liệu ngày càng tăng được tạo ra, các bộ dữ liệu được sử dụng cho ML và phân tích thống kê đang phát triển song song. Điều này mang đến những thách thức về thời gian phát triển tăng lên và tính toán quản lý cơ sở hạ tầng. Để giải quyết những thách thức này, các nhà khoa học dữ liệu đã tìm cách triển khai các kỹ thuật xử lý dữ liệu song song. Xử lý dữ liệu song song, hoặc song song hóa dữ liệu, lấy các tập dữ liệu lớn hiện có và phân phối chúng trên nhiều bộ xử lý hoặc các nút để hoạt động trên dữ liệu đồng thời. Điều này có thể cho phép thời gian xử lý các bộ dữ liệu lớn hơn nhanh hơn, cùng với việc sử dụng được tối ưu hóa trên máy tính. Điều này có thể giúp những người thực hành ML tạo ra các mẫu có thể sử dụng lại để tạo tập dữ liệu, đồng thời cũng giúp giảm tải và chi phí cho cơ sở hạ tầng máy tính.

Tổng quan về giải pháp

Trong thời hạn Amazon SageMaker, nhiều khách hàng sử dụng Xử lý SageMaker để giúp thực hiện xử lý dữ liệu song song. Với SageMaker Processing, bạn có thể sử dụng trải nghiệm được quản lý, đơn giản hóa trên SageMaker để chạy khối lượng công việc xử lý dữ liệu của mình, chẳng hạn như kỹ thuật tính năng, xác thực dữ liệu, đánh giá mô hình và diễn giải mô hình. Điều này mang lại nhiều lợi ích vì không có cơ sở hạ tầng lâu dài để quản lý — các phiên bản xử lý giảm xuống khi công việc hoàn tất, môi trường có thể được chuẩn hóa thông qua vùng chứa, dữ liệu bên trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) được phân phối nguyên bản trên các phiên bản và cài đặt cơ sở hạ tầng linh hoạt về bộ nhớ, máy tính và lưu trữ.

Xử lý SageMaker cung cấp các tùy chọn về cách phân phối dữ liệu. Để xử lý dữ liệu song song, bạn phải sử dụng Tùy chọn ShardedByS3Key cho S3DataDistributionType. Khi tham số này được chọn, Xử lý SageMaker sẽ lấy n các thể hiện và phân phối các đối tượng 1 /n các đối tượng từ nguồn dữ liệu đầu vào trên các phiên bản. Ví dụ: nếu hai cá thể được cung cấp bốn đối tượng dữ liệu, thì mỗi cá thể nhận được hai đối tượng.

Xử lý SageMaker yêu cầu ba thành phần để chạy các công việc xử lý:

  • Hình ảnh vùng chứa có mã và các phần phụ thuộc của bạn để chạy khối lượng công việc xử lý dữ liệu của bạn
  • Đường dẫn đến nguồn dữ liệu đầu vào trong Amazon S3
  • Đường dẫn đến nguồn dữ liệu đầu ra trong Amazon S3

Quá trình này được mô tả trong sơ đồ sau.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Trong bài đăng này, chúng tôi hướng dẫn bạn cách sử dụng RStudio trên SageMaker để giao tiếp với một loạt các công việc Xử lý SageMaker để tạo một đường ống xử lý dữ liệu song song bằng cách sử dụng Ngôn ngữ lập trình R.

Giải pháp bao gồm các bước sau:

  1. Thiết lập dự án RStudio.
  2. Xây dựng và đăng ký hình ảnh vùng chứa xử lý.
  3. Chạy quy trình xử lý hai bước:
    1. Bước đầu tiên lấy nhiều tệp dữ liệu và xử lý chúng qua một loạt các công việc xử lý.
    2. Bước thứ hai nối các tệp đầu ra và chia chúng thành các tập dữ liệu huấn luyện, kiểm tra và xác nhận.

Điều kiện tiên quyết

Hoàn thành các điều kiện tiên quyết sau:

  1. Thiết lập RStudio trên SageMaker Workbench. Để biết thêm thông tin, hãy tham khảo Thông báo RStudio được quản lý hoàn toàn trên Amazon SageMaker cho các nhà khoa học dữ liệu.
  2. Tạo người dùng bằng RStudio trên SageMaker với các quyền truy cập thích hợp.

Thiết lập dự án RStudio

Để thiết lập dự án RStudio, hãy hoàn thành các bước sau:

  1. Điều hướng đến Xưởng sản xuất Amazon SageMaker bảng điều khiển trên bảng điều khiển SageMaker.
  2. Khởi chạy ứng dụng của bạn trong môi trường RStudio.
    Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  3. Bắt đầu một phiên RStudio mới.
  4. Trong Tên phiên, nhập tên.
  5. Trong Loại sơ thẩmHình ảnh, sử dụng cài đặt mặc định.
  6. Chọn Bắt đầu phiên.
    Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  7. Điều hướng vào phiên.
  8. Chọn Dự án mới, Kiểm soát phiên bản, và sau đó Chọn Git.
  9. Trong URL kho lưu trữ, đi vào https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Để các tùy chọn còn lại làm mặc định và chọn Tạo dự án.
    Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Bạn có thể điều hướng đến aws-parallel-data-processing-R thư mục trên Các tập tin tab để xem kho lưu trữ. Kho chứa các tệp sau:

  • 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

Xây dựng thùng chứa

Trong bước này, chúng tôi xây dựng hình ảnh vùng chứa xử lý của mình và đẩy nó lên Đăng ký container đàn hồi Amazon (Amazon ECR). Hoàn thành các bước sau:

  1. Điều hướng đến Container_Build.rmd tập tin.
  2. cài đặt Xây dựng hình ảnh SageMaker Studio CLI bằng cách chạy ô sau. Đảm bảo bạn có các quyền cần thiết trước khi hoàn thành bước này, đây là CLI được thiết kế để đẩy và đăng ký các hình ảnh vùng chứa trong Studio.
    pip install sagemaker-studio-image-build

  3. Chạy ô tiếp theo để xây dựng và đăng ký vùng chứa xử lý của chúng tôi:
    /home/sagemaker-user/.local/bin/sm-docker build . --file ./docker/Dockerfile-Processing --repository sagemaker-rstudio-parallel-processing:1.0

Sau khi công việc chạy thành công, bạn nhận được kết quả đầu ra giống như sau:

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

Chạy quy trình xử lý

Sau khi bạn xây dựng vùng chứa, hãy điều hướng đến Parallel_Data_Processing.rmd tập tin. Tệp này chứa một loạt các bước giúp chúng tôi tạo đường dẫn xử lý dữ liệu song song bằng cách sử dụng SageMaker Processing. Sơ đồ sau đây mô tả các bước của đường ống mà chúng tôi hoàn thành.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Bắt đầu bằng cách chạy bước nhập gói. Nhập các gói RStudio được yêu cầu cùng với 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')

Bây giờ, hãy thiết lập các chi tiết về môi trường và vai trò thực thi SageMaker của bạn:

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)

Khởi tạo vùng chứa mà chúng ta đã tạo và đăng ký ở bước trước đó:

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

Từ đây, chúng tôi đi sâu vào từng bước xử lý chi tiết hơn.

Tải lên tập dữ liệu

Đối với ví dụ của chúng tôi, chúng tôi sử dụng Bộ dữ liệu Tiếp thị Ngân hàng từ UCI. Chúng tôi đã chia tập dữ liệu thành nhiều tệp nhỏ hơn. Chạy mã sau để tải tệp lên 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")

Sau khi các tệp được tải lên, hãy chuyển sang bước tiếp theo.

Thực hiện xử lý dữ liệu song song

Trong bước này, chúng tôi lấy các tệp dữ liệu và thực hiện kỹ thuật tính năng để lọc ra các cột nhất định. Công việc này được phân phối trên một loạt các trường hợp xử lý (ví dụ của chúng tôi, chúng tôi sử dụng hai).

Chúng tôi sử dụng filter.R để xử lý dữ liệu và định cấu hình công việc như sau:

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

Như đã đề cập trước đó, khi chạy công việc xử lý dữ liệu song song, bạn phải điều chỉnh tham số đầu vào với cách dữ liệu sẽ được phân mảnh và kiểu dữ liệu. Do đó, chúng tôi cung cấp phương pháp sharding bằng cách S3Prefix:

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

Sau khi bạn chèn các thông số này, SageMaker Processing sẽ phân phối dữ liệu một cách đồng đều trên số lượng phiên bản đã chọn.

Điều chỉnh các tham số nếu cần, sau đó chạy ô để bắt đầu công việc.

Tạo tập dữ liệu đào tạo, kiểm tra và xác thực

Trong bước này, chúng tôi lấy các tệp dữ liệu đã xử lý, kết hợp chúng và chia chúng thành các bộ dữ liệu kiểm tra, huấn luyện và xác thực. Điều này cho phép chúng tôi sử dụng dữ liệu để xây dựng mô hình của mình.

Chúng tôi sử dụng process.R để xử lý dữ liệu và định cấu hình công việc như sau:

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

Điều chỉnh các tham số là cần thiết, sau đó chạy ô để bắt đầu công việc.

Chạy đường ống

Sau khi tất cả các bước được khởi tạo, hãy bắt đầu quy trình xử lý để chạy từng bước bằng cách chạy ô sau:

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

Thời gian của mỗi công việc này sẽ khác nhau dựa trên kích thước phiên bản và số lượng đã chọn.

Điều hướng đến bảng điều khiển SageMaker để xem tất cả các công việc xử lý của bạn.

Chúng tôi bắt đầu với công việc lọc, như được hiển thị trong ảnh chụp màn hình sau.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Khi hoàn tất, đường ống chuyển sang công việc xử lý dữ liệu.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Khi cả hai công việc hoàn tất, hãy điều hướng đến nhóm S3 của bạn. Nhìn trong sagemaker-rstudio-example thư mục, dưới processed. Bạn có thể xem các tệp cho tập dữ liệu đào tạo, kiểm tra và xác nhận.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Kết luận

Với lượng dữ liệu ngày càng tăng sẽ được yêu cầu để xây dựng các mô hình ngày càng phức tạp hơn, chúng tôi cần thay đổi cách tiếp cận đối với cách chúng tôi xử lý dữ liệu. Xử lý dữ liệu song song là một phương pháp hiệu quả trong việc đẩy nhanh quá trình tạo tập dữ liệu và nếu được kết hợp với các công cụ và môi trường đám mây hiện đại như RStudio trên SageMaker và SageMaker Processing, có thể loại bỏ phần lớn công việc quản lý cơ sở hạ tầng, tạo mã soạn sẵn và quản lý môi trường. Trong bài đăng này, chúng tôi đã giới thiệu cho các bạn cách thực hiện xử lý dữ liệu song song trong RStudio trên SageMaker. Chúng tôi khuyến khích bạn dùng thử bằng cách sao chép kho lưu trữ GitHub và nếu bạn có đề xuất về cách làm cho trải nghiệm tốt hơn, vui lòng gửi sự cố hoặc yêu cầu kéo.

Để tìm hiểu thêm về các tính năng và dịch vụ được sử dụng trong giải pháp này, hãy tham khảo RStudio trên Amazon SageMakerChế biến Amazon SageMaker.


Giới thiệu về tác giả

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai. Raj Pathak là một Kiến trúc sư Giải pháp và Cố vấn Kỹ thuật cho các khách hàng thuộc nhóm 50 và trung bình của FSI (Ngân hàng, Bảo hiểm, Thị trường Vốn) trên khắp Canada và Hoa Kỳ. Raj chuyên về Học máy với các ứng dụng trong Trích xuất tài liệu, Chuyển đổi Trung tâm Liên hệ và Thị giác Máy tính.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Jake Wen là Kiến trúc sư Giải pháp tại AWS với niềm đam mê đào tạo ML và Xử lý ngôn ngữ tự nhiên. Jake giúp khách hàng Doanh nghiệp vừa và nhỏ có khả năng lãnh đạo về thiết kế và tư duy để xây dựng và triển khai các ứng dụng trên quy mô lớn. Ngoài công việc, anh ấy thích đi bộ đường dài.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Aditi Rajnish là sinh viên kỹ thuật phần mềm năm thứ nhất tại Đại học Waterloo. Sở thích của cô bao gồm thị giác máy tính, xử lý ngôn ngữ tự nhiên và tính toán biên. Cô ấy cũng rất đam mê với hoạt động tiếp cận và vận động STEM dựa vào cộng đồng. Khi rảnh rỗi, cô ấy có thể leo núi, chơi piano hoặc học cách nướng bánh nướng hoàn hảo.

Sean MorganSean Morgan là Kiến trúc sư Giải pháp AI / ML tại AWS. Anh ấy có kinh nghiệm trong lĩnh vực nghiên cứu học thuật và bán dẫn, đồng thời sử dụng kinh nghiệm của mình để giúp khách hàng đạt được mục tiêu của họ trên AWS. Trong thời gian rảnh rỗi, Sean là một người đóng góp và bảo trì mã nguồn mở tích cực, đồng thời là trưởng nhóm sở thích đặc biệt cho Tiện ích bổ sung TensorFlow.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Paul Wu là Kiến trúc sư Giải pháp làm việc trong Kinh doanh Greenfield của AWS ở Texas. Các lĩnh vực chuyên môn của anh ấy bao gồm container và di chuyển.

Dấu thời gian:

Thêm từ Học máy AWS