Transformers documentation
ByT5
Este modelo foi publicado em papers do HF em 2021-05-28 e contribuído para o Hugging Face Transformers em 2021-06-01.
ByT5
ByT5 é uma versão do modelo T5 que não utiliza tokenizer, projetada para funcionar diretamente em bytes UTF-8 brutos. Isso significa que ele pode processar qualquer idioma, é mais robusto a ruídos como erros de digitação e é mais simples de usar, pois não requer um pipeline de pré-processamento.
Você pode encontrar todos os checkpoints originais do ByT5 na organização Google.
Consulte a documentação do T5 para mais exemplos de como aplicar o ByT5 a diferentes tarefas de linguagem.
O exemplo abaixo demonstra como gerar texto com Pipeline, AutoModel e pela linha de comando.
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))Quantização
A quantização reduz a carga de memória de modelos grandes ao representar os pesos em uma precisão menor. Consulte a visão geral de Quantização para mais backends de quantização disponíveis.
O exemplo abaixo usa torchao para quantizar apenas os pesos para 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))Observações
É recomendável usar o tokenizer para inferência e treinamento em lote.
O exemplo abaixo mostra como usar o modelo sem um tokenizer.
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()O ByT5 usa os valores de byte mais altos (258, 257, etc.) para mascaramento, em vez de tokens sentinela como
{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
classe transformers.ByT5Tokenizer
< source >( eos_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'extra_ids = 125additional_special_tokens = None**kwargs )
Parâmetros
- eos_token (
str, opcional, padrão é"</s>") — O token de fim de sequência. Ao construir uma sequência usando tokens especiais, este não é o token usado para o fim da sequência. O token utilizado é o sep_token.Ao construir uma sequência usando tokens especiais, este não é o token utilizado para o fim da sequência. O token utilizado é o
sep_token. - unk_token (
str, opcional, padrão"<unk>") — O token desconhecido. Um token que não está no vocabulário não pode ser convertido em um ID e é definido como este token em vez disso. - pad_token (
str, opcional, padrão"<pad>") — O token usado para preenchimento, por exemplo, ao agrupar sequências de comprimentos diferentes. - extra_ids (
int, opcional, padrão 125) — Adiciona um número de ids extras ao final do vocabulário para uso como sentinels. Esses tokens são acessíveis como “id{%d}>”, em que “{%d}” é um número entre 0 e extra_ids-1. Os tokens extras são indexados a partir do final do vocabulário até o início (“ ” é o último token do vocabulário, como no pré-processamento do ByT5, veja aqui). - additional_special_tokens (
list[str], opcional) — Tokens especiais adicionais usados pelo tokenizer.
Construa um tokenizador ByT5. O ByT5 simplesmente usa a codificação utf-8 de bytes brutos.
Este tokenizer herda de PreTrainedTokenizer, que contém a maioria dos métodos principais. Os usuários devem consultar essa superclasse para obter mais informações sobre esses métodos.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs aos quais os tokens especiais serão adicionados. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências.
Retorna
list[int]
Lista de IDs de entrada com os tokens especiais apropriados.
Construa as entradas do modelo a partir de uma sequência ou de um par de sequências para tarefas de classificação de sequência, concatenando e adicionando tokens especiais. Uma sequência tem o seguinte formato:
- sequência única:
X </s> - par de sequências:
A </s> B </s>
Converte uma sequência de tokens (string) em uma única string.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Cria uma máscara a partir das duas sequências passadas para ser usada em uma tarefa de classificação de par de sequências. O ByT5 não faz uso de ids de tipo de token, portanto, uma lista de zeros é retornada.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
Parâmetros
- token_ids_0 (
list[int]) — Lista de IDs. - token_ids_1 (
list[int], opcional) — Lista opcional de IDs para pares de sequências. - already_has_special_tokens (
bool, opcional, padrãoFalse) — Indica se a lista de tokens já está formatada com tokens especiais para o modelo.
Retorna
list[int]
Uma lista de inteiros no intervalo [0, 1]: 1 para um token especial, 0 para um token de sequência.
Recupera os ids de sequência de uma lista de tokens que não possui tokens especiais adicionados. Este método é chamado ao adicionar tokens especiais usando o método prepare_for_model do tokenizer.