«Сборщики данных в HuggingFace»
«Использование HuggingFace для сбора данных»
Что они такое и что они делают
Когда я начал изучать HuggingFace, коллаторы данных были одной из наименее интуитивных частей для меня. Мне было трудно их понять, и я не нашел достаточно хороших ресурсов, которые объясняли их интуитивно.
В этом посте мы рассмотрим, что такое коллаторы данных, чем они отличаются и как написать настраиваемый коллатор данных.
Коллаторы данных: общий уровень
Коллаторы данных – это неотъемлемая часть обработки данных в HuggingFace. Мы все использовали их после токенизации данных и передачи данных в объект Trainer для тренировки модели.
Вкратце, они объединяют список примеров в мини-пакет для тренировки. Что они делают, зависит от задачи, для которой они определены, но как минимум они заполняют или обрезают входные примеры, чтобы убедиться, что все примеры в мини-пакете имеют одинаковую длину. Типичный размер мини-пакетов составляет от 16 до 256 примеров, в зависимости от размера модели, данных и ограничений аппаратного обеспечения.
Коллаторы данных являются задаче-специфичными. Есть коллатор данных для каждой из следующих задач:
- Предсказание языка (CLM)
- Маскирование языковой модели (MLM)
- Классификация последовательностей
- Seq2Seq
- Токенизация классификации
Некоторые коллаторы данных просты. Например, для задачи “классификация последовательности” коллатор данных просто должен заполнить все последовательности в мини-пакете, чтобы убедиться, что они имеют одинаковую длину. Затем он объединит их в один тензор.
Некоторые коллаторы данных довольно сложные, поскольку им нужно обрабатывать данные для этой задачи.
Основные коллаторы данных
Два из самых базовых коллаторов данных следующие:
1)DefaultDataCollator: Он не делает никакого заполнения или обрезания. Он предполагает, что все входные примеры имеют одинаковую длину. Если ваши входные примеры имеют разную длину, то возникнут ошибки.
import torchfrom transformers import DefaultDataCollatortexts = ["Привет, мир", "Как дела?"]# Токенизацияfrom transformers import AutoTokenizertokenizer =…