Párhuzamos adatfeldolgozás az RStudio segítségével az Amazon SageMakeren

Tavaly bejelentettük az általános elérhetőséget RStudio az Amazon SageMakeren, az iparág első teljesen felügyelt RStudio Workbench integrált fejlesztői környezete (IDE) a felhőben. Gyorsan elindíthatja a jól ismert RStudio IDE-t, és fel-le tárcsázhatja a mögöttes számítási erőforrásokat anélkül, hogy megszakítaná a munkáját, így egyszerűvé téve a gépi tanulási (ML) és elemzési megoldások R-ben való méretarányos felépítését.

Az egyre növekvő adatmennyiség mellett az ML és a statisztikai elemzéshez használt adatkészletek párhuzamosan nőnek. Ezzel a megnövekedett fejlesztési idő és a számítási infrastruktúra-kezelés kihívásait jelentik. E kihívások megoldása érdekében az adattudósok párhuzamos adatfeldolgozási technikák alkalmazására törekedtek. Párhuzamos adatfeldolgozás, ill adatok párhuzamosítása, nagy meglévő adatkészleteket vesz fel, és több feldolgozó vagy csomópont között osztja el az adatok egyidejű kezeléséhez. Ez lehetővé teszi a nagyobb adatkészletek gyorsabb feldolgozását, valamint az optimalizált számítási felhasználást. Ez segíthet az ML szakembereknek újrafelhasználható minták létrehozásában az adatkészlet-generáláshoz, valamint segíthet csökkenteni a számítási infrastruktúra terhelését és költségeit.

Megoldás áttekintése

Belül Amazon SageMaker, sok ügyfél használja SageMaker feldolgozás hogy segítse a párhuzamos adatfeldolgozás megvalósítását. A SageMaker Processing segítségével egyszerűsített, felügyelt SageMaker-élményt használhat az adatfeldolgozási munkaterhelések futtatásához, mint például a szolgáltatástervezés, az adatérvényesítés, a modellértékelés és a modellértelmezés. Ez számos előnnyel jár, mivel nincs kezelhető hosszú távú infrastruktúra – a feldolgozási példányok lelassulnak, amikor a feladatok befejeződnek, a környezetek szabványosíthatók konténerek és azon belüli adatok segítségével. Amazon egyszerű tárolási szolgáltatás (Amazon S3) natív módon el van osztva a példányok között, és az infrastruktúra-beállítások rugalmasak a memória, a számítás és a tárolás tekintetében.

A SageMaker Processing lehetőségeket kínál az adatok terjesztésére. Párhuzamos adatfeldolgozáshoz a ShardedByS3Key opció az S3DataDistributionType számára. Ha ez a paraméter ki van választva, a SageMaker Processing átveszi a megadott értéket n példányok és objektumok terjesztése 1/n objektumok a bemeneti adatforrásból a példányokon keresztül. Például, ha két példány négy adatobjektummal rendelkezik, akkor mindegyik példány két objektumot kap.

A SageMaker Processing három összetevőt igényel a feldolgozási feladatok futtatásához:

  • Egy tárolókép, amely tartalmazza a kódot és a függőségeket az adatfeldolgozási munkaterhelések futtatásához
  • Az Amazon S3 bemeneti adatforrásának elérési útja
  • Egy kimeneti adatforrás elérési útja az Amazon S3-on belül

A folyamatot a következő ábra mutatja be.

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

Ebben a bejegyzésben bemutatjuk, hogyan használhatja az RStudio-t a SageMakeren, hogy interfészezzen egy sor SageMaker feldolgozási feladattal, hogy párhuzamos adatfeldolgozási folyamatot hozzon létre a R programozási nyelv.

A megoldás a következő lépésekből áll:

  1. Állítsa be az RStudio projektet.
  2. Építse fel és regisztrálja a feldolgozási tárolóképet.
  3. Futtassa a kétlépcsős feldolgozási folyamatot:
    1. Az első lépés több adatfájlt vesz igénybe, és feldolgozza azokat egy sor feldolgozási feladaton keresztül.
    2. A második lépés összefűzi a kimeneti fájlokat, és felosztja őket képzési, tesztelési és érvényesítési adatkészletekre.

Előfeltételek

Töltse ki a következő előfeltételeket:

  1. Állítsa be az RStudiót a SageMaker Workbench-en. További információkért lásd: Bejelentjük a Fully Managed RStudiót az Amazon SageMaker for Data Scientists webhelyen.
  2. Hozzon létre egy felhasználót az RStudio segítségével a SageMakeren, megfelelő hozzáférési jogosultságokkal.

Állítsa be az RStudio projektet

Az RStudio projekt beállításához hajtsa végre a következő lépéseket:

  1. Navigáljon a Amazon SageMaker Studio vezérlőpult a SageMaker konzolon.
  2. Indítsa el az alkalmazást az RStudio környezetben.
    Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  3. Indítson el egy új RStudio munkamenetet.
  4. A Munkamenet neve, írjon be egy nevet.
  5. A Példány típusa és a Kép, használja az alapértelmezett beállításokat.
  6. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Indítsa el a munkamenetet.
    Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.
  7. Navigáljon a munkamenetbe.
  8. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Új projekt, Verziókezelés, és akkor Válassza a Git lehetőséget.
  9. A Adattár URL-je, belép https://github.com/aws-samples/aws-parallel-data-processing-r.git
  10. Hagyja a többi opciót alapértelmezettként, és válassza ki Projekt létrehozása.
    Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Navigálhat a aws-parallel-data-processing-R könyvtárat a Fájlok fület a tár megtekintéséhez. Az adattár a következő fájlokat tartalmazza:

  • 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

Építsd meg a tartályt

Ebben a lépésben elkészítjük a feldolgozó tárolóképet, és továbbítjuk Amazon Elastic Container Registry (Amazon ECR). Hajtsa végre a következő lépéseket:

  1. Navigáljon a Container_Build.rmd fájlt.
  2. Telepítse a SageMaker Studio Image Build CLI a következő cella futtatásával. A lépés végrehajtása előtt győződjön meg arról, hogy rendelkezik a szükséges engedélyekkel. Ez egy olyan CLI, amely a tárolóképek leküldésére és regisztrálására szolgál a Studio-ban.
    pip install sagemaker-studio-image-build

  3. Futtassa a következő cellát a feldolgozó tároló létrehozásához és regisztrálásához:
    /home/sagemaker-user/.local/bin/sm-docker build . --file ./docker/Dockerfile-Processing --repository sagemaker-rstudio-parallel-processing:1.0

Miután a feladat sikeresen lefutott, a következőhöz hasonló kimenetet kap:

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

Futtassa a feldolgozó folyamatot

A tároló elkészítése után navigáljon a Parallel_Data_Processing.rmd fájlt. Ez a fájl egy sor olyan lépést tartalmaz, amelyek segítségével létrehozhatjuk párhuzamos adatfeldolgozási folyamatunkat a SageMaker Processing segítségével. A következő diagram a folyamat általunk elvégzett lépéseit mutatja be.

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

Kezdje a csomagimportálási lépés futtatásával. Importálja a szükséges RStudio csomagokat a SageMaker SDK-val együtt:

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

Most állítsa be a SageMaker végrehajtási szerepkörét és a környezet részleteit:

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)

Inicializálja a tárolót, amelyet az előző lépésben építettünk és regisztráltunk:

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

Innentől részletesebben belemegyünk az egyes feldolgozási lépésekbe.

Töltse fel az adatkészletet

Példánkban a Bankmarketing adatkészlet az UCI-től. Az adatkészletet már több kisebb fájlra bontottuk. Futtassa a következő kódot a fájlok Amazon S3-ba való feltöltéséhez:

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

A fájlok feltöltése után lépjen a következő lépésre.

Végezzen párhuzamos adatfeldolgozást

Ebben a lépésben vesszük az adatfájlokat, és funkciótervezést végzünk bizonyos oszlopok kiszűrésére. Ez a feladat egy sor feldolgozási példány között van elosztva (a mi példánkban kettőt használunk).

Az általunk használt filter.R fájlt az adatok feldolgozásához, és konfigurálja a feladatot az alábbiak szerint:

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

Ahogy korábban említettük, párhuzamos adatfeldolgozási feladat futtatásakor be kell állítani a bemeneti paramétert az adatok felosztásának módjával és az adatok típusával. Ezért a sharding módszert biztosítjuk S3Prefix:

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

A paraméterek beszúrása után a SageMaker Processing egyenlően osztja el az adatokat a kiválasztott példányok számában.

Szükség szerint állítsa be a paramétereket, majd futtassa a cellát a feladat példányosításához.

Oktatási, tesztelési és érvényesítési adatkészletek létrehozása

Ebben a lépésben vesszük a feldolgozott adatfájlokat, kombináljuk őket, és felosztjuk őket teszt, betanítás és érvényesítési adatkészletekre. Ez lehetővé teszi az adatok felhasználását a modellünk felépítéséhez.

Az általunk használt process.R fájlt az adatok feldolgozásához, és konfigurálja a feladatot az alábbiak szerint:

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

Állítsa be a paramétereket, majd futtassa a cellát a feladat példányosításához.

Futtassa a csővezetéket

Az összes lépés példányosítása után indítsa el a feldolgozási folyamatot az egyes lépések futtatásához a következő cella futtatásával:

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

Az egyes feladatok időtartama a kiválasztott példány méretétől és számától függően változik.

Navigáljon a SageMaker konzolra az összes feldolgozási feladat megtekintéséhez.

Kezdjük a szűrési feladattal, amint az a következő képernyőképen látható.

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

Ha ez kész, a folyamat átkerül az adatfeldolgozási feladatra.

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

Ha mindkét feladat befejeződött, navigáljon az S3-as gyűjtőhelyre. Nézzen belülre sagemaker-rstudio-example mappa, alatt processed. Megtekintheti a vonat, a teszt és az érvényesítési adatkészletek fájljait.

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

Következtetés

Mivel egyre több adatra lesz szükség az egyre kifinomultabb modellek felépítéséhez, meg kell változtatnunk az adatok feldolgozásával kapcsolatos megközelítésünket. A párhuzamos adatfeldolgozás hatékony módszer az adatkészlet-generálás felgyorsítására, és ha olyan modern felhőkörnyezetekkel és eszközökkel párosul, mint az RStudio a SageMaker-en és a SageMaker Processing, akkor eltávolíthatja az infrastruktúra-kezelés, a rendszerkód-generálás és a környezetkezelés differenciálatlan nehézségeinek nagy részét. Ebben a bejegyzésben végigjártuk, hogyan valósíthat meg párhuzamos adatfeldolgozást az RStudióban a SageMakeren. Javasoljuk, hogy próbálja ki a GitHub tárház klónozásával, és ha javaslata van a tapasztalat jobbá tételére, küldjön be egy problémát vagy kérjen lekérést.

Ha többet szeretne megtudni a megoldásban használt funkciókról és szolgáltatásokról, tekintse meg a következőt: RStudio az Amazon SageMakeren és a Amazon SageMaker feldolgozás.


A szerzőkről

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai. Raj Pathak megoldástervező és műszaki tanácsadó a Fortune 50 és közepes méretű FSI (banki, biztosítási, tőkepiaci) ügyfelek számára Kanadában és az Egyesült Államokban. Raj a gépi tanulásra szakosodott a dokumentumkivonás, a kapcsolattartó központ átalakítás és a számítógépes látás alkalmazásokkal.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Jake Wen az AWS megoldástervezője, aki az ML képzés és a természetes nyelvi feldolgozás iránti szenvedélye. A Jake tervezéssel és ötletgazdagsággal segíti a kis- és középvállalkozások ügyfeleit az alkalmazások nagyarányú létrehozásában és üzembe helyezésében. Munkán kívül szeret túrázni.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Aditi Rajnish a Waterloo Egyetem elsőéves szoftvermérnök hallgatója. Érdeklődési köre a számítógépes látás, a természetes nyelvi feldolgozás és az éles számítástechnika. Szenvedélyesen rajong a közösségi alapú STEM tájékoztatásért és érdekképviseletért is. Szabadidejében sziklamászhat, zongorázhat, vagy megtanulhatja, hogyan kell a tökéletes pogácsát sütni.

Sean MorganSean Morgan az AWS AI/ML megoldások építésze. Tapasztalattal rendelkezik a félvezetők és az akadémiai kutatás területén, és tapasztalatait arra használja fel, hogy segítse ügyfeleit céljaik elérésében az AWS-ben. Szabadidejében Sean aktív nyílt forráskódú közreműködő és karbantartó, valamint a TensorFlow Add-ons speciális érdeklődési csoportjának vezetője.

Parallel data processing with RStudio on Amazon SageMaker PlatoBlockchain Data Intelligence. Vertical Search. Ai.Paul Wu megoldástervező, az AWS texasi Greenfield üzletében dolgozik. Szakterülete a konténerek és a migráció.

Időbélyeg:

Még több AWS gépi tanulás