Відстежуйте свої експерименти ML від кінця до кінця за допомогою Data Version Control і Amazon SageMaker Experiments PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Відстежуйте свої експерименти ML від кінця до кінця за допомогою Data Version Control і Amazon SageMaker Experiments

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

У цьому дописі наведено приклад того, як відстежувати свої експерименти з кодом, даними, артефактами та показниками за допомогою Експерименти Amazon SageMaker в поєднанні з Контроль версій даних (DVC). Ми показуємо, як можна використовувати DVC поруч із Amazon SageMaker обробки та навчання робочих місць. Ми навчаємо різні моделі CatBoost на каліфорнійському наборі даних про житло Репозиторій StatLib, а також змінювати стратегії очікування, відстежуючи версію даних за допомогою DVC. У кожному окремому експерименті ми відстежуємо вхідні та вихідні артефакти, код і показники за допомогою SageMaker Experiments.

Експерименти SageMaker

SageMaker Experiments — це сервіс AWS для відстеження експериментів з машинним навчанням (ML). The SageMaker Experiments Python SDK це інтерфейс високого рівня для цієї служби, який допомагає відстежувати інформацію про експеримент за допомогою Python.

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

Обговорюючи експерименти SageMaker, ми посилаємося на такі поняття:

  • експеримент – Колекція пов’язаних випробувань. Ви додаєте випробування до експерименту, які хочете разом порівняти.
  • Суд – Опис багатоетапного робочого процесу ML. Кожен крок робочого процесу описується пробним компонентом.
  • Пробний компонент – Опис окремого кроку в робочому процесі ML, наприклад очищення даних, вилучення функцій, навчання моделі або оцінка моделі.
  • Tracker – Менеджер контексту Python для реєстрації інформації про один пробний компонент (наприклад, параметри, показники або артефакти).

Контроль версій даних

Контроль версій даних (DVC) — це новий тип програмного забезпечення для керування версіями даних, робочим процесом і експериментами, яке базується на Git (хоча він може працювати автономно). DVC зменшує розрив між усталеними наборами інженерних інструментів і потребами в наукових даних, дозволяючи вам скористатися новими перевагами риси повторно використовуючи наявні навички та інтуїцію.

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

DVC має такі особливості:

  • DVC - це a безкоштовно, відкрите джерело командного рядка інструмент.
  • DVC працює поверх сховищ Git і має подібний інтерфейс командного рядка та процес, як Git. DVC також може працювати автономно, але без Версію можливостей.
  • Керування версіями даних увімкнено шляхом заміни великих файлів, каталогів наборів даних, моделей ML тощо на маленькі метафайли (легко працювати з Git). Ці заповнювачі вказують на вихідні дані, які не пов’язані з керуванням вихідним кодом.
  • Ви можете використовувати локальне або хмарне сховище для зберігання даних проекту окремо від його бази коду. Ось як дослідники даних можуть передавати великі набори даних або ділитися моделлю, навченою GPU, іншим.
  • DVC робить проекти науки про дані відтворюваними, створюючи легкі дані трубопроводи використовуючи неявні графи залежностей і кодифікуючи залучені дані та артефакти.
  • DVC не залежить від платформи. Він працює на всіх основних операційних системах (Linux, macOS та Windows) і працює незалежно від мов програмування (Python, R, Julia, сценарії оболонки тощо) або бібліотек ML (Keras, TensorFlow, PyTorch, Scipy та більше), які використовуються в проекті.
  • DVC швидко встановлювати і не потребує спеціальної інфраструктури, а також не залежить від API чи зовнішніх служб. Це окремий інструмент CLI.

Експерименти SageMaker і зразок DVC

Наступні Зразок GitHub показує, як використовувати DVC у середовищі SageMaker. Зокрема, ми розглядаємо, як створити власний образ із бібліотеками DVC, встановленими за замовчуванням, щоб забезпечити узгоджене середовище розробки для ваших спеціалістів із обробки даних у Студія Amazon SageMakerі як запустити DVC разом із керованою інфраструктурою SageMaker для обробки та навчання. Крім того, ми показуємо, як збагатити інформацію відстеження SageMaker інформацією про версії даних із DVC і візуалізувати їх у консолі Studio.

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

Створіть власний образ Studio з уже встановленим DVC

В цьому GitHub сховище, ми пояснюємо, як створити власний образ для Studio, де вже встановлено DVC. Перевага створення образу та надання його доступу всім користувачам Studio полягає в тому, що це створює узгоджене середовище для користувачів Studio, яке вони також можуть запускати локально. Хоча зразок заснований на AWS Cloud9, ви також можете створити контейнер на локальній машині, якщо у вас встановлено та запущено Docker. Цей зразок базується на наступному Докер-файл та середовище.yml. Отриманий образ Docker зберігається в Реєстр контейнерів Amazon Elastic (Amazon EMR) у вашому обліковому записі AWS. Перегляньте наступний код:

# Login to ECR
aws --region ${REGION} ecr get-login-password | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom

# Create the ECR repository
aws --region ${REGION} ecr create-repository --repository-name smstudio-custom

# Build the image - it might take a few minutes to complete this step
docker build . -t ${IMAGE_NAME} -t ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

# Push the image to ECR
docker push ${ACCOUNT_ID}.dkr.ecr.${REGION}.amazonaws.com/smstudio-custom:${IMAGE_NAME}

Тепер ви можете створити новий домен Studio or оновити наявний домен Studio який має доступ до щойно створеного образу Docker.

Ми використовуємо Набір хмарних розробок AWS (AWS CDK), щоб створити такі ресурси через AWS CloudFormation:

  • Роль виконання SageMaker із відповідними дозволами для вашого нового чи наявного домену Studio
  • Образ SageMaker і версія образу SageMaker із образу Docker conda-env-dvc-kernel які ми створили раніше
  • An AppImageConfig який визначає, як має бути налаштований шлюз ядра
  • Користувач Studio (data-scientist-dvc) з правильною роллю виконання SageMaker і доступним для нього нестандартним образом Studio

Докладні інструкції див Пов’яжіть власне зображення з SageMaker Studio.

Запустіть лабораторію

Щоб запустити лабораторію, виконайте наступні кроки:

  1. У домені Studio запустіть Studio для data-scientist-dvc користувач.
  2. Виберіть піктограму Git, а потім виберіть Клонуйте репозиторій.
    Клонуйте репозиторій
  3. Введіть URL-адресу сховища (https://github.com/aws-samples/amazon-sagemaker-experiments-dvc-demo) і виберіть Клон.Клонувати кнопку репо
  4. У браузері файлів виберіть amazon-sagemaker-experiments-dvc-demo сховище
  5. Відкрийте dvc_sagemaker_script_mode.ipynb зошит.
  6. для Нестандартне зображення, виберіть образ conda-env-dvc-kernel.
  7. Вибирати Select.
    conda-env-dvc-ядро

Налаштуйте DVC для керування версіями даних

Ми створюємо підкаталог, де готуємо дані: sagemaker-dvc-sample. У цьому підкаталозі ми ініціалізуємо нове сховище Git і встановлюємо віддалений репозиторій, створений у Комісія AWS. Мета полягає в тому, щоб мати версії конфігурацій DVC і файлів для відстеження даних у цьому репозиторії. Однак Git пропонує нативні можливості для керування підпроектами, наприклад, через підмодулі git і піддерева git, і ви можете розширити цей зразок, щоб використовувати будь-який із вищезгаданих інструментів, який найкраще підходить для вашого робочого процесу.

Основною перевагою використання CodeCommit із SageMaker у нашому випадку є його інтеграція з Управління ідентифікацією та доступом AWS (IAM) для автентифікації та авторизації, тобто ми можемо використовувати ролі IAM для надсилання та отримання даних без необхідності отримання облікових даних (або ключів SSH). Налаштування відповідних дозволів для ролі виконання SageMaker також дозволяє блокноту Studio та завданням навчання та обробки SageMaker безпечно взаємодіяти з CodeCommit.

Хоча ви можете замінити CodeCommit будь-якою іншою службою керування джерелами, такою як GitHub, Gitlab або Bitbucket, вам потрібно розглянути, як обробляти облікові дані для вашої системи. Однією з можливостей є збереження цих облікових даних на Менеджер секретів AWS і отримати їх під час виконання з блокнота Studio, а також із завдань обробки та навчання SageMaker.

Ініціалізація DVC

Обробляйте та навчайтеся за допомогою DVC і SageMaker

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

Налаштуйте експеримент SageMaker

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

Створюємо експеримент під назвою DEMO-sagemaker-experiments-dvc з двома випробуваннями, dvc-trial-single-file та dvc-trial-multi-files, кожен з яких представляє різну версію набору даних.

Давайте створимо DEMO-sagemaker-experiments-dvc експеримент:

from smexperiments.experiment import Experiment
from smexperiments.trial import Trial
from smexperiments.trial_component import TrialComponent
from smexperiments.tracker import Tracker

experiment_name = 'DEMO-sagemaker-experiments-dvc'

# create the experiment if it doesn't exist
try:
    my_experiment = Experiment.load(experiment_name=experiment_name)
    print("existing experiment loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_experiment = Experiment.create(
            experiment_name = experiment_name,
            description = "How to integrate DVC"
        )
        print("new experiment created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Тест 1: Створення окремих файлів для навчання та перевірки

У цьому розділі ми створюємо сценарій обробки, який отримує необроблені дані безпосередньо з Служба простого зберігання Amazon (Amazon S3) як вхідні дані; обробляє його для створення наборів даних навчання, перевірки та тестування; і зберігає результати в Amazon S3 за допомогою DVC. Крім того, ми показуємо, як ви можете відстежувати вихідні артефакти, створені DVC за допомогою SageMaker під час виконання завдань обробки та навчання, а також за допомогою SageMaker Experiments.

По-перше, ми створюємо dvc-trial-single-file і додайте його до DEMO-sagemaker-experiments-dvc експеримент. Таким чином ми зберігаємо всі пробні компоненти, пов’язані з цим тестом, організованими у змістовний спосіб.

first_trial_name = "dvc-trial-single-file"

try:
    my_first_trial = Trial.load(trial_name=first_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_first_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=first_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

Використовуйте DVC у завданні обробки SageMaker, щоб створити однофайлову версію

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

Нарешті, ми об’єднуємо можливості відстеження DVC із можливостями відстеження SageMaker під час виконання завдань обробки через SageMaker Experiments.

Сценарій обробки очікує адресу сховища Git і гілки, яку ми хочемо створити для зберігання метаданих DVC, переданих через змінні середовища. Самі набори даних зберігаються в Amazon S3 компанією DVC. Хоча змінні середовища автоматично відстежуються в SageMaker Experiments і відображаються в параметрах пробного компонента, ми можемо захотіти збагатити пробні компоненти додатковою інформацією, яка потім стає доступною для візуалізації в інтерфейсі користувача Studio за допомогою об’єкта трекера. У нашому випадку параметри пробних компонентів включають наступне:

  • DVC_REPO_URL
  • DVC_BRANCH
  • USER
  • data_commit_hash
  • train_test_split_ratio

Сценарій попередньої обробки клонує репозиторій Git; генерує набори даних навчання, перевірки та тестування; і синхронізує його за допомогою DVC. Як згадувалося раніше, під час використання DVC ми не можемо скористатися перевагами рідних можливостей завантаження даних SageMaker. Окрім погіршення продуктивності, яке може відбутися на великих наборах даних, ми також втрачаємо можливості автоматичного відстеження артефактів виводу. Однак завдяки трекеру та API DVC Python ми можемо компенсувати ці недоліки, отримувати таку інформацію під час виконання та зберігати її в пробній версії без зусиль. Додаткова цінність цього полягає в тому, щоб мати єдине подання вхідних і вихідних артефактів, які належать до цього конкретного завдання обробки.

Повний сценарій попередньої обробки Python доступний у GitHub репо.

with Tracker.load() as tracker:
    tracker.log_parameters({"data_commit_hash": commit_hash})
    for file_type in file_types:
        path = dvc.api.get_url(
            f"{data_path}/{file_type}/california_{file_type}.csv",
            repo=dvc_repo_url,
            rev=dvc_branch
        )
        tracker.log_output(name=f"california_{file_type}",value=path)

SageMaker дає нам можливість запускати наш сценарій обробки зображень контейнерів, керованих AWS, оптимізованих для роботи в інфраструктурі AWS. Якщо наш сценарій вимагає додаткових залежностей, ми можемо надати a requirements.txt файл. Коли ми починаємо роботу з обробки, SageMaker використовує pip-install встановити всі потрібні нам бібліотеки (наприклад, бібліотеки, пов’язані з DVC). Якщо вам потрібно мати більш жорсткий контроль над усіма бібліотеками, встановленими на контейнерах, ви можете додати свій власний контейнер у SageMaker, наприклад для обробка та навчання.

Тепер у нас є всі інгредієнти для роботи з обробкою SageMaker:

  • Сценарій обробки, який може обробляти кілька аргументів (--train-test-split-ratio) і дві змінні середовища (DVC_REPO_URL та DVC_BRANCH)
  • A requiremets.txt файл
  • Репозиторій Git (у CodeCommit)
  • Експеримент і випробування SageMaker
from sagemaker.processing import FrameworkProcessor, ProcessingInput
from sagemaker.sklearn.estimator import SKLearn

dvc_repo_url = "codecommit::{}://sagemaker-dvc-sample".format(region)
dvc_branch = my_first_trial.trial_name

script_processor = FrameworkProcessor(
    estimator_cls=SKLearn,
    framework_version='0.23-1',
    instance_count=1,
    instance_type='ml.m5.xlarge',
    env={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    },
    role=role
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Потім ми запускаємо завдання обробки за допомогою preprocessing-experiment.py скрипт experiment_config, dvc_repo_url та dvc_branch ми визначили раніше.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.2"]
)

Обробка займає приблизно 5 хвилин. Тепер ви можете переглянути деталі пробної версії для набору даних одного файлу.

На наступному знімку екрана показано, де можна знайти збережену інформацію в Studio. Зверніть увагу на значення для dvc-trial-single-file in DVC_BRANCH, DVC_REPO_URL та data_commit_hash на параметри Вкладка.

Вкладка параметрів SageMaker Experiments

Також зверніть увагу на деталі введення та виведення на Артефакти Вкладка.

Вкладка артефактів SageMaker Experiments

Створіть оцінювач і підберіть модель з однофайловою версією даних

Щоб використовувати інтеграцію DVC у навчальному завданні SageMaker, ми передаємо a dvc_repo_url та dvc_branch як змінні середовища під час створення об’єкта Estimator.

Ми тренуємося на dvc-trial-single-file гілка перша.

Під час отримання даних за допомогою DVC ми використовуємо таку структуру набору даних:

dataset
    |-- train
    |   |-- california_train.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation.csv

Тепер ми створюємо Scikit-learn Estimator за допомогою SageMaker Python SDK. Це дозволяє нам визначити наступне:

  • Шлях до вихідного файлу Python, який слід запускати як точку входу до навчання.
  • Роль IAM, яка контролює дозволи для доступу до даних Amazon S3 і CodeCommit і запуску функцій SageMaker.
  • Список словників, які визначають показники, що використовуються для оцінки навчальних завдань.
  • Кількість і тип навчальних примірників. Ми використовуємо один ml.m5.large екземпляр.
  • Гіперпараметри, які використовуються для навчання.
  • Змінні середовища для використання під час навчальної роботи. Ми використовуємо DVC_REPO_URL, DVC_BRANCH та USER.
metric_definitions = [{'Name': 'median-AE', 'Regex': "AE-at-50th-percentile: ([0-9.]+).*$"}]

hyperparameters={ 
        "learning_rate" : 1,
        "depth": 6
    }
estimator = SKLearn(
    entry_point='train.py',
    source_dir='source_dir',
    role=role,
    metric_definitions=metric_definitions,
    hyperparameters=hyperparameters,
    instance_count=1,
    instance_type='ml.m5.large',
    framework_version='0.23-1',
    base_job_name='training-with-dvc-data',
    environment={
        "DVC_REPO_URL": dvc_repo_url,
        "DVC_BRANCH": dvc_branch,
        "USER": "sagemaker"
    }
)

experiment_config={
    "ExperimentName": my_experiment.experiment_name,
    "TrialName": my_first_trial.trial_name
}

Щоб розпочати навчання, ми викликаємо метод підгонки оцінювача за допомогою експерименту_config, який ми визначили раніше.

%%time
estimator.fit(experiment_config=experiment_config)

Виконання навчального завдання займає приблизно 5 хвилин. Журнали показують ці рядки, що вказують на файли, отримані DVC:

Running dvc pull command
A       train/california_train.csv
A       test/california_test.csv
A       validation/california_validation.csv
3 files added and 3 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train.csv']
Found validation files: ['/opt/ml/input/data/dataset/train/california_train.csv']

Тест 2: Створення кількох файлів для навчання та перевірки

Ми створюємо новий dvc-trial-multi-files випробування та додати його до поточного DEMO-sagemaker-experiments-dvc експеримент.

second_trial_name = "dvc-trial-multi-files"
try:
    my_second_trial = Trial.load(trial_name=second_trial_name)
    print("existing trial loaded")
except Exception as ex:
    if "ResourceNotFound" in str(ex):
        my_second_trial = Trial.create(
            experiment_name=experiment_name,
            trial_name=second_trial_name,
        )
        print("new trial created")
    else:
        print(f"Unexpected {ex}=, {type(ex)}")
        print("Dont go forward!")
        raise

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

Ви можете дослідити другий сценарій попередньої обробки Python на GitHub.

%%time

script_processor.run(
    code='./source_dir/preprocessing-experiment-multifiles.py',
    dependencies=['./source_dir/requirements.txt'],
    inputs=[ProcessingInput(source=s3_data_path, destination="/opt/ml/processing/input")],
    experiment_config=experiment_config,
    arguments=["--train-test-split-ratio", "0.1"]
)

Обробка займає приблизно 5 хвилин. Тепер ви можете переглянути деталі пробної версії для багатофайлового набору даних.

На наступних знімках екрана показано, де можна знайти збережену інформацію в SageMaker Experiments у Пробні компоненти в інтерфейсі користувача Studio. Зверніть увагу на значення для dvc-trial-multi-files in DVC_BRANCH, DVC_REPO_URL та data_commit_hash на параметри Вкладка.

Вкладка параметрів експериментів із кількома файлами SageMaker

Ви також можете переглянути деталі введення та виведення на Артефакти Вкладка.

Вкладка експериментів із кількома файлами SageMaker

Ми зараз тренуємося на dvc-trial-multi-files відділення. Під час отримання даних за допомогою DVC ми використовуємо таку структуру набору даних:

dataset
    |-- train
    |   |-- california_train_1.csv
    |   |-- california_train_2.csv
    |   |-- california_train_3.csv
    |   |-- california_train_4.csv
    |   |-- california_train_5.csv
    |-- test
    |   |-- california_test.csv
    |-- validation
    |   |-- california_validation_1.csv
    |   |-- california_validation_2.csv
    |   |-- california_validation_3.csv

Як і раніше, ми створюємо новий Scikit-learn Estimator із пробною назвою dvc-trial-multi-files і почати навчальну роботу.

%%time

estimator.fit(experiment_config=experiment_config)

Виконання навчального завдання займає приблизно 5 хвилин. У журналах навчальних завдань, виведених у блокнот, ви можете побачити ці рядки, що вказують на файли, отримані DVC:

Running dvc pull command
A       validation/california_validation_2.csv
A       validation/california_validation_1.csv
A       validation/california_validation_3.csv
A       train/california_train_4.csv
A       train/california_train_5.csv
A       train/california_train_2.csv
A       train/california_train_3.csv
A       train/california_train_1.csv
A       test/california_test.csv
9 files added and 9 files fetched
Starting the training.
Found train files: ['/opt/ml/input/data/dataset/train/california_train_2.csv', '/opt/ml/input/data/dataset/train/california_train_5.csv', '/opt/ml/input/data/dataset/train/california_train_4.csv', '/opt/ml/input/data/dataset/train/california_train_1.csv', '/opt/ml/input/data/dataset/train/california_train_3.csv']
Found validation files: ['/opt/ml/input/data/dataset/validation/california_validation_2.csv', '/opt/ml/input/data/dataset/validation/california_validation_1.csv', '/opt/ml/input/data/dataset/validation/california_validation_3.csv']

Розмістіть свою модель у SageMaker

Після навчання моделі ML ви можете розгорнути її за допомогою SageMaker. Щоб розгорнути постійну кінцеву точку в реальному часі, яка робить по одному прогнозу за раз, ми використовуємо Послуги хостингу в режимі реального часу SageMaker.

from sagemaker.serializers import CSVSerializer

predictor = estimator.deploy(1, "ml.t2.medium", serializer=CSVSerializer())

По-перше, ми отримуємо останній тестовий набір локально в блокноті розробки в Studio. З цією метою ми можемо використовувати dvc.api.read() щоб завантажити необроблені дані, збережені в Amazon S3 завданням обробки SageMaker.

import io
import dvc.api

raw = dvc.api.read(
    "dataset/test/california_test.csv",
    repo=dvc_repo_url,
    rev=dvc_branch
)

Потім ми готуємо дані за допомогою Pandas, завантажуємо тестовий файл CSV і викликаємо predictor.predict щоб викликати створену раніше кінцеву точку SageMaker з даними та отримати прогнози.

test = pd.read_csv(io.StringIO(raw), sep=",", header=None)
X_test = test.iloc[:, 1:].values
y_test = test.iloc[:, 0:1].values

predicted = predictor.predict(X_test)
for i in range(len(predicted)-1):
    print(f"predicted: {predicted[i]}, actual: {y_test[i][0]}")

Видаліть кінцеву точку

Вам слід видалити кінцеві точки, коли вони більше не використовуються, оскільки вони виставляються за час розгортання (додаткову інформацію див. Ціни на Amazon SageMaker). Обов’язково видаліть кінцеву точку, щоб уникнути неочікуваних витрат.

predictor.delete_endpoint()

Прибирати

Перш ніж видалити всі створені ресурси, переконайтеся, що всі програми видалено з data-scientist-dvc користувача, включаючи всі програми KernelGateway, а також програму JupiterServer за замовчуванням.

Потім ви можете знищити стек AWS CDK, виконавши таку команду:

cdk destroy

Якщо ви використовували існуючий домен, також виконайте такі команди:

# inject your DOMAIN_ID into the configuration file
sed -i 's/<your-sagemaker-studio-domain-id>/'"$DOMAIN_ID"'/' ../update-domain-no-custom-images.json
# update the sagemaker studio domain
aws --region ${REGION} sagemaker update-domain --cli-input-json file://../update-domain-no-custom-images.json

Висновок

У цій публікації ви показали приклад того, як відстежувати свої експерименти з кодом, даними, артефактами та показниками за допомогою SageMaker Experiments і завдань обробки та навчання SageMaker у поєднанні з DVC. Ми створили образ Docker, що містить DVC, який був необхідний для Studio як блокнот для розробки, і показали, як можна використовувати завдання обробки та навчання з DVC. Ми підготували дві версії даних і використовували DVC для керування ними за допомогою Git. Потім ви використали SageMaker Experiments для відстеження обробки та навчання з двома версіями даних, щоб мати уніфіковане уявлення про параметри, артефакти та показники в одній скляній панелі. Нарешті, ви розгорнули модель на кінцевій точці SageMaker і використали тестовий набір даних із другої версії набору даних, щоб викликати кінцеву точку SageMaker і отримати прогнози.

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

Для подальшого читання зверніться до таких ресурсів:


Про авторів

Паоло Ді ФранческоПаоло Ді Франческо є архітектором рішень в AWS. Має досвід у сфері телекомунікацій та розробки програмного забезпечення. Він захоплюється машинним навчанням і зараз зосереджується на використанні свого досвіду, щоб допомогти клієнтам досягти своїх цілей на AWS, зокрема в обговореннях навколо MLOps. Поза роботою він любить грати у футбол і читати.

Ейтан СелаЕйтан Села є спеціалістом з машинного навчання архітектором рішень Amazon Web Services. Він працює з клієнтами AWS, щоб надати рекомендації та технічну допомогу, допомагаючи їм створювати та використовувати рішення машинного навчання на AWS. У вільний час Ейтан любить бігати підтюпцем і читати останні статті про машинне навчання.

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

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