Transformers documentation

Коллатор данных

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Коллатор данных

Объекты Data collators формируют батч, используя в качестве входных данных список элементов набора данных. Эти элементы имеют тот же тип, что и элементы train_dataset или eval_dataset.

Чтобы формировать батчи, коллакторы данных могут выполнять некоторые операции обработки (например, паддинг). Некоторые из них (например, DataCollatorForLanguageModeling) также применяют случайное аугментирование данных (например, случайное маскирование) к сформированному батчу.

Примеры использования можно найти в примерах в ноутбуках.

Коллатор данных по умолчанию

transformers.default_data_collator

< >

( features: listreturn_tensors = 'pt' )

Очень простой коллаборатор данных, который просто собирает батчи объектов, похожих на словари, и выполняет специальную обработку для потенциальных ключей с именами:

  • label: обрабатывает одно значение (int или float) на объект
  • label_ids: обрабатывает список значений для каждого объекта

Не выполняет дополнительную предобработку: имена свойств входного объекта используются в качестве соответствующих входов для модели. Примеры полезного применения — в glue и ner.

DefaultDataCollator

класс transformers.DefaultDataCollator

< >

( return_tensors: str = 'pt' )

Параметры

  • return_tensors (str, необязательный, по умолчанию "pt") — Тип возвращаемого Tensor. Допустимые значения: “np” или “pt”.

Очень простой коллаборатор данных, который просто собирает батчи объектов, похожих на словари, и выполняет специальную обработку для потенциальных ключей с именами:

  • label: обрабатывает одно значение (int или float) на объект
  • label_ids: обрабатывает список значений для каждого объекта

Не выполняет дополнительную предобработку: имена свойств входного объекта используются в качестве соответствующих входов для модели. Примеры полезного применения — в glue и ner.

Это объект (как и другие data collator'ы), а не чистая функция, подобная default_data_collator. Это может быть полезно, если вам нужно задать значение return_tensors при инициализации.

DataCollatorWithPadding

класс transformers.DataCollatorWithPadding

< >

( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt' )

Параметры

  • tokenizer (PreTrainedTokenizer или PreTrainedTokenizerFast) — Токенизатор, используемый для кодирования данных.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию True) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения и индекса дополнения модели) из следующих вариантов:
    • True или 'longest' (по умолчанию): дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad': без дополнения (т.е. может выводить батч с последовательностями разной длины).
  • max_length (int, необязательный) — Максимальная длина возвращаемого списка и, при необходимости, длина отступов (см. выше).
  • pad_to_multiple_of (int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения.

    Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью >= 7.0 (Volta).

  • return_tensors (str, необязательный, по умолчанию "pt") — Тип возвращаемого Tensor. Допустимые значения: “np” или “pt”.

Коллатор данных, который динамически дополняет полученные входные данные.

DataCollatorForTokenClassification

класс transformers.DataCollatorForTokenClassification

< >

( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonelabel_pad_token_id: int = -100return_tensors: str = 'pt' )

Параметры

  • tokenizer (PreTrainedTokenizer или PreTrainedTokenizerFast) — Токенизатор, используемый для кодирования данных.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию True) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения и индекса дополнения модели) из следующих вариантов:
    • True или 'longest' (по умолчанию): дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad': без дополнения (т.е. может выводить батч с последовательностями разной длины).
  • max_length (int, необязательный) — Максимальная длина возвращаемого списка и, при необходимости, длина отступов (см. выше).
  • pad_to_multiple_of (int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения.

    Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью >= 7.0 (Volta).

  • label_pad_token_id (int, необязательный, по умолчанию -100) — Идентификатор, используемый для дополнения меток (значение -100 автоматически игнорируется функциями потерь PyTorch).
  • return_tensors (str, необязательный, по умолчанию "pt") — Тип возвращаемого Tensor. Допустимые значения: “np” или “pt”.

Коллатор данных, который динамически дополняет нулями (padding) полученные входные данные, а также метки.

DataCollatorForSeq2Seq

класс transformers.DataCollatorForSeq2Seq

< >

( tokenizer: PreTrainedTokenizerBasemodel: typing.Any | None = Nonepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonelabel_pad_token_id: int = -100return_tensors: str = 'pt' )

Параметры

  • tokenizer (PreTrainedTokenizer или PreTrainedTokenizerFast) — Токенизатор, используемый для кодирования данных.
  • model (PreTrainedModel, необязательный) — Модель, которая обучается. Если задана и содержит prepare_decoder_input_ids_from_labels, используйте его для подготовки decoder_input_ids

    Это полезно при использовании label_smoothing, чтобы избежать двойного вычисления функции потерь.

  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию True) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения и индекса дополнения модели) из следующих вариантов:
    • True или 'longest' (по умолчанию): дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad': без дополнения (т.е. может выводить батч с последовательностями разной длины).
  • max_length (int, необязательный) — Максимальная длина возвращаемого списка и, при необходимости, длина отступов (см. выше).
  • pad_to_multiple_of (int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения.

    Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью >= 7.0 (Volta).

  • label_pad_token_id (int, необязательный, по умолчанию -100) — Идентификатор, используемый для дополнения меток (-100 автоматически игнорируется функциями потерь PyTorch).
  • return_tensors (str, необязательный, по умолчанию "pt") — Тип возвращаемого Tensor. Допустимые значения: “np” или “pt”.

Коллатор данных, который динамически дополняет нулями (padding) полученные входные данные, а также метки.

DataCollatorForLanguageModeling

класс transformers.DataCollatorForLanguageModeling

< >

( tokenizer: PreTrainedTokenizerBasemlm: bool = Truewhole_word_mask: bool = Falsemlm_probability: float | None = 0.15mask_replace_prob: float = 0.8random_replace_prob: float = 0.1pad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt'seed: int | None = None )

Параметры

  • tokenizer (PreTrainedTokenizer или PreTrainedTokenizerFast) — Токенизатор, используемый для кодирования данных.
  • mlm (bool, необязательный, по умолчанию True) — Использовать ли masked language modeling. Если установлено в False, метки совпадают с входными данными, при этом токены отступов игнорируются (заменяются на -100). В противном случае метки равны -100 для немаскированных токенов и значению, которое нужно предсказать, для маскированного токена.
  • whole_word_mask (bool, необязательный, по умолчанию False) — Следует ли маскировать целые слова, а не отдельные токены.
  • mlm_probability (float, необязательный, по умолчанию 0.15) — Вероятность, с которой токены во входных данных маскируются (случайным образом), если mlm установлен в True.
  • mask_replace_prob (float, необязательный, по умолчанию 0.8) — Вероятность, с которой замаскированные токены заменяются на маску токенизатора (например, [MASK]). По умолчанию 0.8, то есть 80% замаскированных токенов заменяются на [MASK]. Работает только при mlm, установленном в True.
  • random_replace_prob (float, необязательный, по умолчанию 0.1) — Вероятность замены замаскированных токенов случайными токенами из словаря токенизатора. По умолчанию 0.1, что означает, что 10% замаскированных токенов будут заменены случайными токенами. Остальные замаскированные токены (1 - mask_replace_prob - random_replace_prob) остаются без изменений. Работает только при установке mlm в True.
  • pad_to_multiple_of (int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения.
  • return_tensors (str) — Тип возвращаемого Tensor. Допустимые значения: “np” или “pt”.
  • seed (int, необязательный) — Значение seed для генератора случайных чисел, используемого для маскирования. Если не указано, будет использоваться глобальный генератор случайных чисел.

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

Для наилучшей производительности этот коллаборатор данных следует использовать с набором данных, элементы которого являются словарями или BatchEncoding и содержат ключ "special_tokens_mask", как это возвращает PreTrainedTokenizer или PreTrainedTokenizerFast с аргументом return_special_tokens_mask=True.

<Example Options and Expectations>
  1. Поведение по умолчанию:

    • mask_replace_prob=0.8, random_replace_prob=0.1.
    • Ожидается, что 80% замаскированных токенов будут заменены на [MASK], 10% — на случайные токены, а 10% останутся без изменений.
  2. Все замаскированные токены заменены на [MASK]:

    • mask_replace_prob=1.0, random_replace_prob=0.0.
    • Ожидается, что все замаскированные токены будут заменены на [MASK]. Ни один токен не остаётся без изменений и не заменяется случайными токенами.
  3. Замена [MASK] отсутствует, используются только случайные токены:

    • mask_replace_prob=0.0, random_replace_prob=1.0.
    • Ожидается, что все замаскированные токены будут заменены на случайные токены. Без замен на [MASK] или неизменённых токенов.
  4. Сбалансированная замена:

    • mask_replace_prob=0.5, random_replace_prob=0.4.
    • Ожидается, что 50% замаскированных токенов будут заменены на [MASK], 40% — на случайные токены, а 10% останутся без изменений.

Note: Сумма mask_replace_prob и random_replace_prob не должна превышать 1. Если их сумма меньше 1, оставшаяся доля будет состоять из замаскированных токенов, оставленных без изменений.

numpy_mask_tokens

< >

( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )

Подготовка входных данных и меток с замаскированными токенами для моделирования языка с маскированием.

torch_mask_tokens

< >

( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )

Подготовка входных данных и меток с замаскированными токенами для моделирования языка с маскированием.

DataCollatorForPermutationLanguageModeling

класс transformers.DataCollatorForPermutationLanguageModeling

< >

( tokenizer: PreTrainedTokenizerBaseplm_probability: float = 0.16666666666666666max_span_length: int = 5return_tensors: str = 'pt' )

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

  • объединяет батчи тензоров, учитывая pad_token токенизатора
  • предварительно обрабатывает батчи для пермутационного языкового моделирования с процедурами, специфичными для XLNet

numpy_mask_tokens

< >

( inputs: Any )

Маскированные токены, которые необходимо предсказать для конкретной последовательности, определяются следующим алгоритмом:

  1. Начните с начала последовательности, установив cur_len = 0 (количество обработанных на данный момент токенов).
  2. Выберите span_length из интервала [1, max_span_length] (длина последовательности токенов, подлежащих маскировке)
  3. Зарезервируйте контекст длины context_length = span_length / plm_probability для окружения маскируемого фрагмента
  4. Выберите начальную точку start_index из интервала [cur_len, cur_len + context_length - span_length] и замаскируйте токены start_index:start_index + span_length
  5. Установите cur_len = cur_len + context_length. Если cur_len < max_len (то есть в последовательности остались токены для обработки), повторите с шага 1.

torch_mask_tokens

< >

( inputs: Any )

Маскированные токены, которые необходимо предсказать для конкретной последовательности, определяются следующим алгоритмом:

  1. Начните с начала последовательности, установив cur_len = 0 (количество обработанных на данный момент токенов).
  2. Выберите span_length из интервала [1, max_span_length] (длина последовательности токенов, подлежащих маскировке)
  3. Зарезервируйте контекст длины context_length = span_length / plm_probability для окружения маскируемого фрагмента
  4. Выберите начальную точку start_index из интервала [cur_len, cur_len + context_length - span_length] и замаскируйте токены start_index:start_index + span_length
  5. Установите cur_len = cur_len + context_length. Если cur_len < max_len (то есть в последовательности остались токены для обработки), повторите с шага 1.

DataCollatorWithFlattening

класс transformers.DataCollatorWithFlattening

< >

( *argsreturn_position_ids = Trueseparator_id = -100return_flash_attn_kwargs = Falsereturn_seq_idx = Falseposition_ids_start = 0**kwargs )

Параметры

  • return_position_ids (bool, необязательный, по умолчанию True) — Определяет, следует ли возвращать position_ids, которые для каждой развёрнутой последовательности начинаются заново с position_ids_start.
  • separator_id (int, необязательный, по умолчанию -100) — Значение, используемое для разделения последовательностей в объединённых labels.
  • return_flash_attn_kwargs (bool, необязательный, по умолчанию False) — Возвращать ли kwargs границ последовательностей, используемые FlashAttention (cu_seq_lens_q, cu_seq_lens_k, max_length_q и max_length_k).
  • return_seq_idx (bool, необязательный, по умолчанию False) — Возвращать ли seq_idx, указывающий, к какой последовательности принадлежит каждый токен.
  • position_ids_start (int, необязательный, по умолчанию 0) — Идентификатор позиции, присваиваемый первому токену каждой последовательности.

Коллатор данных, используемый для подхода без отступов. Выполняет следующее:

  • конкатенирует весь мини-батч в одну длинную последовательность формы [1, total_tokens]
  • использует separator_id для разделения последовательностей в объединённых labels, значение по умолчанию — -100
  • padding не будет добавлен, по умолчанию возвращаются input_ids, labels и position_ids
  • необязательно возвращает kwargs, содержащиеся в FlashAttentionKwargs
  • необязательно возвращает seq_idx, указывающий, к какой последовательности принадлежит каждый токен

Использование DataCollatorWithFlattening приводит к сглаживанию всего мини-батча в одну длинную последовательность. Убедитесь, что ваш механизм вычисления внимания способен с этим справиться!

Не каждая модель нумерует позиции с 0 при самостоятельном вычислении position ids. Архитектуры, подобные RoBERTa (в том числе roberta, xlm_roberta, camembert, mpnet и esm с абсолютными позиционными эмбеддингами), начинают с padding_idx + 1, что обычно равно 2. Передача таким моделям стандартных 0-based position_ids незаметно сдвигает позиционные эмбеддинги и ухудшает их выходные данные, поэтому для этих моделей следует соответствующим образом задать position_ids_start.

DataCollatorForMultipleChoice

класс transformers.DataCollatorForMultipleChoice

< >

( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt' )

Параметры

  • tokenizer (PreTrainedTokenizer или PreTrainedTokenizerFast) — Токенизатор, используемый для кодирования данных.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию True) — Выберите стратегию дополнения возвращаемых последовательностей в соответствии со стороной дополнения и индексом дополнения модели:
    • True или 'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad' (по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
  • max_length (int, необязательный) — Максимальная длина возвращаемого списка и, при необходимости, длина отступов (см. выше).
  • pad_to_multiple_of (int, необязательный) — Выровнять длину последовательности до кратного указанного значения.

    Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью >= 7.5 (Volta).

  • return_tensors (str, необязательный, по умолчанию "pt") — Тип возвращаемого Tensor. Допустимые значения: “np” или “pt”.

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

Update on GitHub