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