Обучить текстовую классификационную/регрессионную модель с помощью 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.

If you want to use a local CSV/JSONL dataset, you can change the data section to:

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

You can find example config files for text classification and regression in the here and here respectively.

Тренировка на 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 - это класс конфигурации для обучающих параметров текстовой классификации.