Ustvarite cevovode za gradnjo modelov Amazon SageMaker in uvedite modele R z uporabo RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ustvarite cevovode za gradnjo modelov Amazon SageMaker in uvedite modele R z uporabo RStudio na Amazon SageMaker

Novembra 2021 je v sodelovanju z RStudio PBCSmo razglasitve splošna razpoložljivost RStudio na Amazon SageMaker, prvi popolnoma upravljani RStudio Workbench IDE v oblaku. Zdaj lahko prinesete svojo trenutno licenco RStudio, da preprosto preselite svoja samoupravljana okolja RStudio Amazon SageMaker v le nekaj preprostih korakih.

RStudio je eden najbolj priljubljenih IDE med razvijalci R za strojno učenje (ML) in projekte podatkovne znanosti. RStudio ponuja odprtokodna orodja za R in profesionalno programsko opremo, pripravljeno za podjetja, za ekipe podatkovne znanosti, da razvijejo in delijo svoje delo v organizaciji. Uvedba RStudio na SageMaker vam ne omogoča le dostopa do infrastrukture AWS na popolnoma upravljan način, ampak vam omogoča tudi izvorni dostop do SageMaker.

V tej objavi raziskujemo, kako lahko uporabite funkcije SageMaker prek RStudio na SageMaker za izgradnjo cevovoda SageMaker, ki gradi, obdeluje, usposablja in registrira vaše modele R. Raziskujemo tudi uporabo SageMakerja za našo uvedbo modela, vse z uporabo R.

Pregled rešitev

Naslednji diagram prikazuje arhitekturo, uporabljeno v naši rešitvi. Vso kodo, uporabljeno v tem primeru, lahko najdete v GitHub repozitorij.

Predpogoji

Za spremljanje te objave je potreben dostop do RStudio na SageMaker. Če še niste začeli uporabljati RStudio na SageMakerju, preglejte Začnite uporabljati RStudio na Amazon SageMaker.

Prav tako moramo zgraditi prilagojene vsebnike Docker. Uporabljamo AWS CodeBuild za izdelavo teh zabojnikov, zato potrebujete nekaj dodatnih AWS upravljanje identitete in dostopa (IAM), ki jih morda nimate privzeto. Preden nadaljujete, se prepričajte, da ima vloga IAM, ki jo uporabljate, pravilnik o zaupanju s programom CodeBuild:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "codebuild.amazonaws.com"
        ]
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

V vlogi IAM so potrebna tudi naslednja dovoljenja za zagon gradnje v CodeBuild in potiskanje slike Registar elastičnih zabojnikov Amazon (Amazon ECR):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteProject",
                "codebuild:CreateProject",
                "codebuild:BatchGetBuilds",
                "codebuild:StartBuild"
            ],
            "Resource": "arn:aws:codebuild:*:*:project/sagemaker-studio*"
        },
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogStream",
            "Resource": "arn:aws:logs:*:*:log-group:/aws/codebuild/sagemaker-studio*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "logs:GetLogEvents",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/codebuild/sagemaker-studio*:log-stream:*"
        },
        {
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:CreateRepository",
                "ecr:BatchGetImage",
                "ecr:CompleteLayerUpload",
                "ecr:DescribeImages",
                "ecr:DescribeRepositories",
                "ecr:UploadLayerPart",
                "ecr:ListImages",
                "ecr:InitiateLayerUpload", 
                "ecr:BatchCheckLayerAvailability",
                "ecr:PutImage"
            ],
            "Resource": "arn:aws:ecr:*:*:repository/sagemaker-studio*"
        },
        {
            "Sid": "ReadAccessToPrebuiltAwsImages",
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": [
                "arn:aws:ecr:*:763104351884:repository/*",
                "arn:aws:ecr:*:217643126080:repository/*",
                "arn:aws:ecr:*:727897471807:repository/*",
                "arn:aws:ecr:*:626614931356:repository/*",
                "arn:aws:ecr:*:683313688378:repository/*",
                "arn:aws:ecr:*:520713654638:repository/*",
                "arn:aws:ecr:*:462105765813:repository/*"
            ]
        },
        {
            "Sid": "EcrAuthorizationTokenRetrieval",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
              "s3:GetObject",
              "s3:DeleteObject",
              "s3:PutObject"
              ],
            "Resource": "arn:aws:s3:::sagemaker-*/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket"
            ],
            "Resource": "arn:aws:s3:::sagemaker*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListRoles"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/*",
            "Condition": {
                "StringLikeIfExists": {
                    "iam:PassedToService": "codebuild.amazonaws.com"
                }
            }
        }
    ]
}

Ustvarite osnovne R vsebnike

Če želimo uporabljati naše skripte R za obdelavo in usposabljanje na opravilih obdelave in usposabljanja SageMaker, moramo ustvariti lastne Docker posode ki vsebuje potrebno izvajalno okolje in pakete. Možnost uporabe lastnega vsebnika, ki je del ponudbe SageMaker, daje razvijalcem in podatkovnim znanstvenikom veliko prilagodljivost pri uporabi orodij in ogrodij po lastni izbiri, skoraj brez omejitev.

Ustvarimo dva vsebnika Docker, ki podpirata R: enega za obdelavo opravil in enega za usposabljanje in uvajanje naših modelov. Obdelava podatkov običajno zahteva drugačne pakete in knjižnice kot modeliranje, zato je tukaj smiselno ločiti obe stopnji in uporabiti različne vsebnike.

Za več podrobnosti o uporabi vsebnikov s SageMakerjem glejte Uporaba Docker posod z SageMakerjem.

Vsebnik, ki se uporablja za obdelavo, je opredeljen na naslednji način:

FROM public.ecr.aws/docker/library/r-base:4.1.2

# Install tidyverse
RUN apt update && apt-get install -y --no-install-recommends 
    r-cran-tidyverse
    
RUN R -e "install.packages(c('rjson'))"

ENTRYPOINT ["Rscript"]

Za to objavo uporabljamo preprosto in razmeroma lahko posodo. Odvisno od vaših potreb ali potreb vaše organizacije boste morda želeli vnaprej namestiti več dodatnih paketov R.

Vsebnik, ki se uporablja za usposabljanje in uvajanje, je opredeljen na naslednji način:

FROM public.ecr.aws/docker/library/r-base:4.1.2

RUN apt-get -y update && apt-get install -y --no-install-recommends 
    wget 
    apt-transport-https 
    ca-certificates 
    libcurl4-openssl-dev 
    libsodium-dev
    
RUN apt-get update && apt-get install -y python3-dev python3-pip 
RUN pip3 install boto3
RUN R -e "install.packages(c('readr','plumber', 'reticulate'),dependencies=TRUE, repos='http://cran.rstudio.com/')"

ENV PATH="/opt/ml/code:${PATH}"

WORKDIR /opt/ml/code

COPY ./docker/run.sh /opt/ml/code/run.sh
COPY ./docker/entrypoint.R /opt/ml/entrypoint.R

RUN /bin/bash -c 'chmod +x /opt/ml/code/run.sh'

ENTRYPOINT ["/bin/bash", "run.sh"]

Jedro RStudio deluje na vsebniku Docker, zato ne boste mogli zgraditi in razmestiti vsebnikov z ukazi Docker neposredno v seji Studio. Namesto tega lahko uporabite zelo uporabno knjižnico sagemaker-studio-gradnja-slike, ki v bistvu prenese nalogo gradnje vsebnikov na CodeBuild.

Z naslednjimi ukazi ustvarimo dva registra Amazon ECR: sagemaker-r-processing in sagemaker-r-train-n-deployin zgradimo ustrezne vsebnike, ki jih bomo uporabili pozneje:

if (!py_module_available("sagemaker-studio-image-build")){py_install("sagemaker-studio-image-build", pip=TRUE)}
system("cd pipeline-example ; sm-docker build . —file ./docker/Dockerfile-train-n-deploy —repository sagemaker-r-train-and-deploy:1.0")
system("cd pipeline-example ; sm-docker build . —file ./docker/Dockerfile-processing —repository sagemaker-r-processing:1.0")

Ustvarite cevovod

Zdaj, ko so vsebniki izdelani in pripravljeni, lahko ustvarimo cevovod SageMaker, ki usmerja delovni tok gradnje modela. Celotna koda tega je pod datoteko pipeline.R v skladišču. Najlažji način za ustvarjanje cevovoda SageMaker je uporaba SDK-ja SageMaker, ki je knjižnica Python, do katere lahko dostopamo s knjižnico mrežasti. To nam omogoča dostop do vseh funkcionalnosti SageMakerja, ne da bi zapustili jezikovno okolje R.

Cevovod, ki ga gradimo, ima naslednje komponente:

  • Korak predhodne obdelave – To je opravilo obdelave SageMaker (z uporabo sagemaker-r-processing vsebnik), ki je odgovoren za predhodno obdelavo podatkov in razdelitev podatkov v nabore podatkov o vlaku in testu.
  • Trening korak – To je usposabljanje za SageMaker (z uporabo sagemaker-r-train-n-deploy kontejner), odgovoren za usposabljanje modela. V tem primeru urimo preprost linearni model.
  • Ocenjevalni korak – To je opravilo obdelave SageMaker (z uporabo sagemaker-r-processing kontejner), ki je odgovoren za ocenjevanje modela. Natančneje v tem primeru nas zanima RMSE (srednja kvadratna napaka) na testnem nizu podatkov, ki ga želimo uporabiti v naslednjem koraku in ga povezati s samim modelom.
  • Pogojni korak – To je pogojni korak, izviren iz cevovodov SageMaker, ki nam omogoča razvejanje logike cevovoda na podlagi nekega parametra. V tem primeru se cevovod razveja na podlagi vrednosti RMSE, ki je bila izračunana v prejšnjem koraku.
  • Registrirajte korak modela – Če je prejšnji pogojni korak Truein je zmogljivost modela sprejemljiva, potem je model registriran v registru modelov. Za več informacij glejte Registrirajte in uvedite modele z registrom modelov.

Najprej pokličite funkcijo upsert, da ustvarite (ali posodobite) cevovod, nato pa pokličite funkcijo start, da dejansko začnete izvajati cevovod:

source("pipeline-example/pipeline.R")
my_pipeline <- get_pipeline(input_data_uri=s3_raw_data)

upserted <- my_pipeline$upsert(role_arn=role_arn)
started <- my_pipeline$start()

Preglejte cevovod in register modelov

Ena od odličnih stvari pri uporabi RStudio na SageMakerju je, da lahko s platformo SageMaker uporabite pravo orodje za pravo delo in hitro preklapljate med njimi glede na to, kaj morate narediti.

Takoj, ko začnemo s plinovodom, lahko preklopimo na Amazon SageMaker Studio, ki nam omogoča vizualizacijo cevovoda in spremljanje trenutnih in prejšnjih tekov le-tega.

Če si želite ogledati podrobnosti o cevovodu, ki smo ga pravkar ustvarili in zagnali, se pomaknite do vmesnika Studio IDE in izberite Viri SageMaker, izberite Cevovodi v spustnem meniju in izberite cevovod (v tem primeru AbalonePipelineUsingR).

Ustvarite cevovode za gradnjo modelov Amazon SageMaker in uvedite modele R z uporabo RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

To razkrije podrobnosti cevovoda, vključno z vsemi trenutnimi in prejšnjimi zagoni. Izberite najnovejšega, da prikažete vizualno predstavitev cevovoda, kot je prikazano na naslednjem posnetku zaslona.

DAG cevovoda samodejno ustvari storitev na podlagi podatkovnih odvisnosti med koraki, pa tudi na podlagi dodanih odvisnosti po meri (v tem primeru niso dodane nobene).

Ko je tek končan in če je uspešen, bi morali videti, da se vsi koraki obarvajo zeleno.

Ustvarite cevovode za gradnjo modelov Amazon SageMaker in uvedite modele R z uporabo RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Če izberete katerega koli od posameznih korakov, se prikažejo podrobnosti o določenem koraku, vključno z vhodi, izhodi, dnevniki in nastavitvami začetne konfiguracije. To vam omogoča, da se poglobite v cevovod in raziščete vse neuspele korake.

Podobno se model shrani v register modelov, ko se cevovod konča. Za dostop do njega v Viri SageMaker podokno, izberite Register modelov na spustnem meniju in izberite svoj model. To razkrije seznam registriranih modelov, kot je prikazano na naslednjem posnetku zaslona. Izberite enega, da odprete stran s podrobnostmi za določeno različico modela.

Ustvarite cevovode za gradnjo modelov Amazon SageMaker in uvedite modele R z uporabo RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Ko odprete različico modela, izberite Stanje posodobitve in Odobriti odobriti model.

Na tej točki lahko glede na vaš primer uporabe nastavite to odobritev za sprožitev nadaljnjih dejanj, vključno z uvedbo modela glede na vaše potrebe.

Brezstrežniška uvedba modela

Ko usposobite in registrirate model na SageMakerju, je namestitev modela na SageMaker preprosta.

Obstaja več možnosti, kako lahko uvedete model, na primer paketno sklepanje, končne točke v realnem času ali asinhrone končne točke. Vsaka metoda ima več zahtevanih konfiguracij, vključno z izbiro vrste primerka, ki ga želite, in mehanizma za skaliranje.

Za ta primer uporabljamo nedavno napovedano funkcijo SageMaker, Brezstrežniško sklepanje (v načinu predogleda v času pisanja), da uvedemo naš model R na končni točki brez strežnika. Za to vrsto končne točke definiramo samo količino RAM-a, ki jo želimo dodeliti modelu za sklepanje, kot tudi največje dovoljeno število sočasnih klicev modela. SageMaker poskrbi za gostovanje modela in samodejno skaliranje po potrebi. Zaračunamo vam samo točno število sekund in podatkov, ki jih uporablja model, brez stroškov za čas nedejavnosti.

Model lahko uvedete na končno točko brez strežnika z naslednjo kodo:

model_package_arn <- 'ENTER_MODEL_PACKAGE_ARN_HERE'
model <- sagemaker$ModelPackage(
                        role=role_arn, 
                        model_package_arn=model_package_arn, 
                        sagemaker_session=session)
serverless_config <- sagemaker$serverless$ServerlessInferenceConfig(
                        memory_size_in_mb=1024L, 
                        max_concurrency=5L)
model$deploy(serverless_inference_config=serverless_config, 
             endpoint_name="serverless-r-abalone-endpoint")

Če vidite napako ClientError: An error occurred (ValidationException) when calling the CreateModel operation: Invalid approval status "PendingManualApproval" model, ki ga želite uvesti, ni bil odobren. Za odobritev modela sledite korakom iz prejšnjega razdelka.

Prikličite končno točko tako, da pošljete zahtevo končni točki HTTP, ki smo jo uvedli, ali namesto tega uporabite SDK SageMaker. V naslednji kodi prikličemo končno točko na nekaterih testnih podatkih:

library(jsonlite)
x = list(features=format_csv(abalone_t[1:3,1:11]))
x = toJSON(x)

# test the endpoint
predictor <- sagemaker$predictor$Predictor(endpoint_name="serverless-r-abalone-endpoint", sagemaker_session=session)
predictor$predict(x)

Končna točka, ki smo jo poklicali, je bila končna točka brez strežnika, zato se nam zaračuna točno trajanje in uporabljeni podatki. Morda boste opazili, da ko prvič pokličete končno točko, traja približno sekundo, da se odzove. To je posledica časa hladnega zagona končne točke brez strežnika. Če kmalu zatem izvedete še en priklic, model vrne napoved v realnem času, ker je že toplo.

Ko končate eksperimentiranje s končno točko, jo lahko izbrišete z naslednjim ukazom:

predictor$delete_endpoint(delete_endpoint_config=TRUE)

zaključek

V tej objavi smo se sprehodili skozi postopek ustvarjanja cevovoda SageMaker z uporabo R v našem okolju RStudio in predstavili, kako razmestiti naš model R na končni točki brez strežnika na SageMaker z uporabo registra modelov SageMaker.

S kombinacijo RStudio in SageMaker lahko zdaj ustvarjate in orkestrirate celotne poteke dela ML od konca do konca v AWS z uporabo našega prednostnega izbranega jezika, R.

Da bi se poglobili v to rešitev, vam priporočam, da pregledate izvorno kodo te rešitve in druge primere na GitHub.


O Author

Ustvarite cevovode za gradnjo modelov Amazon SageMaker in uvedite modele R z uporabo RStudio na Amazon SageMaker PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Georgios Schinas je specializirani arhitekt rešitev za AI/ML v regiji EMEA. Sedež ima v Londonu in tesno sodeluje s strankami v Veliki Britaniji in na Irskem. Georgios strankam pomaga oblikovati in uvajati aplikacije za strojno učenje v produkciji na AWS s posebnim zanimanjem za prakse MLOps in strankam omogoča izvajanje strojnega učenja v velikem obsegu. V prostem času rad potuje, kuha in preživlja čas s prijatelji in družino.

Časovni žig:

Več od Strojno učenje AWS