Transformers documentation

ByT5

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 28 мая 2021 года и добавлена в Hugging Face Transformers 1 июня 2021 года.

ByT5

ByT5 — это версия модели T5 без токенизатора, предназначенная для работы непосредственно с сырыми байтами UTF-8. Это означает, что она может обрабатывать любой язык, более устойчива к шуму, например опечаткам, и проще в использовании, поскольку не требует конвейера предобработки.

Все исходные контрольные точки ByT5 можно найти в организации Google.

См. документацию T5 для дополнительных примеров применения ByT5 к различным языковым задачам.

Пример ниже демонстрирует, как генерировать текст с помощью Pipeline, AutoModel и из командной строки.

AutoModel
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer


tokenizer = AutoTokenizer.from_pretrained(
    "google/byt5-small"
)
model = AutoModelForSeq2SeqLM.from_pretrained(
    "google/byt5-small",
    device_map="auto"
)

input_ids = tokenizer("summarize: Photosynthesis is the process by which plants, algae, and some bacteria convert light energy into chemical energy.", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))

Квантование

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

Приведённый ниже пример использует torchao для квантования только весов до int4.

# pip install torchao
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, TorchAoConfig


quantization_config = TorchAoConfig("int4_weight_only", group_size=128)

model = AutoModelForSeq2SeqLM.from_pretrained(
    "google/byt5-xl",
    device_map="auto",
    quantization_config=quantization_config
)

tokenizer = AutoTokenizer.from_pretrained("google/byt5-xl")
input_ids = tokenizer("translate English to French: The weather is nice today.", return_tensors="pt").to(model.device)

output = model.generate(**input_ids)
print(tokenizer.decode(output[0], skip_special_tokens=True))

Примечания

  • Рекомендуется использовать токенизатор для пакетного вывода и обучения.

  • Приведённый ниже пример показывает, как использовать модель без токенизатора.

    import torch
    from transformers import AutoModelForSeq2SeqLM
    
    model = AutoModelForSeq2SeqLM.from_pretrained("google/byt5-small", device_map="auto")
    
    num_special_tokens = 3
    
    input_ids = torch.tensor([list("Life is like a box of chocolates.".encode("utf-8"))]) + num_special_tokens
    labels = torch.tensor([list("La vie est comme une boîte de chocolat.".encode("utf-8"))]) + num_special_tokens
    loss = model(input_ids, labels=labels).loss
    loss.item()
  • ByT5 использует старшие значения байтов (258, 257 и т. д.) для маскирования вместо sentinel-токенов, таких как {extra_id_0}.

    # Example: character-level denoising with mask tokens
    input_ids = tokenizer("The dog chases a ball in the park.").input_ids
    masked_input = torch.tensor([input_ids[:8] + [258] + input_ids[14:21] + [257] + input_ids[28:]])
    output = model.generate(masked_input, max_length=100)

ByT5Tokenizer

класс transformers.ByT5Tokenizer

< >

( eos_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'extra_ids = 125additional_special_tokens = None**kwargs )

Параметры

  • eos_token (str, необязательный, по умолчанию "</s>") — Токен конца последовательности. При построении последовательности с использованием специальных токенов этот токен не используется для обозначения конца последовательности. Вместо него используется sep_token.

    При построении последовательности с использованием специальных токенов для обозначения конца последовательности не используется этот токен. Используется токен sep_token.

  • unk_token (str, необязательный, по умолчанию "<unk>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен.
  • pad_token (str, необязательный, по умолчанию "<pad>") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины.
  • extra_ids (int, необязательный, по умолчанию 125) — Добавляет указанное количество дополнительных идентификаторов в конец словаря для использования в качестве маркеров. Эти токены доступны как “<extraid{%d}>”, где “{%d}” — число от 0 до extra_ids-1. Дополнительные токены индексируются от конца словаря к началу (“<extra_id_0>” — последний токен в словаре, как в предобработке ByT5, см. здесь).
  • additional_special_tokens (list[str], необязательный) — Дополнительные специальные токены, используемые токенизатором.

Создайте токенизатор ByT5. ByT5 использует кодировку utf-8 для сырых байтов.

Этот токенизатор наследуется от PreTrainedTokenizer, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.

build_inputs_with_special_tokens

< >

( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов, к которым будут добавлены специальные токены.
  • token_ids_1 (list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей.

Возвращает

list[int]

Список идентификаторов входных токенов с соответствующими специальными токенами.

Создайте входные данные модели из последовательности или пары последовательностей для задач классификации последовательностей, объединяя их и добавляя специальные токены. Последовательность имеет следующий формат:

  • одна последовательность: X </s>
  • пара последовательностей: A </s> B </s>

convert_tokens_to_string

< >

( tokens )

Преобразует последовательность токенов (строку) в одну строку.

create_token_type_ids_from_sequences

< >

( token_ids_0: list[int]token_ids_1: list[int] | None = None ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов.
  • token_ids_1 (list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей.

Возвращает

list[int]

Список нулей.

Создаёт маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей. Модель ByT5 не использует идентификаторы типов токенов, поэтому возвращается список нулей.

get_special_tokens_mask

< >

( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов.
  • token_ids_1 (list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей.
  • already_has_special_tokens (bool, необязательный, по умолчанию False) — Указывает, содержит ли список токенов уже отформатированные специальные токены для модели.

Возвращает

list[int]

Список целых чисел в диапазоне [0, 1]: 1 для специального токена, 0 для токена последовательности.

Получить идентификаторы последовательностей из списка токенов, в который не добавлены специальные токены. Этот метод вызывается при добавлении специальных токенов с помощью метода prepare_for_model токенизатора.

Update on GitHub