Створюйте конвеєри створення моделей Amazon SageMaker і розгортайте моделі R за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Створюйте конвеєри створення моделі Amazon SageMaker і розгортайте моделі R за допомогою RStudio на Amazon SageMaker

У листопаді 2021 року у співпраці з RStudio PBC, Ми оголошений загальна доступність RStudio на Amazon SageMaker, перша в галузі повністю керована IDE RStudio Workbench у хмарі. Тепер ви можете взяти свою поточну ліцензію RStudio, щоб легко перенести туди свої самокеровані середовища RStudio Amazon SageMaker всього за кілька простих кроків.

RStudio — одна з найпопулярніших IDE серед розробників R для машинного навчання (ML) і наукових проектів. RStudio надає інструменти з відкритим вихідним кодом для R і професійне програмне забезпечення, готове до корпоративного використання, щоб команди з обробки даних могли розробляти та ділитися своєю роботою в організації. Запровадження RStudio на SageMaker не лише дає вам доступ до інфраструктури AWS у повністю керований спосіб, але й надає вам власний доступ до SageMaker.

У цій публікації ми досліджуємо, як ви можете використовувати функції SageMaker через RStudio на SageMaker для створення конвеєра SageMaker, який будує, обробляє, навчає та реєструє ваші моделі R. Ми також досліджуємо використання SageMaker для розгортання нашої моделі, все з використанням R.

Огляд рішення

На наступній діаграмі показано архітектуру, яка використовується в нашому рішенні. Весь код, використаний у цьому прикладі, можна знайти в GitHub сховище.

Передумови

Щоб підписатися на цю публікацію, потрібен доступ до RStudio на SageMaker. Якщо ви новачок у використанні RStudio на SageMaker, перегляньте Почніть роботу з RStudio на Amazon SageMaker.

Нам також потрібно створити спеціальні контейнери Docker. Ми використовуємо AWS CodeBuild щоб побудувати ці контейнери, вам знадобиться кілька додаткових Управління ідентифікацією та доступом AWS (IAM) дозволи, яких ви можете не мати за замовчуванням. Перш ніж продовжити, переконайтеся, що роль IAM, яку ви використовуєте, має політику довіри з CodeBuild:

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

Наступні дозволи також потрібні в ролі IAM для запуску збірки в CodeBuild і надсилання зображення Реєстр контейнерів Amazon Elastic (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"
                }
            }
        }
    ]
}

Створення базових контейнерів R

Щоб використовувати наші сценарії R для обробки та навчання завдань обробки та навчання SageMaker, нам потрібно створити власні Контейнери Docker містить необхідне середовище виконання та пакунки. Можливість використовувати власний контейнер, який є частиною пропозиції SageMaker, надає розробникам і дослідникам обробки даних велику гнучкість у використанні інструментів і фреймворків за власним вибором практично без обмежень.

Ми створюємо два контейнери Docker з підтримкою R: один для обробки завдань, а інший для навчання та розгортання наших моделей. Для обробки даних зазвичай потрібні інші пакети та бібліотеки, ніж для моделювання, тому має сенс розділити два етапи та використовувати різні контейнери.

Докладніше про використання контейнерів із SageMaker див Використання контейнерів Docker із SageMaker.

Контейнер, який використовується для обробки, визначається таким чином:

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

Для цієї публікації ми використовуємо простий і відносно легкий контейнер. Залежно від ваших потреб або потреб вашої організації, ви можете попередньо встановити ще кілька пакетів R.

Контейнер, який використовується для навчання та розгортання, визначається таким чином:

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

Ядро RStudio працює на контейнері Docker, тому ви не зможете створювати та розгортати контейнери за допомогою команд Docker безпосередньо під час сеансу Studio. Замість цього ви можете скористатися дуже корисною бібліотекою sagemaker-studio-image-build, який, по суті, передає завдання зі створення контейнерів CodeBuild.

За допомогою таких команд ми створюємо два реєстри Amazon ECR: sagemaker-r-processing та sagemaker-r-train-n-deployі створіть відповідні контейнери, які ми використаємо пізніше:

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

Створіть конвеєр

Тепер, коли контейнери створені та готові, ми можемо створити конвеєр SageMaker, який керуватиме робочим процесом створення моделі. Повний код цього знаходиться під файлом pipeline.R в репозиторії. Найпростіший спосіб створити конвеєр SageMaker — це використати SageMaker SDK, бібліотеку Python, до якої ми можемо отримати доступ за допомогою бібліотеки сітчастий. Це дає нам доступ до всіх функцій SageMaker, не виходячи з середовища мови R.

Трубопровід, який ми будуємо, має такі компоненти:

  • Етап попередньої обробки – Це завдання обробки SageMaker (з використанням sagemaker-r-processing контейнер), відповідальний за попередню обробку даних і поділ даних на навчальні та тестові набори даних.
  • Тренувальний крок – Це навчальна робота SageMaker (з використанням sagemaker-r-train-n-deploy контейнер), відповідальний за навчання моделі. У цьому прикладі ми навчаємо просту лінійну модель.
  • Етап оцінки – Це завдання обробки SageMaker (з використанням sagemaker-r-processing контейнер), відповідальний за виконання оцінки моделі. Зокрема, у цьому прикладі нас цікавить RMSE (середньоквадратична помилка) для тестового набору даних, який ми хочемо використати на наступному кроці, а також пов’язати з самою моделлю.
  • Умовний крок – Це умовний крок, властивий конвеєрам SageMaker, який дозволяє розгалужувати логіку конвеєра на основі певного параметра. У цьому випадку конвеєр розгалужується на основі значення RMSE, обчисленого на попередньому кроці.
  • Крок реєстрації моделі – Якщо попередній умовний крок є True, і продуктивність моделі прийнятна, тоді модель реєструється в реєстрі моделей. Для отримання додаткової інформації див Реєструйте та розгортайте моделі за допомогою реєстру моделей.

Спочатку викличте функцію upsert, щоб створити (або оновити) конвеєр, а потім викличте функцію start, щоб фактично запустити конвеєр:

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

Огляньте конвеєр і реєстр моделей

Однією з чудових переваг використання RStudio на SageMaker є те, що, перебуваючи на платформі SageMaker, ви можете використовувати правильний інструмент для потрібної роботи та швидко перемикатися між ними залежно від того, що вам потрібно зробити.

Як тільки ми почнемо запуск конвеєра, ми зможемо перейти на Студія Amazon SageMaker, що дозволяє нам візуалізувати конвеєр і контролювати його поточний і попередній запуски.

Щоб переглянути подробиці про конвеєр, який ми щойно створили та запустили, перейдіть до інтерфейсу Studio IDE, виберіть Ресурси SageMakerвиберіть Трубопроводи у спадному меню та виберіть конвеєр (у цьому випадку AbalonePipelineUsingR).

Створюйте конвеєри створення моделей Amazon SageMaker і розгортайте моделі R за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Це розкриває деталі конвеєра, включаючи всі поточні та попередні запуски. Виберіть останній, щоб відкрити візуальне представлення конвеєра, як показано на знімку екрана нижче.

DAG конвеєра автоматично створюється службою на основі залежностей даних між кроками, а також на основі доданих настроюваних залежностей (у цьому прикладі жодних не додано).

Коли запуск завершиться, у разі успіху ви побачите, що всі кроки стануть зеленими.

Створюйте конвеєри створення моделей Amazon SageMaker і розгортайте моделі R за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Вибір будь-якого з окремих кроків відкриває подробиці про конкретний крок, включаючи вхідні дані, виходи, журнали та параметри початкової конфігурації. Це дає змогу детально ознайомитися з конвеєром і дослідити будь-які невдалі кроки.

Подібним чином, коли конвеєр завершує роботу, модель зберігається в реєстрі моделей. Щоб отримати доступ до нього, у Ресурси SageMaker панель, виберіть Модельний реєстр у спадному списку та виберіть свою модель. Це відкриває список зареєстрованих моделей, як показано на наступному знімку екрана. Виберіть одну, щоб відкрити сторінку з інформацією про конкретну версію моделі.

Створюйте конвеєри створення моделей Amazon SageMaker і розгортайте моделі R за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Відкривши версію моделі, виберіть оновлення статусу та Схвалювати затвердити модель.

На цьому етапі, виходячи з вашого випадку використання, ви можете налаштувати це схвалення для ініціювання подальших дій, включаючи розгортання моделі відповідно до ваших потреб.

Безсерверне розгортання моделі

Після того, як ви навчили та зареєстрували модель на SageMaker, розгортання моделі на SageMaker є простим.

Є кілька варіантів того, як ви можете розгорнути модель, як-от пакетний висновок, кінцеві точки в реальному часі або асинхронні кінцеві точки. Кожен метод має кілька необхідних конфігурацій, включаючи вибір потрібного типу екземпляра, а також механізму масштабування.

У цьому прикладі ми використовуємо нещодавно анонсовану функцію SageMaker, Безсерверний висновок (у режимі попереднього перегляду на момент написання), щоб розгорнути нашу модель R на безсерверній кінцевій точці. Для цього типу кінцевої точки ми лише визначаємо обсяг оперативної пам’яті, який ми хочемо виділити моделі для висновку, а також максимальну кількість дозволених одночасних викликів моделі. SageMaker піклується про розміщення моделі та автоматичне масштабування за потреби. Ви платите лише за точну кількість секунд і даних, використаних моделлю, без оплати за час простою.

Ви можете розгорнути модель на безсерверній кінцевій точці за допомогою такого коду:

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

Якщо ви бачите помилку ClientError: An error occurred (ValidationException) when calling the CreateModel operation: Invalid approval status "PendingManualApproval" модель, яку ви хочете розгорнути, не схвалена. Виконайте кроки з попереднього розділу, щоб затвердити свою модель.

Викличте кінцеву точку, надіславши запит до кінцевої точки HTTP, яку ми розгорнули, або натомість скористайтеся SageMaker SDK. У наступному коді ми викликаємо кінцеву точку на деяких тестових даних:

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)

Кінцева точка, яку ми викликали, була безсерверною кінцевою точкою, тому з нас стягується плата за точну тривалість і використані дані. Ви можете помітити, що під час першого виклику кінцевої точки відповідь займає приблизно секунду. Це пов’язано з часом холодного запуску безсерверної кінцевої точки. Якщо незабаром ви зробите ще один виклик, модель поверне прогноз у реальному часі, оскільки вже тепло.

Коли ви закінчите експериментувати з кінцевою точкою, ви можете видалити її за допомогою такої команди:

predictor$delete_endpoint(delete_endpoint_config=TRUE)

Висновок

У цій публікації ми розглянули процес створення конвеєра SageMaker за допомогою R у нашому середовищі RStudio та продемонстрували, як розгорнути нашу модель R на безсерверній кінцевій точці на SageMaker за допомогою реєстру моделей SageMaker.

Завдяки поєднанню RStudio та SageMaker тепер ви можете створювати та оркеструвати повні наскрізні робочі процеси машинного навчання на AWS, використовуючи обрану нами мову, R.

Щоб глибше зануритися в це рішення, я рекомендую вам переглянути вихідний код цього рішення, а також інші приклади на GitHub.


Про автора

Створюйте конвеєри створення моделей Amazon SageMaker і розгортайте моделі R за допомогою RStudio на Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Георгіос Схінас є спеціалістом архітектора рішень для AI/ML у регіоні EMEA. Він знаходиться в Лондоні і тісно співпрацює з клієнтами у Великобританії та Ірландії. Georgios допомагає клієнтам розробляти та розгортати програми машинного навчання у виробництві на AWS, особливо цікавлячись практиками MLOps і дозволяючи клієнтам виконувати машинне навчання в масштабі. У вільний час він любить подорожувати, готувати і проводити час з друзями та родиною.

Часова мітка:

Більше від AWS Машинне навчання