«Сборщики данных в HuggingFace»

«Использование HuggingFace для сбора данных»

Что они такое и что они делают

Изображение с unsplash.com

Когда я начал изучать HuggingFace, коллаторы данных были одной из наименее интуитивных частей для меня. Мне было трудно их понять, и я не нашел достаточно хороших ресурсов, которые объясняли их интуитивно.

В этом посте мы рассмотрим, что такое коллаторы данных, чем они отличаются и как написать настраиваемый коллатор данных.

Коллаторы данных: общий уровень

Коллаторы данных – это неотъемлемая часть обработки данных в HuggingFace. Мы все использовали их после токенизации данных и передачи данных в объект Trainer для тренировки модели.

Вкратце, они объединяют список примеров в мини-пакет для тренировки. Что они делают, зависит от задачи, для которой они определены, но как минимум они заполняют или обрезают входные примеры, чтобы убедиться, что все примеры в мини-пакете имеют одинаковую длину. Типичный размер мини-пакетов составляет от 16 до 256 примеров, в зависимости от размера модели, данных и ограничений аппаратного обеспечения.

Коллаторы данных являются задаче-специфичными. Есть коллатор данных для каждой из следующих задач:

  • Предсказание языка (CLM)
  • Маскирование языковой модели (MLM)
  • Классификация последовательностей
  • Seq2Seq
  • Токенизация классификации

Некоторые коллаторы данных просты. Например, для задачи “классификация последовательности” коллатор данных просто должен заполнить все последовательности в мини-пакете, чтобы убедиться, что они имеют одинаковую длину. Затем он объединит их в один тензор.

Некоторые коллаторы данных довольно сложные, поскольку им нужно обрабатывать данные для этой задачи.

Основные коллаторы данных

Два из самых базовых коллаторов данных следующие:

1)DefaultDataCollator: Он не делает никакого заполнения или обрезания. Он предполагает, что все входные примеры имеют одинаковую длину. Если ваши входные примеры имеют разную длину, то возникнут ошибки.

import torchfrom transformers import DefaultDataCollatortexts = ["Привет, мир", "Как дела?"]# Токенизацияfrom transformers import AutoTokenizertokenizer =…