Оптимізуйте гіперпараметри за допомогою Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

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

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

Що означає ця назва? Результат навчання ML, модель, можна в основному розглядати як сукупність параметрів, які вивчаються під час навчання. Таким чином, параметри, які використовуються для налаштування процесу навчання ML, тоді називаються гіперпараметрами — параметрами, що описують створення параметрів. У будь-якому випадку, вони дуже практичні, наприклад, кількість епох для навчання, швидкість навчання, максимальна глибина дерева рішень тощо. І ми приділяємо їм велику увагу, тому що вони мають великий вплив на кінцеву продуктивність вашої моделі.

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

У цій публікації ми налаштуємо та запустимо нашу першу роботу HPO за допомогою Автоматичне налаштування моделі Amazon SageMaker (AMT). Ми дізнаємося про методи, доступні для вивчення результатів, і створюємо деякі проникливі візуалізації наших випробувань HPO та дослідження простору гіперпараметрів!

Автоматичне налаштування моделі Amazon SageMaker

Як практик ML використовує SageMaker AMT, ви можете зосередитися на наступному:

  • Надання навчальної роботи
  • Визначення правильної цільової метрики, яка відповідає вашому завданню
  • Огляд простору пошуку гіперпараметрів

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

Давайте почнемо з використання SageMaker AMT для нашої першої простої роботи HPO, щоб навчити та налаштувати алгоритм XGBoost. Ми хочемо, щоб ваша подорож AMT була практичною та практичною, тому ми поділилися прикладом нижче GitHub сховище. Ця публікація охоплює 1_tuning_of_builtin_xgboost.ipynb зошит.

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

Передумови

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

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

Ми збираємося створити наскрізну установку для виконання нашого першого завдання HPO за допомогою SageMaker AMT. Коли наша робота з налаштування завершена, ми розглядаємо деякі з доступних методів для вивчення результатів, як через Консоль управління AWS і програмно через AWS SDK та API.

По-перше, ми ознайомлюємося з середовищем і навчанням SageMaker, запускаючи окреме навчальне завдання без будь-яких налаштувань наразі. Ми використовуємо алгоритм XGBoost, один із багатьох алгоритмів, наданих як a Вбудований алгоритм SageMaker (навчальний сценарій не потрібен!).

Ми бачимо, як SageMaker Training працює такими способами:

  • Запускає та зупиняє екземпляр
  • Забезпечує необхідну тару
  • Копіює дані навчання та перевірки в примірник
  • Керує навчанням
  • Збирає показники та журнали
  • Збирає та зберігає навчену модель

Потім ми переходимо до AMT і запускаємо завдання HPO:

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

Навчання вбудованого в SageMaker алгоритму XGBoost

Все починається з навчання моделі. Роблячи це, ми отримуємо уявлення про те, як працює SageMaker Training.

Ми хочемо скористатися перевагами швидкості та простоти використання SageMaker вбудовані алгоритми. Все, що нам потрібно, це кілька кроків, щоб почати навчання:

  1. Підготуйте та завантажте дані – Ми завантажуємо та готуємо наш набір даних як вхідні дані для XGBoost і завантажуємо його в наш Служба простого зберігання Amazon (Amazon S3) відро.
  2. Виберіть URI зображення нашого вбудованого алгоритму – SageMaker використовує цей URI для отримання нашого навчального контейнера, який у нашому випадку містить готовий до роботи сценарій навчання XGBoost. Підтримується кілька версій алгоритму.
  3. Дайте визначення гіперпараметрів – SageMaker надає інтерфейс для визначення гіперпараметри для нашого вбудованого алгоритму. Це ті самі гіперпараметри, які використовуються у версії з відкритим кодом.
  4. Побудуйте оцінку – Ми визначаємо параметри навчання, такі як тип екземпляра та кількість екземплярів.
  5. Викличте функцію fit(). – Ми починаємо тренувальну роботу.

На наступній діаграмі показано, як ці кроки працюють разом.

Надайте дані

Щоб запустити навчання ML, нам потрібно надати дані. Ми надаємо наші навчальні та перевірочні дані для SageMaker через Amazon S3.

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

sm_sess = sagemaker.session.Session([..])

BUCKET = sm_sess.default_bucket()
PREFIX = 'amt-visualize-demo'
output_path = f's3://{BUCKET}/{PREFIX}/output'

У блокноті ми використовуємо загальнодоступний набір даних і зберігаємо дані локально в data каталог. Потім ми завантажуємо дані навчання та перевірки на Amazon S3. Пізніше ми також визначаємо вказівники на ці місця, щоб передати їх до SageMaker Training.

# acquire and prepare the data (not shown here)
# store the data locally
[..]
train_data.to_csv('data/train.csv', index=False, header=False)
valid_data.to_csv('data/valid.csv', index=False, header=False)
[..]
# upload the local files to S3
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/train/train.csv')).upload_file('data/train.csv')
boto_sess.resource('s3').Bucket(BUCKET).Object(os.path.join(PREFIX, 'data/valid/valid.csv')).upload_file('data/valid.csv')

У цій публікації ми зосередимося на представленні HPO. Для ілюстрації ми використовуємо певний набір даних і завдання, щоб отримати вимірювання об’єктивних показників, які потім використовуємо для оптимізації вибору гіперпараметрів. Однак для загального поста ні дані, ні завдання не мають значення. Щоб представити вам повну картину, дозвольте коротко опишемо, що ми робимо: ми навчаємо модель XGBoost, яка має класифікувати рукописні цифри з
Набір даних оптичного розпізнавання рукописних цифр [1] через Scikit-learn. XGBoost — це чудовий алгоритм для структурованих даних, який навіть можна застосувати до набору даних Digits. Значеннями є зображення 8×8, як у наступному прикладі, де показано a
0 a
5 і
4.

Оптимізуйте гіперпараметри за допомогою Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Виберіть URI зображення XGBoost

Після вибору нашого вбудованого алгоритму (XGBoost) ми повинні отримати URI зображення та передати його в SageMaker для завантаження в наш екземпляр навчання. Для цього кроку ми переглядаємо доступні версії. Тут ми вирішили використовувати версію 1.5.1, яка пропонує останню версію алгоритму. Залежно від завдання, спеціалісти з ML можуть написати власний навчальний сценарій, який, наприклад, включає етапи підготовки даних. Але в нашому випадку це не обов'язково.

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

Наразі нам потрібен правильний URI зображення, вказавши алгоритм, регіон AWS і номер версії:

xgboost_container = sagemaker.image_uris.retrieve('xgboost', region, '1.5-1')

Це воно. Тепер у нас є посилання на алгоритм XGBoost.

Дайте визначення гіперпараметрів

Тепер ми визначимо наші гіперпараметри. Ці значення налаштовують спосіб навчання нашої моделі та, зрештою, впливають на ефективність моделі щодо об’єктивного показника, за яким ми вимірюємо, наприклад, точності в нашому випадку. Зауважте, що наведений нижче блок коду не стосується SageMaker. Ми фактично використовуємо версія з відкритим кодом XGBoost, щойно наданий і оптимізований для SageMaker.

Хоча кожен із цих гіперпараметрів можна конфігурувати та регулювати, цільова метрика multi:softmax визначається нашим набором даних і типом проблеми, яку ми вирішуємо. У нашому випадку набір даних Digits містить кілька міток (спостереження за рукописною цифрою може бути 0 or 1,2,3,4,5,6,7,8,9), тобто це проблема багатокласової класифікації.

hyperparameters = {
    'num_class': 10,
    'max_depth': 5,
    'eta':0.2,
    'alpha': 0.2,
    'objective':'multi:softmax',
    'eval_metric':'accuracy',
    'num_round':200,
    'early_stopping_rounds': 5
}

Додаткову інформацію про інші гіперпараметри див Гіперпараметри XGBoost.

Побудуйте оцінку

Ми налаштовуємо навчання на об’єкт оцінювача, який є інтерфейсом високого рівня для SageMaker Training.

Далі ми визначаємо кількість екземплярів для навчання, тип екземпляра (на базі процесора чи GPU) і розмір підключеного сховища:

estimator = sagemaker.estimator.Estimator(
    image_uri=xgboost_container, 
    hyperparameters=hyperparameters,
    role=role,
    instance_count=1, 
    instance_type='ml.m5.large', 
    volume_size=5, # 5 GB 
    output_path=output_path
)

Тепер у нас є конфігурація інфраструктури, яка потрібна для початку. Про все інше подбає SageMaker Training.

Викличте функцію fit().

Пам’ятаєте дані, які ми раніше завантажували в Amazon S3? Тепер створюємо посилання на нього:

s3_input_train = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/train', content_type='csv')
s3_input_valid = TrainingInput(s3_data=f's3://{BUCKET}/{PREFIX}/data/valid', content_type='csv')

Виклик до fit() запускає наше навчання. Ми передаємо посилання на навчальні дані, які ми щойно створили, щоб вказати SageMaker Training на наші дані навчання та перевірки:

estimator.fit({'train': s3_input_train, 'validation': s3_input_valid})

Зауважте, що для запуску HPO пізніше нам насправді не потрібно телефонувати fit() тут. Пізніше нам просто потрібен об’єкт оцінки для HPO, і ми можемо просто перейти до створення нашого завдання HPO. Але оскільки ми хочемо дізнатися про навчання SageMaker і побачити, як виконати окреме навчальне завдання, ми викликаємо його тут і переглядаємо результат.

Після початку навчання ми починаємо бачити результат під клітинками, як показано на наступному знімку екрана. Вихід доступний у Amazon CloudWatch так і в цьому зошиті.

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

Вихід із функції fit() у Jupyter Notebook

Також зауважте, що в кінці вихідного завдання відображається тривалість навчання в секундах і оплачувані секунди.

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

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

Огляньте поточні та попередні навчальні місця

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

Консольний перегляд завдань SageMaker Training

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

На наступному знімку екрана показано вигляд консолі нашого навчального завдання.

Консольний перегляд окремого навчального завдання SageMaker

Ми можемо переглядати інформацію, яку ми отримали як вихідну інформацію для нашого fit() функціонувати в індивідуальному навчальному завданні в консолі SageMaker разом із параметрами та метаданими, які ми визначили в нашому інструменті оцінки.

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

Перегляд консолі вкладки моніторингу в навчальній роботі

Це показує нам журнали екземплярів у CloudWatch.

Перегляд консолі журналів примірників навчання в CloudWatch

Також запам’ятайте гіперпараметри, які ми вказали в нашому зошиті для навчального завдання. Ми також бачимо їх тут у тому самому інтерфейсі користувача навчального завдання.

Перегляд гіперпараметрів завдання SageMaker Training у консолі

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

У цей момент ви можете запитати, чому саме це стосується оптимізації гіперпараметрів? Це тому, що ви можете шукати, перевіряти та глибше занурюватися в ті випробування HPO, які нас цікавлять. Можливо, ті, які мають найкращі результати, або ті, які демонструють цікаву поведінку. Ми залишимо вам, що ви визначите як «цікаве». Це дає нам загальний інтерфейс для перевірки наших навчальних завдань, і ви можете використовувати його з пошуком SageMaker.

Незважаючи на те, що SageMaker AMT керує завданнями HPO, всі випробування HPO запускаються як окремі навчальні завдання SageMaker, і до них можна отримати доступ як таким.

Навчання завершено, приступаємо до налаштування!

Навчіть і налаштуйте вбудований алгоритм XGBoost SageMaker

Щоб налаштувати нашу модель XGBoost, ми збираємося повторно використовувати існуючі гіперпараметри та визначимо для них діапазони значень, які ми хочемо вивчити. Думайте про це як про розширення кордонів дослідження в нашому просторі пошуку гіперпараметрів. Наша робота з налаштування буде брати зразки з простору пошуку та запускати навчальні завдання для нових комбінацій значень. У наведеному нижче коді показано, як вказати діапазони гіперпараметрів, з яких SageMaker AMT має вибірку:

from sagemaker.tuner import IntegerParameter, ContinuousParameter, HyperparameterTuner

hpt_ranges = {
    'alpha': ContinuousParameter(0.01, .5),
    'eta': ContinuousParameter(0.1, .5),
    'min_child_weight': ContinuousParameter(0., 2.),
    'max_depth': IntegerParameter(1, 10)
}

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

Ми ще не проводили жодних експериментів, тому не знаємо діапазонів хороших значень для наших гіперпараметрів. Тому ми починаємо з обґрунтованого припущення, використовуючи наші знання про алгоритми та нашу документацію щодо гіперпараметрів для вбудованих алгоритмів. Це визначає початкову точку для визначення простору пошуку.

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

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

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

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

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

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

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

n_jobs = 50
n_parallel_jobs = 3

tuner_parameters = {
    'estimator': estimator, # The same estimator object we defined above
    'base_tuning_job_name': 'bayesian',
    'objective_metric_name': 'validation:accuracy',
    'objective_type': 'Maximize',
    'hyperparameter_ranges': hpt_ranges,
    'strategy': 'Bayesian',
    'max_jobs': n_jobs,
    'max_parallel_jobs': n_parallel_jobs
}

Ще раз телефонуємо fit(), так само, як коли ми запустили єдине навчальне завдання раніше в публікації. Але цього разу на об’єкті налаштування, а не на об’єкті оцінки. Це розпочинає роботу з налаштування, а AMT, у свою чергу, починає роботу з навчання.

tuner = HyperparameterTuner(**tuner_parameters)
tuner.fit({'train': s3_input_train, 'validation': s3_input_valid}, wait=False)
tuner_name = tuner.describe()['HyperParameterTuningJobName']
print(f'tuning job submitted: {tuner_name}.')

Наступна схема розширює нашу попередню архітектуру, включаючи HPO з SageMaker AMT.

Огляд навчання SageMaker та оптимізації гіперпараметрів за допомогою SageMaker AMT

Ми бачимо, що наше завдання HPO подано. Залежно від кількості випробувань, визначених n_jobs і рівень паралелізації, це може зайняти деякий час. У нашому прикладі може знадобитися до 30 хвилин для 50 випробувань лише з рівнем паралелізації 3.

tuning job submitted: bayesian-221102-2053.

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

Досліджуйте завдання AMT на консолі

Давайте знайдемо нашу роботу з налаштування на консолі SageMaker, вибравши Навчання на панелі навігації, а потім Роботи з налаштування гіперпараметрів. Це дає нам список наших завдань AMT, як показано на наступному знімку екрана. Тут ми знаходимо наш bayesian-221102-2053 роботу з налаштування та переконайтеся, що вона завершена.

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

Давайте ближче розглянемо результати цієї роботи HPO.

Ми досліджували отримання результатів програмним шляхом у ноутбук. Спочатку через SageMaker Python SDK, яка є бібліотекою Python з відкритим кодом вищого рівня, яка надає спеціальний API для SageMaker. Потім через Бото3, який надає нам API нижчого рівня для SageMaker та інших служб AWS.

Використовуючи SageMaker Python SDK, ми можемо отримати результати нашої роботи HPO:

sagemaker.HyperparameterTuningJobAnalytics(tuner_name).dataframe()[:10]

Це дозволило нам проаналізувати результати кожного з наших випробувань у Pandas DataFrame, як показано на наступному знімку екрана.

Таблиця Pandas у Jupyter Notebook із результатами та метаданими маршрутів, виконаних для нашої роботи HPO

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

На цій же сторінці, вибравши наш bayesian-221102-2053 tuning job надає нам список випробувань, які були виконані для нашої роботи з налаштування. Кожне випробування HPO тут є навчальним завданням SageMaker. Згадайте раніше, коли ми навчали нашу єдину модель XGBoost і досліджували завдання навчання на консолі SageMaker. Ми можемо зробити те саме для наших випробувань тут.

Коли ми досліджуємо наші випробування, ми це бачимо bayesian-221102-2053-048-b59ec7b4 створив найкращу модель із точністю перевірки приблизно 89.815%. Давайте дослідимо, які гіперпараметри призвели до такої продуктивності, вибравши Найкраща навчальна робота Вкладка.

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

Ми можемо побачити детальний перегляд найкращих оцінених гіперпараметрів.

Перегляд на консолі окремої роботи з налаштування, що показує деталі найкращої роботи з навчання

Ми відразу бачимо, які значення гіперпараметрів призвели до цієї чудової продуктивності. Однак ми хочемо знати більше. Ви можете здогадатися що? Ми це бачимо alpha приймає приблизне значення 0.052456 і, аналогічно, eta встановлено на 0.433495. Це говорить нам про те, що ці значення працювали добре, але це мало говорить нам про сам простір гіперпараметрів. Наприклад, ми можемо запитати, чи 0.433495 для eta було найвищим перевіреним значенням, чи є місце для зростання та вдосконалення моделі шляхом вибору вищих значень.

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

Візуалізуйте наші випробування

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

from amtviz import visualize_tuning_job
visualize_tuning_job(tuner, trials_only=True)

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

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

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

На наступних діаграмах показано точність перевірки на осі ординат max_depth, alpha, eta та min_child_weight на осі х відповідно. Ми нанесли всю нашу роботу HPO на кожну діаграму. Кожна точка є одним випробуванням, і кожна діаграма містить усі 50 випробувань, але окремо для кожного гіперпараметра. Це означає, що наше найефективніше дослідження, №48, представлене рівно однією синьою крапкою на кожній із цих діаграм (яку ми виділили для вас на наступному малюнку). Ми можемо візуально порівняти його ефективність у контексті всіх інших 49 випробувань. Отже, давайте придивимося.

захоплююче! Ми одразу бачимо, які регіони наших визначених діапазонів у нашому просторі гіперпараметрів є найефективнішими! Повертаючись до нашого eta значення, тепер зрозуміло, що вибірка значень, ближчих до 0, давала гіршу продуктивність, тоді як наближення до нашої межі, 0.5, дає кращі результати. Схоже, що для alpha та max_depth здається, має більш обмежений набір бажаних значень. Дивлячись на max_depth, ви також можете побачити, як використання байєсівської стратегії наказує SageMaker AMT частіше відбирати значення, про які він дізнався, що добре працювали в минулому.

Чотири діаграми, що показують точність перевірки на осі y, причому кожна діаграма показує max_depth, alpha, eta, min_child_weight на осі x відповідно. Кожна точка даних представляє одне випробування HPO

Дивлячись на наших eta значення, ми можемо запитати, чи варто досліджувати його далі праворуч, можливо, за межами 0.45? Чи продовжує він зменшуватися до нижчої точності, чи нам тут потрібні додаткові дані? Це питання є частиною мети запуску нашої першої роботи HPO. Це дає нам зрозуміти, які області простору гіперпараметрів нам слід досліджувати далі.

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

Прибирати

Щоб уникнути небажаних витрат після того, як ви закінчите експериментувати з HPO, ви повинні видалити всі файли у вашому сегменті S3 із префіксом amt-visualize-demo а також вимкнути ресурси Studio.

Запустіть наведений нижче код у своєму блокноті, щоб видалити всі файли S3 із цієї публікації.

!aws s3 rm s3://{BUCKET}/amt-visualize-demo --recursive

Якщо ви бажаєте зберегти набори даних або артефакти моделі, ви можете змінити префікс у коді на amt-visualize-demo/data лише видалити дані або amt-visualize-demo/output щоб видалити лише артефакти моделі.

Висновок

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

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

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

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

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

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

А поки бажаємо вам і вашим моделям щасливого навчання та налаштування!

посилання

Цитати:

[1] Дуа Д. та Графф К. (2019). Репозиторій машинного навчання UCI [http://archive.ics.uci.edu/ml]. Ірвін, Каліфорнія: Каліфорнійський університет, Школа інформації та комп’ютерних наук.


Про авторів

Оптимізуйте гіперпараметри за допомогою Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Ендрю Еллул є архітектором рішень Amazon Web Services. Працює з малим і середнім бізнесом Німеччини. Поза роботою Андрій любить досліджувати природу пішки чи на велосипеді.

Оптимізуйте гіперпараметри за допомогою Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Еліна Лесик є архітектором рішень у Мюнхені. Вона зосереджена на корпоративних клієнтах із галузі фінансових послуг. У вільний час Еліна любить вивчати теорію гри на гітарі іспанською мовою для перехресного навчання та бігати.

Оптимізуйте гіперпараметри за допомогою Amazon SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Маріано Камп є головним архітектором рішень Amazon Web Services. Він працює з клієнтами фінансових послуг у Німеччині над машинним навчанням. У вільний час Маріано любить піші прогулянки з дружиною.

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

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