Предобработка текста для обучения

Эффективное обучение моделей ИИ с PyTorch

Dennis Lee

Data Engineer, Amazon

Преобразование текста: подготовка данных для обучения модели

  • Суммаризация текста в документах
  • Определение перефразирования
  • Датасет MRPC: пары предложений с метками

Высокая стопка документов, ожидающих проверки.

Эффективное обучение моделей ИИ с PyTorch

Структура датасета

from datasets import load_dataset
dataset = load_dataset("glue", "mrpc")
print(dataset)
DatasetDict({
    train: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    validation: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
    test: Dataset({
        features: ['sentence1', 'sentence2', 'label', 'idx'],
    })
})
Эффективное обучение моделей ИИ с PyTorch

Работа с текстовым датасетом

  • Вложенный словарь с разбиением на train/validation/test
  • Пример доступа к обучающей выборке:
dataset["train"]
  • Доступ к признакам датасета внутри выборки
  • Признаки датасета MRPC: sentence1, sentence2, label
dataset["train"]["sentence1"]
  • Загрузить предобученный токенизатор
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-cased")
Эффективное обучение моделей ИИ с PyTorch

Определение функции кодирования

  • Определить функцию для кодирования примеров из датасета
  • Вызвать токенизатор; извлечь sentence1 и sentence2 из примера
  • truncation: усечь входные данные, превышающие максимальную длину (512 токенов)
  • padding: дополнить короткие последовательности нулями до единой длины
def encode(example):

return tokenizer( example["sentence1"], example["sentence2"],
truncation=True,
padding="max_length", )
Эффективное обучение моделей ИИ с PyTorch

Форматирование имён столбцов

  • Применить encode к каждому примеру в обучающей выборке с помощью map
train_dataset = dataset["train"].map(encode, batched=True)
  • Переименовать label в labels
train_dataset = train_dataset.map(
    lambda examples: {"labels": examples["label"]}, batched=True
)
  • Требования модели к столбцам см. в документации Hugging Face
Эффективное обучение моделей ИИ с PyTorch

Сохранение и загрузка контрольных точек

  • Разместить датасет на доступных GPU
dataloader = DataLoader(train_dataset, batch_size=32, shuffle=True)
dataloader = accelerator.prepare(dataloader)
  • Работает с любым датасетом PyTorch (torch.utils.data.Dataset) в DataLoader
  • Сохранить состояние предобработанного текста — контрольную точку
checkpoint_dir = Path("preprocess_checkpoint")
accelerator.save_state(checkpoint_dir)
  • Загрузить контрольную точку для возобновления обучения
accelerator.load_state(checkpoint_dir)
Эффективное обучение моделей ИИ с PyTorch

Давайте попрактикуемся!

Эффективное обучение моделей ИИ с PyTorch

Preparing Video For Download...