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

Имена задач конфигурационного файла:

  • text_classification
  • text-classification
  • text_regression
  • text-regression

Формат данных

Классификация текста/регрессия поддерживает наборы данных как в форматах CSV, так и в формате JSONL.

Формат CSV

Давайте разработаем модель для классификации настроений в обзоре фильма. Данные должны быть в следующем формате CSV:

text,target
"this movie is great",positive
"this movie is bad",negative
.
.
.

Как вы можете видеть, в CSV-файле у нас есть два столбца. Один столбец - это текст, а другой - метка. Меткой может быть любая строка. В этом примере у нас есть две метки: положительная и отрицательная. Вы можете использовать столько меток, сколько захотите.

И если вы хотите обучить модель оценивать рецензию на фильм по шкале от 1 до 5 баллов. Данные могут быть следующими:

text,target
"this movie is great",4.9
"this movie is bad",1.5
.
.
.

Формат JSONL

Вместо CSV вы также можете использовать формат JSONL. Формат JSONL должен быть следующим:

{"text": "this movie is great", "target": "positive"}
{"text": "this movie is bad", "target": "negative"}
.
.
.

и для регрессии:

{"text": "this movie is great", "target": 4.9}
{"text": "this movie is bad", "target": 1.5}
.
.

Столбец Отображение / Имена

В вашем наборе данных CSV должно быть два столбца: text и target. Если имена ваших столбцов отличаются от text и target, вы можете сопоставить столбец набора данных с именами столбцов AutoTrain.

Обучение

Локальное Обучение

Чтобы обучить текстовую классификационную/регрессионную модель локально, вы можете использовать команду autotrain --config config.yaml.

Вот пример файла config.yaml для обучения модели классификации текста:

task: text_classification # or text_regression
base_model: google-bert/bert-base-uncased
project_name: autotrain-bert-imdb-finetuned
log: tensorboard
backend: local

data:
  path: stanfordnlp/imdb
  train_split: train
  valid_split: test
  column_mapping:
    text_column: text
    target_column: label

params:
  max_seq_length: 512
  epochs: 3
  batch_size: 4
  lr: 2e-5
  optimizer: adamw_torch
  scheduler: linear
  gradient_accumulation: 1
  mixed_precision: fp16

hub:
  username: ${HF_USERNAME}
  token: ${HF_TOKEN}
  push_to_hub: true

В этом примере мы обучаем модель классификации текста, используя модель google-bert/bert-base-uncased на основе набора данных IMDB. Мы используем набор данных stanfordnlp/imdb, который уже доступен на Hugging Face Hub. Мы обучаем модель в течение 3 периодов с размером пакета 4 и скоростью обучения 2e-5. Мы используем оптимизатор adamw_torch и линейный планировщик. Мы также используем смешанное прецизионное обучение с накоплением градиента, равным 1.

Если вы хотите использовать локальный набор данных CSV/JSONL, вы можете изменить раздел данных на:

data:
  path: data/ # это должен быть путь к каталогу, содержащему действительные файлы train
  train_split: train # это должен быть либо train.csv, либо train.json
  valid_split: valid # это должен быть либо файл valid.csv, либо файл valid.json
  column_mapping:
    text_column: text # это должно быть название столбца, содержащего текст
    target_column: label # это должно быть имя столбца, содержащего целевой объект

Чтобы обучить модель, выполните следующую команду:

$ autotrain --config config.yaml

Вы можете найти примеры конфигурационных файлов для классификации текста и регрессии здесь и здесь соответственно.

Тренировка на Hugging Face Spaces

Параметры для тренировки на Hugging Face Spaces такие же, как и для локального обучения. Если вы используете свой собственный набор данных, выберите “Local” в качестве источника набора данных и загрузите свой набор данных. На следующем скриншоте мы обучаем модель классификации текста, используя модель google-bert/bert-base-uncased на основе набора данных IMDB.

AutoTrain Text Classification on Hugging Face Spaces

Для текстовой регрессии все, что вам нужно сделать, это выбрать “Text Regression” в качестве задачи, и все остальное останется прежним (кроме данных, конечно).

Параметры тренировки

Параметры обучения для классификации текста и регрессии одинаковы.

class autotrain.trainers.text_classification.params.TextClassificationParams

( 
    data_path: str = None,
    model: str = 'bert-base-uncased',
    lr: float = 5e-05,
    epochs: int = 3,
    max_seq_length: int = 128,
    batch_size: int = 8,
    warmup_ratio: float = 0.1,
    gradient_accumulation: int = 1,
    optimizer: str = 'adamw_torch',
    scheduler: str = 'linear',
    weight_decay: float = 0.0,
    max_grad_norm: float = 1.0,
    seed: int = 42,
    train_split: str = 'train',
    valid_split: typing.Optional[str] = None,
    text_column: str = 'text',
    target_column: str = 'target',
    logging_steps: int = -1,
    project_name: str = 'project-name',
    auto_find_batch_size: bool = False,
    mixed_precision: typing.Optional[str] = None,
    save_total_limit: int = 1,
    token: typing.Optional[str] = None,
    push_to_hub: bool = False,
    eval_strategy: str = 'epoch',
    username: typing.Optional[str] = None,
    log: str = 'none',
    early_stopping_patience: int = 5,
    early_stopping_threshold: float = 0.01 
) 

Parameters

  • data_path (str) — Путь к набору данных.
  • model (str) — Название используемой модели. По умолчанию используется “bert-base-uncased”.
  • lr (float) — Скорость обучения. Значение по умолчанию 5e-5.
  • epochs (int) — Количество периодов обучения. Значение по умолчанию 3.
  • max_seq_length (int) — Максимальная длина последовательности. Значение по умолчанию 128.
  • batch_size (int) — Размер обучающего пакета. Значение по умолчанию  8.
  • warmup_ratio (float) — Пропорция прогрева. Значение по умолчанию  0.1.
  • gradient_accumulation (int) — Количество шагов накопления градиента. Значение по умолчанию равно 1.
  • optimizer (str) — Использовать оптимизатор. Значение по умолчанию - “adamw_torch”.
  • scheduler (str) — Использовать планировщик. Значение по умолчанию “linear” (линейный).
  • weight_decay (float) — Уменьшение веса. Значение по умолчанию равно 0.0.
  • max_grad_norm (float) — Максимальная норма градиента. Значение по умолчанию 1.0.
  • seed (int) — Случайное начальное число. Значение по умолчанию 42.
  • train_split (str) — Название тренировочного блока. По умолчанию используется “train”.
  • valid_split (Optional[str]) — Имя раздела проверки. Значение по умолчанию - None.
  • text_column (str) — Имя текстового столбца в наборе данных. По умолчанию используется “text”.
  • target_column (str) — Имя целевого столбца в наборе данных. Значение по умолчанию - “target”.
  • logging_steps (int) — Количество шагов между регистрациями. По умолчанию -1.
  • project_name (str) — Название проекта. По умолчанию используется “project-name”.
  • auto_find_batch_size (bool) — Следует ли автоматически определять размер пакета. Значение по умолчанию  False.
  • mixed_precision (Optional[str]) — Настройка смешанной точности (fp16, bf16 или None). По умолчанию None.
  • save_total_limit (int) — Общее количество сохраняемых контрольных точек. Значение по умолчанию -1.
  • token (Optional[str]) — Токен для аутентификации на хабе. Значение по умолчанию - None.
  • push_to_hub (bool) — Следует ли перемещать модель на хаб. Значение по умолчанию - False.
  • eval_strategy (str) — Стратегия оценки. Значение по умолчанию - “epoch”.
  • username (Optional[str]) — Имя пользователя Hugging Face. По умолчанию - None.
  • log (str) — Метод ведения журнала для отслеживания эксперимента. Значение по умолчанию - “none”.
  • early_stopping_patience (int) — Количество периодов без улучшений, по истечении которых обучение будет прекращено. Значение по умолчанию 5.
  • early_stopping_threshold (float) — Пороговое значение для определения нового оптимального значения для продолжения тренировки. Значение по умолчанию равно 0.01.

TextClassificationParams - это класс конфигурации для обучающих параметров текстовой классификации.