Vzporedna obdelava podatkov z RStudio na Amazon SageMaker

Lansko leto smo objavili splošno razpoložljivost RStudio na Amazon SageMaker, prvo popolnoma upravljano integrirano razvojno okolje (IDE) RStudio Workbench v industriji v oblaku. Hitro lahko zaženete znani RStudio IDE in kličete navzgor in navzdol po osnovnih računalniških virih, ne da bi pri tem prekinili delo, kar olajša gradnjo strojnega učenja (ML) in analitičnih rešitev v R v velikem obsegu.

Z vedno večjim obsegom ustvarjenih podatkov nabori podatkov, ki se uporabljajo za strojno učenje in statistične analize, rastejo sočasno. S tem prinaša izzive povečanega časa razvoja in upravljanja računalniške infrastrukture. Da bi rešili te izzive, so podatkovni znanstveniki poskušali implementirati tehnike vzporedne obdelave podatkov. Vzporedna obdelava podatkov, oz paralelizacija podatkov, vzame velike obstoječe nabore podatkov in jih razdeli med več procesorjev ali vozlišč za istočasno delovanje s podatki. To lahko omogoči hitrejši čas obdelave večjih naborov podatkov, skupaj z optimizirano uporabo pri računanju. To lahko strokovnjakom za strojno učenje pomaga pri ustvarjanju vzorcev za večkratno uporabo za ustvarjanje nabora podatkov ter zmanjša obremenitev in stroške računalniške infrastrukture.

Pregled rešitev

V okviru Amazon SageMaker, uporabljajo številne stranke Obdelava žajblja za pomoč pri izvajanju vzporedne obdelave podatkov. S SageMaker Processing lahko uporabite poenostavljeno, upravljano izkušnjo na SageMakerju za izvajanje delovnih obremenitev obdelave podatkov, kot so inženiring funkcij, validacija podatkov, vrednotenje modela in interpretacija modela. To prinaša številne prednosti, saj ni dolgotrajne infrastrukture za upravljanje – primerki obdelave se ustavi, ko so opravila končana, okolja je mogoče standardizirati prek vsebnikov, podatkov znotraj Preprosta storitev shranjevanja Amazon (Amazon S3) je izvorno porazdeljen po instancah, nastavitve infrastrukture pa so prilagodljive v smislu pomnilnika, računalništva in shranjevanja.

SageMaker Processing ponuja možnosti za distribucijo podatkov. Za vzporedno obdelavo podatkov morate uporabiti Možnost ShardedByS3Key za S3DataDistributionType. Ko je ta parameter izbran, SageMaker Processing prevzame posredovano n instance in distribucija objektov 1/n predmetov iz vira vhodnih podatkov po instancah. Na primer, če sta dva primerka opremljena s štirimi podatkovnimi objekti, vsak primerek prejme dva objekta.

SageMaker Processing potrebuje tri komponente za izvajanje opravil obdelave:

  • Slika vsebnika, ki ima vašo kodo in odvisnosti za izvajanje delovnih obremenitev obdelave podatkov
  • Pot do vira vhodnih podatkov znotraj Amazon S3
  • Pot do vira izhodnih podatkov znotraj Amazon S3

Postopek je prikazan v naslednjem diagramu.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

V tej objavi vam pokažemo, kako uporabiti RStudio na SageMakerju za povezavo z vrsto opravil SageMaker Processing za ustvarjanje cevovoda za vzporedno obdelavo podatkov z uporabo programski jezik R.

Rešitev je sestavljena iz naslednjih korakov:

  1. Nastavite projekt RStudio.
  2. Zgradite in registrirajte sliko vsebnika za obdelavo.
  3. Zaženite cevovod za obdelavo v dveh korakih:
    1. Prvi korak vzame več podatkovnih datotek in jih obdela v nizu opravil obdelave.
    2. Drugi korak združi izhodne datoteke in jih razdeli na nabore podatkov za usposabljanje, testiranje in validacijo.

Predpogoji

Izpolnite naslednje predpogoje:

  1. Nastavite RStudio na SageMaker Workbench. Za več informacij glejte Predstavljamo popolnoma upravljan RStudio na Amazon SageMaker za podatkovne znanstvenike.
  2. Ustvarite uporabnika z RStudio na SageMaker z ustreznimi dovoljenji za dostop.

Nastavite projekt RStudio

Za nastavitev projekta RStudio izvedite naslednje korake:

  1. Pojdite do svojega Amazon SageMaker Studio nadzorno ploščo na konzoli SageMaker.
  2. Zaženite svojo aplikacijo v okolju RStudio.
    Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  3. Začnite novo sejo RStudio.
  4. za Ime seje, vnesite ime.
  5. za Vrsta primerka in Image, uporabite privzete nastavitve.
  6. Izberite Začnite sejo.
    Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.
  7. Pomaknite se do seje.
  8. Izberite Nov projekt, Nadzor nad različico, in potem Izberite Git.
  9. za URL skladišča, vnesite https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Preostale možnosti pustite privzete in izberite Ustvari projekt.
    Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Lahko se pomaknete do aws-parallel-data-processing-R imenik na datoteke zavihek za ogled repozitorija. Repozitorij vsebuje naslednje datoteke:

  • 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

Zgradite posodo

V tem koraku zgradimo našo sliko vsebnika za obdelavo in jo potisnemo Registar elastičnih zabojnikov Amazon (Amazon ECR). Izvedite naslednje korake:

  1. Pomaknite se na Container_Build.rmd Datoteka.
  2. namestite SageMaker Studio Image Build CLI z izvajanjem naslednje celice. Prepričajte se, da imate zahtevana dovoljenja, preden dokončate ta korak, to je CLI, zasnovan za potiskanje in registracijo slik vsebnika v Studiu.
    pip install sagemaker-studio-image-build

  3. Zaženite naslednjo celico, da zgradite in registrirate naš vsebnik za obdelavo:
    /home/sagemaker-user/.local/bin/sm-docker build . --file ./docker/Dockerfile-Processing --repository sagemaker-rstudio-parallel-processing:1.0

Ko se opravilo uspešno izvede, prejmete izhod, ki je videti takole:

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

Zaženite cevovod za obdelavo

Ko zgradite vsebnik, se pomaknite do Parallel_Data_Processing.rmd mapa. Ta datoteka vsebuje niz korakov, ki nam pomagajo ustvariti naš cevovod za vzporedno obdelavo podatkov z uporabo SageMaker Processing. Naslednji diagram prikazuje korake cevovoda, ki jih dokončamo.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Začnite z izvajanjem koraka uvoza paketa. Uvozite zahtevane pakete RStudio skupaj s 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')

Zdaj nastavite svojo vlogo izvajanja SageMaker in podrobnosti okolja:

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)

Inicializirajte vsebnik, ki smo ga zgradili in registrirali v prejšnjem koraku:

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

Od tu se podrobneje poglobimo v vsak korak obdelave.

Naložite nabor podatkov

Za naš primer uporabljamo Nabor podatkov o bančnem trženju iz UCI. Nabor podatkov smo že razdelili na več manjših datotek. Zaženite naslednjo kodo za nalaganje datotek v 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")

Ko so datoteke naložene, pojdite na naslednji korak.

Izvedite vzporedno obdelavo podatkov

V tem koraku vzamemo podatkovne datoteke in izvedemo inženiring funkcij za filtriranje določenih stolpcev. To opravilo je porazdeljeno med vrsto primerkov obdelave (v našem primeru uporabljamo dva).

Mi uporabljamo filter.R datoteko za obdelavo podatkov in konfigurirajte opravilo na naslednji način:

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

Kot smo že omenili, morate pri izvajanju opravila vzporedne obdelave podatkov prilagoditi vhodni parameter glede na to, kako bodo podatki razdeljeni, in vrsto podatkov. Zato nudimo metodo razčlenjevanja z S3Prefix:

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

Ko vstavite te parametre, bo SageMaker Processing podatke enakomerno porazdelil po številu izbranih primerkov.

Po potrebi prilagodite parametre in nato zaženite celico, da ustvarite primerek opravila.

Ustvarite nize podatkov o usposabljanju, testiranju in validaciji

V tem koraku vzamemo obdelane podatkovne datoteke, jih združimo in razdelimo na nabore podatkov za testiranje, usposabljanje in validacijo. To nam omogoča uporabo podatkov za izdelavo našega modela.

Mi uporabljamo process.R datoteko za obdelavo podatkov in konfigurirajte opravilo na naslednji način:

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

Prilagodite potrebne parametre in nato zaženite celico, da ustvarite primerek opravila.

Zaženite cevovod

Ko so vsi koraki instancirani, zaženite cevovod obdelave za izvajanje vsakega koraka tako, da zaženete naslednjo celico:

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

Čas, ki traja vsako od teh opravil, se bo razlikoval glede na izbrano velikost primerka in število.

Pomaknite se do konzole SageMaker in si oglejte vsa opravila obdelave.

Začnemo s filtriranjem, kot je prikazano na naslednjem posnetku zaslona.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ko je to končano, se cevovod premakne k opravilu obdelave podatkov.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ko sta obe opravili končani, se pomaknite do svojega vedra S3. Poglej znotraj sagemaker-rstudio-example mapa, pod processed. Ogledate si lahko datoteke za nize podatkov o usposabljanju, testiranju in validaciji.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

zaključek

Zaradi povečane količine podatkov, ki bodo potrebni za izdelavo vedno bolj izpopolnjenih modelov, moramo spremeniti svoj pristop k obdelavi podatkov. Vzporedna obdelava podatkov je učinkovita metoda pri pospeševanju generiranja nabora podatkov in če je združena s sodobnimi oblačnimi okolji in orodji, kot sta RStudio na SageMaker in SageMaker Processing, lahko odpravi veliko nediferenciranega težkega dela upravljanja infrastrukture, generiranja kode na osnovi kode in upravljanja okolja. V tej objavi smo predstavili, kako lahko implementirate vzporedno obdelavo podatkov znotraj RStudio na SageMaker. Priporočamo vam, da ga preizkusite tako, da klonirate repozitorij GitHub, in če imate predloge, kako izboljšati izkušnjo, pošljite težavo ali zahtevo za vlečenje.

Če želite izvedeti več o funkcijah in storitvah, ki se uporabljajo v tej rešitvi, glejte RStudio na Amazon SageMaker in Obdelava Amazon SageMaker.


O avtorjih

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai. Raj Pathak je arhitekt rešitev in tehnični svetovalec za stranke Fortune 50 in srednje velikih FSI (bančništvo, zavarovalništvo, kapitalski trgi) po vsej Kanadi in Združenih državah. Raj je specializiran za strojno učenje z aplikacijami za ekstrakcijo dokumentov, transformacijo kontaktnega centra in računalniški vid.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jake Wen je arhitekt rešitev pri AWS s strastjo do usposabljanja ML in obdelave naravnega jezika. Jake strankam malih in srednje velikih podjetij pomaga z oblikovanjem in vodstvom pri gradnji in uvajanju aplikacij v velikem obsegu. Izven službe se rad pohodi.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Aditi Rajniš je študent prvega letnika programskega inženirstva na Univerzi Waterloo. Njeni interesi vključujejo računalniški vid, obdelavo naravnega jezika in robno računalništvo. Prav tako je navdušena nad ozaveščanjem in zagovarjanjem STEM v skupnosti. V prostem času jo lahko najdemo med plezanjem po skalah, igranjem klavirja ali učenjem peke popolnega kolača.

Sean MorganSean Morgan je arhitekt rešitev AI/ML pri AWS. Ima izkušnje na področju polprevodnikov in akademskih raziskav ter svoje izkušnje uporablja za pomoč strankam pri doseganju njihovih ciljev na AWS. V prostem času Sean aktivno prispeva in vzdržuje odprto kodo ter je vodja posebne interesne skupine za dodatke TensorFlow.

Vzporedna obdelava podatkov z RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Paul Wu je arhitekt rešitev, ki dela v podjetju AWS Greenfield Business v Teksasu. Njegova strokovna področja vključujejo kontejnerje in migracije.

Časovni žig:

Več od Strojno učenje AWS