Перенос обучения для моделей классификации текста TensorFlow в 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 с SDK для SageMaker Python. Для получения информации о том, как использовать его из пользовательского интерфейса Studio, см. SageMaker JumpStart.

Алгоритм поддерживает трансферное обучение для предварительно обученных моделей, перечисленных в Модели тензорного потока. Каждая модель идентифицируется уникальным model_id. Следующий код показывает, как точно настроить базовую модель BERT, идентифицированную model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 в пользовательском наборе обучающих данных. Для каждого model_id, чтобы запустить задание по обучению SageMaker через Оценщик класса SageMaker Python SDK, вам необходимо получить 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, то модель выводит только вероятности. Более подробную информацию об обучении и выводах см. в образце блокнота «Введение в Введение в JumpStart — Классификация текста.

Используйте встроенные алгоритмы SageMaker через пользовательский интерфейс JumpStart.

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

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

Точная настройка предварительно обученной модели

Вот процесс точной настройки той же предварительно обученной модели классификации текста.

Развертывание настроенной модели

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

Заключение

В этом посте мы объявили о запуске встроенного алгоритма классификации текста SageMaker TensorFlow. Мы предоставили пример кода для проведения трансферного обучения на пользовательском наборе данных с использованием предварительно обученной модели из концентратора TensorFlow с использованием этого алгоритма.

Для получения дополнительной информации, проверьте документации и блокнот для примера Введение в JumpStart — Классификация текста.


Об авторах

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

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

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

Отметка времени:

Больше от Машинное обучение AWS