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

Організуйте свою подорож машинного навчання за допомогою Amazon SageMaker Experiments і Amazon SageMaker Pipelines

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

Amazon SageMaker дозволяє командам використовувати переваги широкого спектру функцій для швидкої підготовки, створення, навчання, розгортання та моніторингу моделей машинного навчання. Трубопроводи Amazon SageMaker забезпечує повторюваний процес для повторення дій зі створення моделі та інтегрований з Експерименти Amazon SageMaker. За замовчуванням кожен конвеєр SageMaker пов’язано з експериментом, і кожен запуск цього конвеєра відстежується як пробна версія в цьому експерименті. Тоді ваші ітерації автоматично відстежуються без будь-яких додаткових кроків.

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

Чому важливо організовувати свої експерименти?

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

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

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

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

Переваги SageMaker Experiments

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

Почнемо з огляду того, що можна робити за допомогою експериментів.

  • Організувати досліди – Експерименти структурують експерименти з сутністю верхнього рівня під назвою an експеримент який містить набір випробування. Кожне випробування містить набір кроків, які називаються пробні компоненти. Кожен пробний компонент — це комбінація наборів даних, алгоритмів і параметрів. Ви можете представити експерименти як папку верхнього рівня для впорядкування ваших гіпотез, ваші випробування як вкладені папки для кожного групового тестового запуску, а ваші пробні компоненти як файли для кожного екземпляра тестового запуску.
  • Відстежуйте експерименти – Експерименти дозволяють дослідникам даних відстежувати експерименти. Він пропонує можливість автоматично призначати завдання SageMaker для пробної версії за допомогою простих конфігурацій і за допомогою пакетів SDK для відстеження.
  • Порівняти та оцінити досліди – Інтеграція Experiments with Студія Amazon SageMaker дозволяє легко створювати візуалізацію даних і порівнювати різні випробування. Ви також можете отримати доступ до пробних даних через Python SDK, щоб створити власну візуалізацію, використовуючи бажані бібліотеки графіків.

Щоб дізнатися більше про Experiments API та SDK, ми рекомендуємо наведену нижче документацію. Створити експеримент та Amazon SageMaker Experiments Python SDK.

Якщо ви хочете зануритися глибше, рекомендуємо заглянути в amazon-sagemaker-examples/sagemaker-experiments Репозиторій GitHub для подальших прикладів.

Інтеграція між конвеєрами та експериментами

Конвеєри побудови моделей, які є частиною Pipelines, створені спеціально для ML і дозволяють вам керувати своїми завданнями зі створення моделі за допомогою інструменту конвеєра, який включає власну інтеграцію з іншими функціями SageMaker, а також гнучкість розширення вашого конвеєра за допомогою кроків, які виконуються за межами SageMaker. . Кожен крок визначає дію, яку виконує конвеєр. Залежності між кроками визначаються прямим ациклічним графіком (DAG), побудованим за допомогою Pipelines Python SDK. Ви можете створити конвеєр SageMaker програмним шляхом за допомогою того самого SDK. Після розгортання конвеєра ви можете додатково візуалізувати його робочий процес у Studio.

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

Робочий процес, який ми представляємо в цьому прикладі, складається з ряду кроків: етап попередньої обробки, щоб розділити наш вхідний набір даних на набори даних навчання, тестування та перевірки; крок налаштування, щоб налаштувати наші гіперпараметри та розпочати навчальні завдання для навчання моделі за допомогою Вбудований алгоритм XGBoost; і, нарешті, модельний крок для створення моделі SageMaker з найкраще навченого модельного артефакту. Pipelines також пропонує кілька вбудованих підтримок види кроків за межами того, що обговорюється в цій публікації. Ми також показуємо, як можна відстежувати робочий процес конвеєра та генерувати показники та порівняльні діаграми. Крім того, ми показуємо, як пов’язати створене нове випробування з існуючим експериментом, який міг бути створений до визначення конвеєра.

Код трубопроводів SageMaker

Переглянути та завантажити зошит можна з GitHub сховище пов’язані з цією публікацією. Ми дивимося на специфічний для Pipelines код, щоб краще зрозуміти його.

Конвеєри дозволяють передавати параметри під час виконання. Тут ми визначаємо типи екземплярів обробки та навчання та кількість під час виконання з попередньо встановленими значеннями за замовчуванням:

base_job_prefix = "pipeline-experiment-sample"
model_package_group_name = "pipeline-experiment-model-package"

processing_instance_count = ParameterInteger(
  name="ProcessingInstanceCount", default_value=1
)

training_instance_count = ParameterInteger(
  name="TrainingInstanceCount", default_value=1
)

processing_instance_type = ParameterString(
  name="ProcessingInstanceType", default_value="ml.m5.xlarge"
)
training_instance_type = ParameterString(
  name="TrainingInstanceType", default_value="ml.m5.xlarge"
)

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

Конвеєри дозволяють нам досягти версії даних програмним способом за допомогою змінних, що залежать від виконання, як-от ExecutionVariables.PIPELINE_EXECUTION_ID, який є унікальним ідентифікатором лінії конвеєра. Ми можемо, наприклад, створити унікальний ключ для зберігання вихідних наборів даних Служба простого зберігання Amazon (Amazon S3), який прив’язує їх до певного трубопроводу. Повний список змінних див Змінні виконання.

framework_version = "0.23-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=processing_instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-ca-housing",
    role=role,
)

process_step = ProcessingStep(
    name="ca-housing-preprocessing",
    processor=sklearn_processor,
    outputs=[
        ProcessingOutput(
            output_name="train",
            source="/opt/ml/processing/train",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "train",
                ],
            ),
        ),
        ProcessingOutput(
            output_name="validation",
            source="/opt/ml/processing/validation",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "validation",
                ],
            )
        ),
        ProcessingOutput(
            output_name="test",
            source="/opt/ml/processing/test",
            destination=Join(
                on="/",
                values=[
                    "s3://{}".format(bucket),
                    prefix,
                    ExecutionVariables.PIPELINE_EXECUTION_ID,
                    "test",
                ],
            )
        ),
    ],
    code="california-housing-preprocessing.py",
)

Потім ми переходимо до створення об’єкта оцінки для навчання моделі XGBoost. Ми встановлюємо деякі статичні гіперпараметри, які зазвичай використовуються з XGBoost:

model_path = f"s3://{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"

image_uri = sagemaker.image_uris.retrieve(
    framework="xgboost",
    region=region,
    version="1.2-2",
    py_version="py3",
    instance_type=training_instance_type,
)

xgb_train = Estimator(
    image_uri=image_uri,
    instance_type=training_instance_type,
    instance_count=training_instance_count,
    output_path=model_path,
    base_job_name=f"{base_job_prefix}/ca-housing-train",
    sagemaker_session=sagemaker_session,
    role=role,
)

xgb_train.set_hyperparameters(
    eval_metric="rmse",
    objective="reg:squarederror",  # Define the object metric for the training job
    num_round=50,
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.7
)

Ми виконуємо гіперпараметричне налаштування моделей, які створюємо, використовуючи a ContinuousParameter асортимент для lambda. Вибір одного показника як об’єктивного показника повідомляє тюнеру (екземпляру, який запускає завдання налаштування гіперпараметрів), що ви оцінюватимете завдання навчання на основі цього конкретного показника. Тюнер повертає найкращу комбінацію на основі найкращого значення для цього об’єктивного показника, тобто найкращу комбінацію, яка мінімізує найкращу середньоквадратичну помилку (RMSE).

objective_metric_name = "validation:rmse"

hyperparameter_ranges = {
    "lambda": ContinuousParameter(0.01, 10, scaling_type="Logarithmic")
}

tuner = HyperparameterTuner(estimator,
                            objective_metric_name,
                            hyperparameter_ranges,
                            objective_type=objective_type,
                            strategy="Bayesian",
                            max_jobs=10,
                            max_parallel_jobs=3)

tune_step = TuningStep(
    name="HPTuning",
    tuner=tuner_log,
    inputs={
        "train": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "train"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
        "validation": TrainingInput(
            s3_data=process_step.properties.ProcessingOutputConfig.Outputs[
                "validation"
            ].S3Output.S3Uri,
            content_type="text/csv",
        ),
    } 
)

На етапі налаштування виконується кілька випробувань з метою визначення найкращої моделі серед перевірених діапазонів параметрів. З методом get_top_model_s3_uri, ми оцінюємо 50 найефективніших версій URI S3 артефакту моделі та вилучаємо лише найефективнішу версію (ми вказуємо k=0 для кращого), щоб створити модель SageMaker.

model_bucket_key = f"{default_bucket}/{base_job_prefix}/ca-housing-experiment-pipeline"
model_candidate = Model(
    image_uri=image_uri,
    model_data=tune_step.get_top_model_s3_uri(top_k=0, s3_bucket=model_bucket_key),
    sagemaker_session=sagemaker_session,
    role=role,
    predictor_cls=XGBoostPredictor,
)

create_model_step = CreateModelStep(
    name="CreateTopModel",
    model=model_candidate,
    inputs=sagemaker.inputs.CreateModelInput(instance_type="ml.m4.large"),
)

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

Ви можете додатково налаштувати інтеграцію конвеєрів із Experiments, створивши a PipelineExperimentConfig і передати його об’єкту конвеєра. Два параметри визначають назву експерименту, який буде створено, і випробування, яке стосуватиметься всього циклу конвеєра.

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

#Pipeline experiment config
ca_housing_experiment_config = PipelineExperimentConfig(
    experiment_name,
    Join(
        on="-",
        values=[
            "pipeline-execution",
            ExecutionVariables.PIPELINE_EXECUTION_ID
        ],
    )
)

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

pipeline_name = f"CAHousingExperimentsPipeline"

pipeline = Pipeline(
    name=pipeline_name,
    pipeline_experiment_config=ca_housing_experiment_config,
    parameters=[
        processing_instance_count,
        processing_instance_type,
        training_instance_count,
        training_instance_type
    ],
    steps=[process_step,tune_step,create_model_step],
)

Повноцінний конвеєр створений і готовий до роботи. Ми додаємо роль виконання в конвеєр і запускаємо його. Звідси ми можемо перейти до консолі SageMaker Studio Pipelines і візуально відстежувати кожен крок. Ви також можете отримати доступ до пов’язаних журналів із консолі, щоб налагодити конвеєр.

pipeline.upsert(role_arn=sagemaker.get_execution_role())
execution = pipeline.start()

На попередньому знімку екрана зеленим кольором показано успішно запущений конвеєр. Ми отримуємо показники одного випробування з прогону конвеєра з таким кодом:

# SM Pipeline injects the Execution ID into trial component names
execution_id = execution.describe()['PipelineExecutionArn'].split('/')[-1]
source_arn_filter = Filter(
    name="TrialComponentName", operator=Operator.CONTAINS, value=execution_id
)

source_type_filter = Filter(
    name="Source.SourceType", operator=Operator.EQUALS, value="SageMakerTrainingJob"
)

search_expression = SearchExpression(
    filters=[source_arn_filter, source_type_filter]
)

trial_component_analytics = ExperimentAnalytics(
    sagemaker_session=sagemaker_session,
    experiment_name=experiment_name,
    search_expression=search_expression.to_boto()
)

analytic_table = trial_component_analytics.dataframe()
analytic_table.head()

Порівняйте показники для кожного пробного компонента

Результати налаштування гіперпараметрів можна побудувати в Studio або за допомогою інших бібліотек побудови Python. Ми показуємо обидва способи зробити це.

Ознайомтеся з показниками навчання та оцінювання в Studio

Studio надає інтерактивний інтерфейс користувача, за допомогою якого можна створювати інтерактивні графіки. Кроки такі:

  1. Вибирати Експерименти та випробування від Ресурси SageMaker значок на лівій бічній панелі.
  2. Виберіть експеримент, щоб відкрити його.
  3. Виберіть (клацніть правою кнопкою миші) випробування, яке вас цікавить.
  4. Вибирати Відкрити в пробному списку компонентів.
  5. прес Shift вибрати пробні компоненти, що представляють навчальні роботи.
  6. Вибирати Додайте діаграму.
  7. Вибирати Нова діаграма і налаштуйте його для побудови зібраних показників, які ви хочете проаналізувати. Для нашого випадку використання виберіть наступне:
    1. для Тип даних¸ виберіть Зведена статистика.
    2. для Тип діаграми¸ виберіть Діаграма розкиду.
    3. для Вісь Xвиберіть lambda.
    4. для Вісь Yвиберіть validation:rmse_last.

Нова діаграма з’явиться в нижній частині вікна з позначкою «8».

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

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

Аналітика з SageMaker Experiments

Після завершення конвеєрного запуску ми можемо швидко візуалізувати порівняння різних варіантів моделі з точки зору показників, зібраних під час навчання. Раніше ми експортували всі пробні показники в a Панди DataFrame використання ExperimentAnalytics. Ми можемо відтворити сюжет, отриманий у Studio, використовуючи бібліотеку Matplotlib.

analytic_table.plot.scatter("lambda", "validation:rmse - Last", grid=True)

Висновок

Вбудована інтеграція між SageMaker Pipelines і SageMaker Experiments дозволяє дослідникам даних автоматично організовувати, відстежувати та візуалізувати експерименти під час розробки моделей. Ви можете створювати експерименти, щоб організувати всю свою роботу з розробки моделі, наприклад:

  • Бізнес-випадок використання, який ви розглядаєте, як-от створення експерименту для прогнозування відтоку клієнтів
  • Наприклад, експеримент, який належить команді з аналізу даних щодо маркетингової аналітики
  • Спеціальний проект із науки про дані та ML

У цій публікації ми занурилися в Pipelines, щоб показати, як ви можете використовувати їх у тандемі з Experiments для організації повністю автоматизованого наскрізного робочого процесу.

Як наступний крок ви можете використовувати ці три функції SageMaker – Studio, Experiments і Pipelines – для свого наступного проекту ML.

Рекомендована література


Про авторів

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

Організуйте свою подорож машинного навчання за допомогою Amazon SageMaker Experiments і Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Маріо Бургуан є старшим архітектором партнерських рішень для AWS, фахівцем зі штучного інтелекту/ML і глобальним технічним керівником MLOps. Він працює з корпоративними клієнтами та партнерами, розгортаючи рішення AI у хмарі. Він має понад 30 років досвіду роботи з машинним навчанням і штучним інтелектом у стартапах і на підприємствах, починаючи зі створення однієї з перших комерційних систем машинного навчання для великих даних. Маріо проводить свій вільний час, граючись зі своїми трьома бельгійськими тервюренами, готуючи обід для своєї родини та вивчаючи математику та космологію.

Організуйте свою подорож машинного навчання за допомогою Amazon SageMaker Experiments і Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Ганапаті Крішнамурті є старшим архітектором рішень ML в AWS. Ganapathi надає директивні вказівки для стартапів і корпоративних клієнтів, допомагаючи їм розробляти та розгортати хмарні програми в масштабі. Він спеціалізується на машинному навчанні та зосереджений на тому, щоб допомогти клієнтам використовувати AI/ML для досягнення результатів у бізнесі. Коли він не на роботі, він любить гуляти на природі та слухати музику.

Організуйте свою подорож машинного навчання за допомогою Amazon SageMaker Experiments і Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Валері Саунтакіт є архітектором рішень для AWS, працює в ігровій індустрії та з партнерами, які розгортають рішення ШІ. Вона прагне побудувати свою кар’єру навколо комп’ютерного зору. Свій вільний час Валерія витрачає на подорожі, відкриття нових закладів харчування та зміну інтер’єру будинку.

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

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