Передайте навчання для моделей класифікації тексту TensorFlow в Amazon SageMaker

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

Ця публікація є третьою в серії про нові вбудовані алгоритми в SageMaker. В перший пост, ми показали, як SageMaker надає вбудований алгоритм для класифікації зображень. В друга посада, ми показали, як SageMaker надає вбудований алгоритм для виявлення об’єктів. Сьогодні ми повідомляємо, що SageMaker надає новий вбудований алгоритм для класифікації тексту за допомогою TensorFlow. Цей контрольований алгоритм навчання підтримує перенесення навчання для багатьох попередньо навчених моделей, доступних у Концентратор TensorFlow. Він приймає фрагмент тексту як вхідні дані та виводить ймовірність для кожної з міток класу. Ви можете налаштувати ці попередньо навчені моделі за допомогою навчання передачі, навіть якщо великий корпус тексту недоступний. Він доступний через SageMaker вбудовані алгоритми, а також через Інтерфейс SageMaker JumpStart in Студія Amazon SageMaker. Для отримання додаткової інформації див Класифікація тексту і зразок зошита Вступ до JumpStart – Класифікація тексту.

Класифікація тексту за допомогою TensorFlow у SageMaker забезпечує перенесення навчання на багатьох попередньо навчених моделях, доступних у TensorFlow Hub. Відповідно до кількості міток класів у навчальних даних рівень класифікації додається до попередньо навченої моделі концентратора TensorFlow. Рівень класифікації складається з шару відсіву та щільного шару, повністю зв’язаного шару, з регуляризатором 2 норм, який ініціалізується випадковими вагами. Навчання моделі має гіперпараметри для швидкості випадання шару випадання та коефіцієнт регуляризації L2 для щільного шару. Тоді або всю мережу, включаючи попередньо навчену модель, або лише верхній класифікаційний рівень можна точно налаштувати на нових навчальних даних. У цьому режимі навчання передачі навчання можна досягти навіть із меншим набором даних.

Як використовувати новий алгоритм класифікації тексту TensorFlow

У цьому розділі описано, як використовувати алгоритм класифікації тексту TensorFlow із SageMaker Python SDK. Інформацію про те, як використовувати його з інтерфейсу користувача Studio, див SageMaker JumpStart.

Алгоритм підтримує перенесення навчання для попередньо підготовлених моделей, перелічених у Моделі Tensorflow. Кожна модель має унікальний ідентифікатор model_id. У наведеному нижче коді показано, як точно налаштувати базову модель BERT, ідентифіковану model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 на спеціальному навчальному наборі даних. Для кожного model_id, щоб запустити навчальне завдання SageMaker через Оцінювач класу SDK SageMaker Python, ви повинні отримати URI зображення Docker, URI навчального сценарію та URI попередньо навченої моделі за допомогою службових функцій, наданих у SageMaker. URI сценарію навчання містить увесь необхідний код для обробки даних, завантаження попередньо навченої моделі, навчання моделі та збереження навченої моделі для висновку. URI попередньо підготовленої моделі містить визначення архітектури попередньо підготовленої моделі та параметри моделі. Попередньо підготовлений URI моделі є специфічним для конкретної моделі. Попередньо навчені архівні файли моделей попередньо завантажено з TensorFlow і збережено з відповідним підписом моделі в Служба простого зберігання Amazon (Amazon S3) відер, так що завдання навчання виконується в ізоляції мережі. Перегляньте наступний код:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

За допомогою цих специфічних для моделі навчальних артефактів ви можете побудувати об’єкт Оцінювач клас:

# Create SageMaker Estimator instance
tf_tc_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

Далі, щоб передати навчання на вашому спеціальному наборі даних, вам може знадобитися змінити значення за замовчуванням гіперпараметрів навчання, які перелічені в Гіперпараметри. Ви можете отримати словник Python цих гіперпараметрів із значеннями за замовчуванням за допомогою виклику hyperparameters.retrieve_default, оновіть їх за потреби, а потім передайте їх класу Estimator. Зауважте, що значення за замовчуванням деяких гіперпараметрів відрізняються для різних моделей. Для великих моделей розмір партії за замовчуванням менший і train_only_top_layer гіперпараметр має значення True. Гіперпараметр Train_only_top_layer визначає, які параметри моделі змінюються під час процесу тонкого налаштування. Якщо train_only_top_layer is True, то параметри шарів класифікації змінюються, а решта параметрів залишаються незмінними під час процесу тонкого налаштування. З іншого боку, якщо train_only_top_layer is False, то всі параметри моделі будуть точно налаштовані. Перегляньте наступний код:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Ми надаємо SST2 як стандартний набір даних для точного налаштування моделей. Набір даних містить позитивні та негативні відгуки про фільми. Його було завантажено з TensorFlow при Ліцензія Apache 2.0. Наступний код надає набір навчальних даних за умовчанням, розміщений у сегментах S3.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Нарешті, щоб запустити навчальне завдання SageMaker для точного налаштування моделі, викличте .fit на об’єкті класу Estimator, передаючи розташування Amazon S3 набору навчальних даних:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Щоб отримати додаткові відомості про те, як використовувати новий алгоритм класифікації тексту SageMaker TensorFlow для передачі навчання на спеціальному наборі даних, розгортання точно налаштованої моделі, виконання висновків на розгорнутій моделі та розгортання попередньо навченої моделі без попереднього тонкого налаштування у спеціальному наборі даних див. такий приклад блокнота: Вступ до JumpStart – Класифікація тексту.

Інтерфейс введення/виведення для алгоритму класифікації тексту TensorFlow

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

У наведених нижче інструкціях описано, як мають бути відформатовані навчальні дані для введення в модель:

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

Нижче наведено приклад вхідного файлу CSV. Зауважте, що файл не повинен мати заголовка. Файл має бути розміщено у сегменті S3 із таким шляхом: s3://bucket_name/input_directory/. Зауважте, що в кінці / не потрібно.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

Висновок за допомогою алгоритму класифікації тексту TensorFlow

Згенеровані моделі можна розмістити для висновків і допоміжного тексту як application/x-text тип вмісту. Вихідні дані містять значення ймовірності, мітки класів для всіх класів і прогнозовану мітку, що відповідає індексу класу з найвищою ймовірністю, закодованому у форматі JSON. Модель обробляє один рядок на запит і виводить лише один рядок. Нижче наведено приклад відповіді у форматі JSON:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept встановлений в application/json, тоді модель виводить лише ймовірності. Щоб отримати докладніші відомості про навчання та висновки, перегляньте зразок зошита Introduction to Вступ до JumpStart – Класифікація тексту.

Використовуйте вбудовані алгоритми SageMaker через інтерфейс користувача JumpStart

Ви також можете використовувати класифікацію тексту SageMaker TensorFlow та будь-які інші вбудовані алгоритми кількома клацаннями миші через інтерфейс користувача JumpStart. JumpStart — це функція SageMaker, яка дозволяє навчати та розгортати вбудовані алгоритми та попередньо навчені моделі з різних фреймворків ML і концентраторів моделей через графічний інтерфейс. Крім того, це дозволяє розгортати повноцінні рішення ML, які об’єднують моделі ML та різні інші служби AWS для вирішення цільового сценарію використання.

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

Налаштуйте попередньо підготовлену модель

Ось процес тонкого налаштування попередньо навченої моделі класифікації тексту.

Розгорніть налаштовану модель

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

Висновок

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

Для отримання додаткової інформації перегляньте документація і зразок зошита Вступ до JumpStart – Класифікація тексту.


Про авторів

Передайте навчання для моделей текстової класифікації TensorFlow в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Вівек Мадан є прикладним науковцем з Команда Amazon SageMaker JumpStart. Він отримав ступінь доктора філософії в Університеті Іллінойсу в Урбана-Шампейн і був науковим співробітником у технічному університеті Джорджії. Він є активним дослідником машинного навчання та розробки алгоритмів і публікував статті на конференціях EMNLP, ICLR, COLT, FOCS і SODA.

Передайте навчання для моделей текстової класифікації TensorFlow в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Жоао Моура є архітектором спеціалістів із штучного інтелекту та ML в Amazon Web Services. Він здебільшого зосереджений на сценаріях використання НЛП і допомагає клієнтам оптимізувати навчання та розгортання моделі глибокого навчання. Він також є активним прихильником рішень ML з низьким кодом і апаратного забезпечення, спеціалізованого на ML.

Передайте навчання для моделей текстової класифікації TensorFlow в Amazon SageMaker PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Ашиш Хетан є старшим вченим-прикладником с Вбудовані алгоритми Amazon SageMaker і допомагає розробляти алгоритми машинного навчання. Він отримав ступінь доктора філософії в Університеті Іллінойсу Урбана Шампейн. Він активно досліджує машинне навчання та статистичні висновки та опублікував багато статей на конференціях NeurIPS, ICML, ICLR, JMLR, ACL та EMNLP.

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

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