Transformers documentation
ByT5
Bu model 2021-05-28 tarihinde HF papers'ta yayımlandı ve 2021-06-01 tarihinde Hugging Face Transformers'a katkıda bulunuldu.
ByT5
ByT5, ham UTF-8 baytları üzerinde doğrudan çalışacak şekilde tasarlanmış, tokenizer gerektirmeyen T5 modelinin bir versiyonudur. Bu, herhangi bir dili işleyebileceği, yazım hataları gibi gürültülere karşı daha dayanıklı olduğu ve ön işleme hattı gerektirmediği için kullanımı daha basit olduğu anlamına gelir.
Tüm orijinal ByT5 checkpoint'lerini Google kuruluşu altında bulabilirsiniz.
ByT5'in farklı dil görevlerine nasıl uygulanacağına dair daha fazla örnek için T5 belgelerine başvurun.
Aşağıdaki örnek, Pipeline, AutoModel ve komut satırından metin üretmenin nasıl yapılacağını göstermektedir.
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))Kantizasyon
Quantization, ağırlıkları daha düşük bir hassasiyetle temsil ederek büyük modellerin bellek yükünü azaltır. Daha fazla kullanılabilir quantization backend'i için Quantization genel bakışına başvurun.
Aşağıdaki örnek, ağırlıkları yalnızca int4 olarak nicelleştirmek için torchao kullanır.
# 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))Notlar
Toplu çıkarım ve eğitim için tokenizer'ın kullanılması önerilir.
Aşağıdaki örnek, modelin bir tokenizer olmadan nasıl kullanılacağını gösterir.
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,
{extra_id_0}gibi sentinel token'ları yerine maskeleme için üst bayt değerlerini (258, 257 vb.) kullanır.# 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
sınıf transformers.ByT5Tokenizer
< source >( eos_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'extra_ids = 125additional_special_tokens = None**kwargs )
Parametreler
- eos_token (
str, isteğe bağlı, varsayılan olarak"</s>") — Dizi sonu belirteci. Özel belirteçler kullanılarak bir dizi oluşturulduğunda, dizi sonu için kullanılan belirteç bu değildir. Kullanılan belirteç sep_token'dir.Özel jetonlar kullanılarak bir dizi oluşturulduğunda, dizinin sonu için kullanılan jeton bu değildir. Kullanılan jeton
sep_token'dir. - unk_token (
str, isteğe bağlı, varsayılan"<unk>") — Bilinmeyen token. Sözlükte yer almayan bir token, bir kimliğe dönüştürülemez ve bunun yerine bu token olarak ayarlanır. - pad_token (
str, isteğe bağlı, varsayılan"<pad>") — Doldurma için kullanılan jeton, örneğin farklı uzunluklardaki dizileri toplu işleme (batching) sırasında. - extra_ids (
int, isteğe bağlı, varsayılan 125) — Sözlüğün sonuna sentinel olarak kullanılmak üzere eklenen ek kimlik sayısı. Bu jetonlar, ”{%d}” 0 ile extra_ids-1 arasında bir sayı olmak üzere “id{%d}>” olarak erişilebilir. Ek jetonlar, sözlüğün sonundan başlangıcına doğru indekslenir (“ ” sözlüğün son jetonudur, ByT5 ön işlemedeki gibi bkz. burası). - additional_special_tokens (
list[str], isteğe bağlı) — Tokenizör tarafından kullanılan ek özel tokenlar.
ByT5 tokenizer'ı oluşturun. ByT5, ham baytların utf-8 kodlamasını kullanır.
Bu tokenizer, ana yöntemlerin çoğunu içeren PreTrainedTokenizer sınıfından devralır. Kullanıcıların bu yöntemler hakkında daha fazla bilgi için bu üst sınıfa başvurması gerekir.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Özel jetonların ekleneceği kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi.
Dönüş değeri
list[int]
Uygun özel jetonlarla girdi kimlikleri listesi.
Sınıflandırma görevleri için bir dizi veya dizi çiftinden model girdilerini birleştirerek ve özel jetonlar ekleyerek oluşturun. Bir dizinin formatı şu şekildedir:
- tek dizi:
X </s> - dizi çifti:
A </s> B </s>
Bir dizi belirteci (dizgi) tek bir dizgide birleştirir.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Sıralama çifti sınıflandırma görevinde kullanılacak şekilde, iletilen iki diziden bir maske oluşturun. ByT5, token türü kimliklerini kullanmadığı için sıfırlardan oluşan bir liste döndürülür.
get_special_tokens_mask
< source >( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]
Parametreler
- token_ids_0 (
list[int]) — Kimlik listesi. - token_ids_1 (
list[int], isteğe bağlı) — Sıra çiftleri için isteğe bağlı ikinci kimlik listesi. - already_has_special_tokens (
bool, isteğe bağlı, varsayılanFalse) — Token listesinin, model için özel token'larla zaten biçimlendirilmiş olup olmadığı.
Dönüş değeri
list[int]
[0, 1] aralığında tamsayıların bir listesi: özel bir jeton için 1, bir dizi jetonu için 0.
Özel tokenler eklenmemiş bir token listesinden dizi kimliklerini alır. Bu yöntem, tokenizer'ın prepare_for_model yöntemi kullanılarak özel tokenler eklenirken çağrılır.