Pemrosesan data paralel dengan RStudio di Amazon SageMaker

Tahun lalu, kami mengumumkan ketersediaan umum RStudio di Amazon SageMaker, lingkungan pengembangan terintegrasi (IDE) RStudio Workbench pertama yang dikelola sepenuhnya di industri di cloud. Anda dapat dengan cepat meluncurkan RStudio IDE yang sudah dikenal, dan memanggil sumber daya komputasi yang mendasarinya tanpa mengganggu pekerjaan Anda, membuatnya mudah untuk membangun pembelajaran mesin (ML) dan solusi analitik dalam skala R.

Dengan semakin banyaknya volume data yang dihasilkan, kumpulan data yang digunakan untuk ML dan analisis statistik berkembang bersama-sama. Dengan ini membawa tantangan peningkatan waktu pengembangan dan manajemen infrastruktur komputasi. Untuk mengatasi tantangan ini, para ilmuwan data telah berupaya menerapkan teknik pemrosesan data paralel. Pemrosesan data paralel, atau paralelisasi data, mengambil kumpulan data besar yang ada dan mendistribusikannya ke beberapa pemroses atau node untuk beroperasi pada data secara bersamaan. Hal ini dapat memungkinkan waktu pemrosesan yang lebih cepat untuk kumpulan data yang lebih besar, bersama dengan penggunaan yang dioptimalkan pada komputasi. Ini dapat membantu praktisi ML membuat pola yang dapat digunakan kembali untuk pembuatan kumpulan data, dan juga membantu mengurangi beban dan biaya infrastruktur komputasi.

Ikhtisar solusi

Dalam Amazon SageMaker, banyak pelanggan menggunakan Pengolahan SageMaker untuk membantu mengimplementasikan pemrosesan data paralel. Dengan Pemrosesan SageMaker, Anda dapat menggunakan pengalaman terkelola yang disederhanakan di SageMaker untuk menjalankan beban kerja pemrosesan data Anda, seperti rekayasa fitur, validasi data, evaluasi model, dan interpretasi model. Ini membawa banyak manfaat karena tidak ada infrastruktur yang berjalan lama untuk dikelolaโ€”instance pemrosesan akan berkurang saat pekerjaan selesai, lingkungan dapat distandarisasi melalui container, data di dalamnya Layanan Penyimpanan Sederhana Amazon (Amazon S3) didistribusikan secara asli di seluruh instans, dan pengaturan infrastruktur fleksibel dalam hal memori, komputasi, dan penyimpanan.

SageMaker Processing menawarkan opsi tentang cara mendistribusikan data. Untuk pemrosesan data paralel, Anda harus menggunakan: Opsi ShardedByS3Key untuk S3DataDistributionType. Saat parameter ini dipilih, Pemrosesan SageMaker mengambil yang disediakan n instance dan mendistribusikan objek 1/n objek dari sumber data input di seluruh instance. Misalnya, jika dua instance disediakan dengan empat objek data, setiap instance menerima dua objek.

Pemrosesan SageMaker memerlukan tiga komponen untuk menjalankan tugas pemrosesan:

  • Gambar kontainer yang memiliki kode dan dependensi Anda untuk menjalankan beban kerja pemrosesan data Anda
  • Jalur ke sumber data input dalam Amazon S3
  • Jalur ke sumber data keluaran dalam Amazon S3

Prosesnya digambarkan dalam diagram berikut.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Dalam posting ini, kami menunjukkan cara menggunakan RStudio di SageMaker untuk berinteraksi dengan serangkaian pekerjaan Pemrosesan SageMaker untuk membuat jalur pemrosesan data paralel menggunakan bahasa pemrograman R.

Solusinya terdiri dari langkah-langkah berikut:

  1. Siapkan proyek RStudio.
  2. Bangun dan daftarkan gambar wadah pemrosesan.
  3. Jalankan pipa pemrosesan dua langkah:
    1. Langkah pertama mengambil beberapa file data dan memprosesnya di serangkaian pekerjaan pemrosesan.
    2. Langkah kedua menggabungkan file output dan membaginya menjadi set data pelatihan, pengujian, dan validasi.

Prasyarat

Lengkapi prasyarat berikut:

  1. Siapkan RStudio di SageMaker Workbench. Untuk informasi lebih lanjut, lihat Mengumumkan RStudio Terkelola Sepenuhnya di Amazon SageMaker untuk Ilmuwan Data.
  2. Buat pengguna dengan RStudio di SageMaker dengan izin akses yang sesuai.

Siapkan proyek RStudio

Untuk menyiapkan proyek RStudio, selesaikan langkah-langkah berikut:

  1. Arahkan ke Anda Studio Amazon SageMaker panel kontrol di konsol SageMaker.
  2. Luncurkan aplikasi Anda di lingkungan RStudio.
    Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.
  3. Mulai sesi RStudio baru.
  4. Untuk Nama Sesi, masukkan nama.
  5. Untuk Jenis Mesin Virtual dan Gambar, gunakan pengaturan default.
  6. Pilih Mulai Sesi.
    Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.
  7. Navigasikan ke sesi.
  8. Pilih Proyek Baru, Kontrol versi, Dan kemudian Pilih Git.
  9. Untuk URL repositori, Masuk https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Biarkan opsi yang tersisa sebagai default dan pilih Buat Proyek.
    Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Anda dapat menavigasi ke menu aws-parallel-data-processing-R direktori di File tab untuk melihat repositori. Repositori berisi file-file berikut:

  • 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

Bangun wadah

Pada langkah ini, kami membuat gambar wadah pemrosesan kami dan mendorongnya ke Registry Kontainer Elastis Amazon (Amazon ECR). Selesaikan langkah-langkah berikut:

  1. Arahkan ke folder Container_Build.rmd file.
  2. Instal SageMaker Studio Pembuatan Gambar CLI dengan menjalankan sel berikut. Pastikan Anda memiliki izin yang diperlukan sebelum menyelesaikan langkah ini, ini adalah CLI yang dirancang untuk mendorong dan mendaftarkan gambar kontainer di dalam Studio.
    pip install sagemaker-studio-image-build

  3. Jalankan sel berikutnya untuk membangun dan mendaftarkan wadah pemrosesan kami:
    /home/sagemaker-user/.local/bin/sm-docker build . --file ./docker/Dockerfile-Processing --repository sagemaker-rstudio-parallel-processing:1.0

Setelah pekerjaan berhasil dijalankan, Anda menerima output yang terlihat seperti berikut ini:

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

Jalankan pipa pemrosesan

Setelah Anda membuat wadah, navigasikan ke Parallel_Data_Processing.rmd mengajukan. File ini berisi serangkaian langkah yang membantu kami membuat saluran pemrosesan data paralel menggunakan Pemrosesan SageMaker. Diagram berikut menggambarkan langkah-langkah dari pipa yang kami selesaikan.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Mulailah dengan menjalankan langkah impor paket. Impor paket RStudio yang diperlukan bersama dengan 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')

Sekarang atur peran eksekusi SageMaker dan detail lingkungan Anda:

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)

Inisialisasi container yang kita buat dan daftarkan pada langkah sebelumnya:

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

Dari sini kita menyelami setiap langkah pemrosesan secara lebih rinci.

Unggah kumpulan data

Untuk contoh kami, kami menggunakan Kumpulan data Pemasaran Bank dari UCI. Kami telah membagi dataset menjadi beberapa file yang lebih kecil. Jalankan kode berikut untuk mengunggah file ke 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")

Setelah file diunggah, lanjutkan ke langkah berikutnya.

Lakukan pemrosesan data paralel

Pada langkah ini, kami mengambil file data dan melakukan rekayasa fitur untuk menyaring kolom tertentu. Pekerjaan ini didistribusikan di serangkaian instance pemrosesan (misalnya, kami menggunakan dua).

Kami menggunakan filter.R file untuk memproses data, dan mengkonfigurasi pekerjaan sebagai berikut:

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

Seperti yang disebutkan sebelumnya, saat menjalankan pekerjaan pemrosesan data paralel, Anda harus menyesuaikan parameter input dengan cara data akan di-sharding, dan jenis datanya. Oleh karena itu, kami menyediakan metode sharding dengan S3Prefix:

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

Setelah Anda memasukkan parameter ini, Pemrosesan SageMaker akan mendistribusikan data secara merata ke seluruh jumlah instans yang dipilih.

Sesuaikan parameter seperlunya, lalu jalankan sel untuk membuat instance pekerjaan.

Buat set data pelatihan, pengujian, dan validasi

Pada langkah ini, kami mengambil file data yang diproses, menggabungkannya, dan membaginya menjadi kumpulan data pengujian, pelatihan, dan validasi. Ini memungkinkan kita untuk menggunakan data untuk membangun model kita.

Kami menggunakan process.R file untuk memproses data, dan mengkonfigurasi pekerjaan sebagai berikut:

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

Sesuaikan parameter yang diperlukan, lalu jalankan sel untuk membuat instance pekerjaan.

Jalankan pipa

Setelah semua langkah dipakai, mulai pipa pemrosesan untuk menjalankan setiap langkah dengan menjalankan sel berikut:

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

Waktu yang dibutuhkan setiap pekerjaan ini akan bervariasi berdasarkan ukuran instans dan jumlah yang dipilih.

Navigasikan ke konsol SageMaker untuk melihat semua pekerjaan pemrosesan Anda.

Kami mulai dengan pekerjaan penyaringan, seperti yang ditunjukkan pada tangkapan layar berikut.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Setelah selesai, pipeline berpindah ke pekerjaan pemrosesan data.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Saat kedua pekerjaan selesai, navigasikan ke bucket S3 Anda. Lihat di dalam sagemaker-rstudio-example folder, di bawah processed. Anda dapat melihat file untuk set data pelatihan, pengujian, dan validasi.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Kesimpulan

Dengan bertambahnya jumlah data yang akan dibutuhkan untuk membangun model yang semakin canggih, kami perlu mengubah pendekatan kami terhadap cara kami memproses data. Pemrosesan data paralel adalah metode yang efisien dalam mempercepat pembuatan kumpulan data, dan jika digabungkan dengan lingkungan dan peralatan cloud modern seperti RStudio pada SageMaker dan Pemrosesan SageMaker, dapat menghilangkan banyak beban berat yang tidak terdiferensiasi dari manajemen infrastruktur, pembuatan kode boilerplate, dan manajemen lingkungan. Dalam posting ini, kami membahas bagaimana Anda dapat menerapkan pemrosesan data paralel dalam RStudio di SageMaker. Kami mendorong Anda untuk mencobanya dengan mengkloning repositori GitHub, dan jika Anda memiliki saran tentang cara membuat pengalaman menjadi lebih baik, silakan kirimkan masalah atau pull request.

Untuk mempelajari lebih lanjut tentang fitur dan layanan yang digunakan dalam solusi ini, lihat RStudio di Amazon SageMaker dan Pemrosesan SageMaker Amazon.


Tentang penulis

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Raja Pathak adalah Arsitek Solusi dan penasihat Teknis untuk pelanggan Fortune 50 dan FSI (Perbankan, Asuransi, Pasar Modal) Menengah di Kanada dan Amerika Serikat. Raj berspesialisasi dalam Pembelajaran Mesin dengan aplikasi dalam Ekstraksi Dokumen, Transformasi Pusat Kontak, dan Visi Komputer.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Jaka Wen adalah Arsitek Solusi di AWS dengan hasrat untuk pelatihan ML dan Pemrosesan Bahasa Alami. Jake membantu pelanggan Small Medium Business dengan desain dan kepemimpinan pemikiran untuk membangun dan menerapkan aplikasi dalam skala besar. Di luar pekerjaan, ia menikmati hiking.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Aditi Rajnish adalah mahasiswa rekayasa perangkat lunak tahun pertama di University of Waterloo. Minatnya meliputi visi komputer, pemrosesan bahasa alami, dan komputasi tepi. Dia juga bersemangat tentang penjangkauan dan advokasi STEM berbasis komunitas. Di waktu luangnya, ia dapat ditemukan panjat tebing, bermain piano, atau belajar cara membuat scone yang sempurna.

Sean MorganSean Morgan adalah Arsitek Solusi AI/ML di AWS. Dia memiliki pengalaman di bidang penelitian semikonduktor dan akademik, dan menggunakan pengalamannya untuk membantu pelanggan mencapai tujuan mereka di AWS. Di waktu luangnya, Sean adalah kontributor dan pengelola open-source aktif, dan merupakan pemimpin kelompok minat khusus untuk Add-on TensorFlow.

Pemrosesan data paralel dengan RStudio di Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Paul Wu adalah Arsitek Solusi yang bekerja di AWS Greenfield Business di Texas. Bidang keahliannya meliputi kontainer dan migrasi.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS