Paralleelne andmetöötlus RStudioga Amazon SageMakeris

Eelmisel aastal teatasime üldisest saadavusest RStudio Amazon SageMakeris, valdkonna esimene täielikult hallatav RStudio Workbenchi integreeritud arenduskeskkond (IDE) pilves. Saate kiiresti käivitada tuttava RStudio IDE ja valida selle aluseks olevaid arvutusressursse üles ja alla ilma oma tööd katkestamata, muutes masinõppe (ML) ja analüütikalahenduste loomise R-vormingus lihtsaks.

Üha suureneva andmemahu genereerimisega kasvavad ML ja statistilise analüüsi jaoks kasutatavad andmekogumid koos. See toob kaasa suurema arendusaja ja arvutusliku infrastruktuuri haldamise väljakutsed. Nende väljakutsete lahendamiseks on andmeteadlased püüdnud rakendada paralleelseid andmetöötlusmeetodeid. Paralleelne andmetöötlus või andmete paralleelsus, võtab suuri olemasolevaid andmekogumeid ja jaotab need mitme töötleja või sõlme vahel, et andmeid korraga kasutada. See võib võimaldada suuremate andmekogumite kiiremat töötlemisaega ja optimeerida arvutuskasutust. See võib aidata ML-i praktikutel luua andmestiku genereerimiseks korduvkasutatavaid mustreid ning samuti vähendada arvutustaristu koormust ja kulusid.

Lahenduse ülevaade

Jooksul Amazon SageMaker, kasutavad paljud kliendid SageMakeri töötlemine et aidata rakendada paralleelset andmetöötlust. Rakenduse SageMaker Processing abil saate kasutada SageMakeris lihtsustatud ja hallatud kogemust oma andmetöötluse töökoormuse (nt funktsioonide projekteerimine, andmete valideerimine, mudeli hindamine ja mudeli tõlgendamine) käitamiseks. See toob palju eeliseid, kuna puudub pikaajaline infrastruktuur, mida hallata – töötlemisjuhtumite töötlemine katkeb, kui tööd on lõpetatud, keskkondi saab standardida konteinerite ja andmete kaudu. Amazoni lihtne salvestusteenus (Amazon S3) on natiivselt eksemplaride vahel jaotatud ning infrastruktuuri sätted on mälu, arvutus- ja salvestusruumi osas paindlikud.

SageMaker Processing pakub võimalusi andmete levitamiseks. Paralleelseks andmetöötluseks peate kasutama ShardedByS3Key valik S3DataDistributionType jaoks. Kui see parameeter on valitud, võtab SageMaker Processing ette antud n eksemplare ja objekte levitada 1/n objektid sisendandmeallikast kõigis eksemplarides. Näiteks kui kaks eksemplari on varustatud nelja andmeobjektiga, saab iga eksemplar kaks objekti.

SageMaker Processing nõuab töötlemistööde käitamiseks kolme komponenti:

  • Konteinerkujutis, millel on teie kood ja sõltuvused andmetöötluse töökoormuste käitamiseks
  • Amazon S3 sisendandmete allika tee
  • Tee Amazon S3 väljundandmeallikani

Protsess on näidatud järgmisel diagrammil.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Selles postituses näitame teile, kuidas kasutada RStudiot SageMakeris, et liidestuda mitmete SageMakeri töötlemistöödega, et luua paralleelne andmetöötluskonveier, kasutades R programmeerimiskeel.

Lahendus koosneb järgmistest sammudest:

  1. Seadistage RStudio projekt.
  2. Töötlemiskonteineri kujutise koostamine ja registreerimine.
  3. Käivitage kaheastmeline töötlemiskonveier:
    1. Esimene samm võtab mitu andmefaili ja töötleb neid töötlemistööde seerias.
    2. Teine samm ühendab väljundfailid ja jagab need rongi-, testi- ja valideerimisandmekomplektideks.

Eeldused

Täitke järgmised eeltingimused:

  1. Seadistage RStudio SageMaker Workbenchis. Lisateabe saamiseks vaadake Täielikult hallatava RStudio väljakuulutamine andmeteadlaste jaoks mõeldud Amazon SageMakeris.
  2. Looge SageMakeris RStudioga kasutaja, kellel on sobivad juurdepääsuõigused.

Seadistage RStudio projekt

RStudio projekti seadistamiseks toimige järgmiselt.

  1. Liikuge oma Amazon SageMaker Studio SageMakeri konsooli juhtpaneelil.
  2. Käivitage oma rakendus RStudio keskkonnas.
    Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.
  3. Alustage uut RStudio seanssi.
  4. eest Seansi nimi, sisestage nimi.
  5. eest Juhtumi tüüp ja pilt, kasutage vaikesätteid.
  6. Vali Alusta seanssi.
    Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.
  7. Liikuge seansse.
  8. Vali Uus projekt, Versioonihaldus, ja siis Valige Git.
  9. eest Hoidla URL, sisenema https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Jätke ülejäänud valikud vaikevalikuks ja valige Loo projekt.
    Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Võite navigeerida lehele aws-parallel-data-processing-R kataloogis Faile hoidla vaatamiseks vahekaarti. Hoidla sisaldab järgmisi faile:

  • 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

Ehitage konteiner

Selles etapis koostame oma töötlemiskonteineri kujutise ja lükkame selle edasi Amazoni elastsete konteinerite register (Amazon ECR). Tehke järgmised sammud.

  1. Liikuge Container_Build.rmd faili.
  2. Paigaldage SageMaker Studio Image Build CLI käivitades järgmise lahtri. Enne selle toimingu sooritamist veenduge, et teil oleksid nõutavad õigused. See on CLI, mis on loodud ümbrikupiltide tõukamiseks ja registreerimiseks Studios.
    pip install sagemaker-studio-image-build

  3. Käivitage järgmine lahter, et luua ja registreerida meie töötlemiskonteiner:
    /home/sagemaker-user/.local/bin/sm-docker build . --file ./docker/Dockerfile-Processing --repository sagemaker-rstudio-parallel-processing:1.0

Pärast töö edukat käivitamist saate väljundi, mis näeb välja järgmine:

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

Käivitage töötlemiskonveier

Pärast konteineri koostamist navigeerige lehele Parallel_Data_Processing.rmd faili. See fail sisaldab mitmeid samme, mis aitavad meil luua paralleelset andmetöötluskonveieri SageMaker Processingi abil. Järgmine diagramm kujutab torujuhtme etappe, mille me lõpetame.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Alustage pakettide importimise etapi käivitamisega. Importige vajalikud RStudio paketid koos SageMaker SDK-ga:

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

Nüüd seadistage oma SageMakeri täitmisroll ja keskkonna üksikasjad:

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)

Initsialiseerige eelmises etapis ehitatud ja registreeritud konteiner:

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

Siit uurime üksikasjalikumalt kõiki töötlemisetappe.

Laadige andmestik üles

Meie näiteks kasutame Pangaturunduse andmestik UCI-lt. Oleme andmestiku juba mitmeks väiksemaks failiks jaganud. Failide Amazon S3 üleslaadimiseks käivitage järgmine kood:

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

Pärast failide üleslaadimist liikuge järgmise sammu juurde.

Tehke paralleelne andmetöötlus

Selles etapis võtame andmefailid ja teostame teatud veergude filtreerimiseks funktsioonide projekteerimise. See töö on jaotatud töötlemisjuhtumite seeria vahel (meie näites kasutame kahte).

Me kasutame filter.R faili andmete töötlemiseks ja konfigureerige töö järgmiselt:

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

Nagu varem mainitud, peate paralleelse andmetöötlustöö käitamisel kohandama sisendparameetrit vastavalt andmete jagamise viisile ja andmete tüübile. Seetõttu pakume killustumismeetodit S3Prefix:

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

Pärast nende parameetrite sisestamist jaotab SageMaker Processing andmed võrdselt valitud eksemplaride arvu vahel.

Reguleerige parameetreid vastavalt vajadusele ja seejärel käivitage töö instantseerimiseks lahter.

Looge koolituse, testimise ja valideerimise andmekogumid

Selles etapis võtame töödeldud andmefailid, ühendame need ja jagame testi-, koolitus- ja valideerimisandmekogumiteks. See võimaldab meil andmeid oma mudeli koostamiseks kasutada.

Me kasutame process.R faili andmete töötlemiseks ja konfigureerige töö järgmiselt:

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

Parameetrite kohandamine on vajalik ja seejärel käivitage töö instantseerimiseks lahter.

Käivitage torujuhe

Pärast kõigi sammude loomist käivitage iga etapi käitamiseks töötlemiskonveier, käivitades järgmise lahtri:

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

Iga töö jaoks kuluv aeg sõltub valitud eksemplari suurusest ja arvust.

Navigeerige SageMakeri konsooli, et näha kõiki oma töötlemistöid.

Alustame filtreerimistööga, nagu on näidatud järgmisel ekraanipildil.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Kui see on lõpetatud, liigub konveier andmetöötlustöö juurde.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Kui mõlemad tööd on lõpetatud, navigeerige oma S3 ämbrisse. Vaata sisse sagemaker-rstudio-example kaust, all processed. Näete rongi-, katse- ja valideerimisandmekogumite faile.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.

Järeldus

Kuna andmehulk, mida on vaja üha keerukamate mudelite loomiseks, on suurem, peame muutma oma lähenemisviisi andmete töötlemisele. Paralleelne andmetöötlus on tõhus meetod andmestiku genereerimise kiirendamiseks ning koos kaasaegsete pilvekeskkondade ja tööriistadega, nagu RStudio on SageMaker ja SageMaker Processing, võib see eemaldada suure osa infrastruktuuri haldamise, plaadikoodi genereerimise ja keskkonnahalduse diferentseerimata raskest tõstmisest. Selles postituses vaatasime läbi, kuidas saate SageMakeris RStudios paralleelset andmetöötlust rakendada. Soovitame teil seda proovida, kloonides GitHubi hoidla, ja kui teil on soovitusi, kuidas kogemust paremaks muuta, esitage probleem või tõmbetaotlus.

Selles lahenduses kasutatavate funktsioonide ja teenuste kohta lisateabe saamiseks vaadake RStudio Amazon SageMakeris ja Amazon SageMakeri töötlemine.


Autoritest

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai. Raj Pathak on lahenduste arhitekt ja tehniline nõustaja Fortune 50 ja keskmise suurusega FSI (pangandus, kindlustus, kapitaliturud) klientidele kogu Kanadas ja Ameerika Ühendriikides. Raj on spetsialiseerunud masinõppele koos dokumentide ekstraktimise, kontaktkeskuse teisendamise ja arvutinägemise rakendustega.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.Jake Wen on AWS-i lahenduste arhitekt, kelle kirg on ML-koolitus ja loomuliku keele töötlemine. Jake aitab väike- ja keskmise suurusega ettevõtete klientidel disaini- ja juhtimisoskustega rakendusi laialdaselt luua ja juurutada. Väljaspool tööd naudib ta matkamist.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.Aditi Rajnish on Waterloo ülikooli esimese aasta tarkvaratehnika tudeng. Tema huvide hulka kuuluvad arvutinägemine, loomuliku keele töötlemine ja äärearvutus. Ta on kirglik ka kogukonnapõhise STEM-i teavitamise ja propageerimise vastu. Vabal ajal võib teda leida kaljuronimisest, klaverit mängimast või ideaalse skooni küpsetamise õppimisest.

Sean MorganSean Morgan on AWS-i AI/ML-lahenduste arhitekt. Tal on kogemusi pooljuhtide ja akadeemilise uurimistöö valdkonnas ning ta kasutab oma kogemusi, et aidata klientidel AWS-is oma eesmärke saavutada. Vabal ajal on Sean aktiivne avatud lähtekoodiga kaastööline ja hooldaja ning on TensorFlow lisandmoodulite erihuvirühma juht.

Paralleelne andmetöötlus RStudioga Amazon SageMaker PlatoBlockchain Data Intelligence'is. Vertikaalne otsing. Ai.Paul Wu on lahenduste arhitekt, kes töötab Texases AWSi Greenfield Businessis. Tema valdkonnad hõlmavad konteinereid ja migratsioone.

Ajatempel:

Veel alates AWS-i masinõpe