Классификация и регрессия текста
Обучить текстовую классификационную/регрессионную модель с помощью 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.
Для текстовой регрессии все, что вам нужно сделать, это выбрать “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 - это класс конфигурации для обучающих параметров текстовой классификации.