Transformers documentation
Veri toplayıcısı
Veri toplayıcısı
Data collatorlar, girdi olarak veri seti öğelerinin bir listesini kullanarak bir batch oluşturacak nesnelerdir. Bu öğeler, train_dataset veya eval_dataset öğeleriyle aynı tiptedir.
Toplu veriler oluşturulabilsin diye veri toplayıcılar bazı işlemler uygulayabilir (örneğin dolgu). Bunlardan bazıları (örneğin DataCollatorForLanguageModeling) oluşturulan toplu veri üzerinde bazı rastgele veri artırma teknikleri (örneğin rastgele maskeleme) uygular.
Kullanım örnekleri örnek defterlerde bulunabilir.
Varsayılan veri toplayıcısı
Çok basit bir veri toplayıcı (collator); sözlük benzeri nesnelerin toplu işlemlerini (batch) toplar ve potansiyel olarak şu adlara sahip anahtarlar için özel işleme uygular:
label: nesne başına tek bir değer (int veya float) işlerlabel_ids: nesne başına bir değer listesini işler
Ek bir ön işleme yapmaz: girdi nesnesinin özellik adları, modele girdi olarak kullanılır. Bunun nasıl faydalı olduğunu görmek için glue ve ner örneklerine bakın.
DefaultDataCollator
sınıf transformers.DefaultDataCollator
< source >( return_tensors: str = 'pt' )
Çok basit bir veri toplayıcı (collator); sözlük benzeri nesnelerin toplu işlemlerini (batch) toplar ve potansiyel olarak şu adlara sahip anahtarlar için özel işleme uygular:
label: nesne başına tek bir değer (int veya float) işlerlabel_ids: nesne başına bir değer listesini işler
Ek bir ön işleme yapmaz: girdi nesnesinin özellik adları, modele girdi olarak kullanılır. Bunun nasıl faydalı olduğunu görmek için glue ve ner örneklerine bakın.
Bu, default_data_collator gibi saf bir işlev değil, diğer veri toplayıcıları gibi bir nesnedir. Başlatma sırasında bir return_tensors değeri ayarlamanız gerekiyorsa bu işe yarayabilir.
DataCollatorWithPadding
sınıf transformers.DataCollatorWithPadding
< source >( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt' )
Parametreler
- tokenizer (PreTrainedTokenizer veya PreTrainedTokenizerFast) — Verilerin kodlanmasında kullanılan tokenizer.
- padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılan olarakTrue) — Dönen dizilerin dolgu stratejisini seçin (modelin dolgu yönüne ve dolgu indeksine göre) aşağıdakilerden:Trueveya'longest'(varsayılan): Batch içindeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlanıyorsa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad': Dolgu yok (yani, farklı uzunluklarda dizilere sahip bir parti çıktı olarak verilebilir).
- max_length (
int, isteğe bağlı) — Döndürülen listenin ve isteğe bağlı dolgu uzunluğunun (bkz. yukarı) maksimum uzunluğu. - pad_to_multiple_of (
int, isteğe bağlı) — Belirlenirse, diziyi verilen değerin katına kadar doldurur.Bu, hesaplama yeteneği >= 7.0 (Volta) olan NVIDIA donanımlarında Tensor Core'lerin kullanımını etkinleştirmek için özellikle faydalıdır.
- return_tensors (
str, isteğe bağlı, varsayılan"pt") — Döndürülecek Tensor türü. Kabul edilen değerler “np” veya “pt”’dir.
Alınan girdileri dinamik olarak dolduracak veri toplayıcı.
DataCollatorForTokenClassification
sınıf transformers.DataCollatorForTokenClassification
< source >( 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' )
Parametreler
- tokenizer (PreTrainedTokenizer veya PreTrainedTokenizerFast) — Verilerin kodlanmasında kullanılan tokenizer.
- padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılan olarakTrue) — Dönen dizilerin dolgu stratejisini seçin (modelin dolgu yönüne ve dolgu indeksine göre) aşağıdakilerden:Trueveya'longest'(varsayılan): Batch içindeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlanıyorsa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad': Dolgu yok (yani, farklı uzunluklarda dizilere sahip bir parti çıktı olarak verilebilir).
- max_length (
int, isteğe bağlı) — Döndürülen listenin ve isteğe bağlı dolgu uzunluğunun (bkz. yukarı) maksimum uzunluğu. - pad_to_multiple_of (
int, isteğe bağlı) — Belirlenirse, diziyi verilen değerin katına kadar doldurur.Bu, hesaplama yeteneği >= 7.0 (Volta) olan NVIDIA donanımlarında Tensor Core'lerin kullanımını etkinleştirmek için özellikle faydalıdır.
- label_pad_token_id (
int, isteğe bağlı, varsayılan -100) — Etiketleri doldururken kullanılacak kimlik (PyTorch kayıp fonksiyonları -100 değerini otomatik olarak yoksayar). - return_tensors (
str, isteğe bağlı, varsayılan"pt") — Döndürülecek Tensor türü. Kabul edilen değerler “np” veya “pt”’dir.
Alınan girdileri ve etiketleri dinamik olarak dolduracak (pad) veri toplayıcı (data collator).
DataCollatorForSeq2Seq
sınıf transformers.DataCollatorForSeq2Seq
< source >( 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' )
Parametreler
- tokenizer (PreTrainedTokenizer veya PreTrainedTokenizerFast) — Verilerin kodlanmasında kullanılan tokenizer.
- model (PreTrainedModel, isteğe bağlı) —
Eğitilen model. Ayarlanmışsa ve prepare_decoder_input_ids_from_labels, içeriyorsa, bunu kullanarak decoder_input_ids
label_smoothing kullanırken kaybın iki kez hesaplanmasını önlemek için bu işe yarar.
- padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılan olarakTrue) — Dönen dizilerin dolgu stratejisini seçin (modelin dolgu yönüne ve dolgu indeksine göre) aşağıdakilerden:Trueveya'longest'(varsayılan): Batch içindeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlanıyorsa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad': Dolgu yok (yani, farklı uzunluklarda dizilere sahip bir parti çıktı olarak verilebilir).
- max_length (
int, isteğe bağlı) — Döndürülen listenin ve isteğe bağlı dolgu uzunluğunun (bkz. yukarı) maksimum uzunluğu. - pad_to_multiple_of (
int, isteğe bağlı) — Belirlenirse, diziyi verilen değerin katına kadar doldurur.Bu, hesaplama yeteneği >= 7.0 (Volta) olan NVIDIA donanımlarında Tensor Core'lerin kullanımını etkinleştirmek için özellikle faydalıdır.
- label_pad_token_id (
int, isteğe bağlı, varsayılan -100) — Etiketleri doldururken kullanılacak kimlik (PyTorch kayıp fonksiyonları -100 değerini otomatik olarak yok sayar). - return_tensors (
str, isteğe bağlı, varsayılan"pt") — Döndürülecek Tensor türü. Kabul edilen değerler “np” veya “pt”’dir.
Alınan girdileri ve etiketleri dinamik olarak dolduracak (pad) veri toplayıcı (data collator).
DataCollatorForLanguageModeling
sınıf transformers.DataCollatorForLanguageModeling
< source >( 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 )
Parametreler
- tokenizer (PreTrainedTokenizer veya PreTrainedTokenizerFast) — Verilerin kodlanmasında kullanılan tokenizer.
- mlm (
bool, isteğe bağlı, varsayılanTrue) — Maskeli dil modellemesi kullanılıp kullanılmayacağı.Falseolarak ayarlanırsa, etiketler dolgu token'ları yok sayılarak (onları -100 olarak ayarlayarak) girdilerle aynı olur. Aksi halde, etiketler maskelenmemiş token'lar için -100, maskelenmiş token için ise tahmin edilecek değerdir. - whole_word_mask (
bool, isteğe bağlı, varsayılanFalse) — Bireysel token'lar yerine tüm kelimelerin maskelenip maskelenmeyeceğini belirtir. - mlm_probability (
float, isteğe bağlı, varsayılan 0.15) —mlmTrueolarak ayarlandığında, girdideki token'ların (rastgele) maskeleme olasılığı. - mask_replace_prob (
float, isteğe bağlı, varsayılan 0.8) — Maskelenmiş tokenların tokenizer'ın mask token'ı (ör.[MASK]) ile değiştirilme olasılığı. Varsayılan 0.8'dir, bu da maskelenmiş tokenların %80'inin[MASK]ile değiştirileceği anlamına gelir. YalnızcamlmTrueolarak ayarlandığında çalışır. - random_replace_prob (
float, isteğe bağlı, varsayılan 0.1) — Maskelenmiş tokenların, tokenizer sözlüğündeki rastgele tokenlarla değiştirilme olasılığı. Varsayılan değeri 0.1'dir; bu, maskelenmiş tokenların %10'unun rastgele tokenlarla değiştirileceği anlamına gelir. Kalan maskelenmiş tokenlar (1 - mask_replace_prob - random_replace_prob) değiştirilmeden bırakılır. YalnızcamlmTrueolarak ayarlandığında çalışır. - pad_to_multiple_of (
int, isteğe bağlı) — Belirlenirse, diziyi verilen değerin katına kadar doldurur. - return_tensors (
str) — Dönülecek Tensor türü. Kabul edilen değerler “np” veya “pt”’dir. - seed (
int, isteğe bağlı) — Maskelendirme için rastgele sayı üretecinde kullanılacak tohum. Verilmezse, küresel RNG kullanılır.
Dil modelleme için kullanılan veri toplayıcı. Girdiler, hepsi aynı uzunlukta değilse, bir partinin maksimum uzunluğuna dinamik olarak dolgu yapılır.
En iyi performans için, bu veri toplayıcısının, PreTrainedTokenizer veya
<Example Options and Expectations>return_special_tokens_mask=Trueargümanıyla bir PreTrainedTokenizerFast tarafından döndürüldüğü gibi,"special_tokens_mask"anahtarına sahip sözlükler veya BatchEncoding öğelerine sahip bir veri setiyle kullanılması önerilir.
Varsayılan Davranış:
mask_replace_prob=0.8,random_replace_prob=0.1.- Maskelenmiş token'ların %80'inin
[MASK]ile değiştirilmesini, %10'unun rastgele token'larla değiştirilmesini ve %10'unun değiştirilmemesini bekleyin.
[MASK]ile değiştirilen tüm maskelenmiş jetonlar:
mask_replace_prob=1.0,random_replace_prob=0.0.- Tüm maskelenmiş tokenların
[MASK]ile değiştirilmesini bekleyin. Hiçbir token değiştirilmeden bırakılmaz veya rastgele tokenlarla değiştirilmez.
[MASK]ikamesi yok, yalnızca rastgele jetonlar:
mask_replace_prob=0.0,random_replace_prob=1.0.- Tüm maskelenmiş tokenların rastgele tokenlarla değiştirilmesini bekleyin.
[MASK]yer değiştirmeleri veya değiştirilmemiş tokenlar yoktur.Dengeli değiştirme:
mask_replace_prob=0.5,random_replace_prob=0.4.- Maskelenmiş token'ların %50'sinin
[MASK]ile değiştirilmesini, %40'ının rastgele token'larla değiştirilmesini ve %10'unun değiştirilmemesini bekleyin.Not:
mask_replace_probilerandom_replace_probdeğerlerinin toplamı 1'i geçmemelidir. Toplam 1'den küçükse, kalan oran değiştirilmemiş maskelenmiş tokenlardan oluşur.
numpy_mask_tokens
< source >( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )
Maskeli dil modellemesi için maskeli jeton girdilerini/etiketlerini hazırlar.
torch_mask_tokens
< source >( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )
Maskeli dil modellemesi için maskeli jeton girdilerini/etiketlerini hazırlar.
DataCollatorForPermutationLanguageModeling
sınıf transformers.DataCollatorForPermutationLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBaseplm_probability: float = 0.16666666666666666max_span_length: int = 5return_tensors: str = 'pt' )
Permutasyon dil modellemesi için kullanılan veri toplayıcı.
- tensör gruplarını bir araya getirir, tokenizörün pad_token değerine saygı gösterir
- XLNet'e özgü prosedürlerle permütasyon dil modellemesi için partileri ön işler
Belirli bir dizi için tahmin edilecek maskelenmiş jetonlar aşağıdaki algoritma tarafından belirlenir:
- Dizinin başlangıcından başlayın;
cur_len = 0(şu ana kadar işlenen jeton sayısı) olarak ayarlayın. span_lengthdeğerini[1, max_span_length]aralığından örnekleyin (maskelenecek token dizisinin uzunluğu)- Maskelenecek span'ı çevrelemek için
context_length = span_length / plm_probabilityuzunluğunda bir bağlam ayırın start_indexbaşlangıç noktasını[cur_len, cur_len + context_length - span_length]aralığından örnekleyin vestart_index:start_index + span_lengthjetonlarını maskeleyincur_len = cur_len + context_lengtholarak ayarlayın.cur_len < max_lenise (yani işlenecek dizide kalan tokenlar varsa), Adım 1'den tekrarlayın.
Belirli bir dizi için tahmin edilecek maskelenmiş jetonlar aşağıdaki algoritma tarafından belirlenir:
- Dizinin başlangıcından başlayın;
cur_len = 0(şu ana kadar işlenen jeton sayısı) olarak ayarlayın. span_lengthdeğerini[1, max_span_length]aralığından örnekleyin (maskelenecek token dizisinin uzunluğu)- Maskelenecek span'ı çevrelemek için
context_length = span_length / plm_probabilityuzunluğunda bir bağlam ayırın start_indexbaşlangıç noktasını[cur_len, cur_len + context_length - span_length]aralığından örnekleyin vestart_index:start_index + span_lengthjetonlarını maskeleyincur_len = cur_len + context_lengtholarak ayarlayın.cur_len < max_lenise (yani işlenecek dizide kalan tokenlar varsa), Adım 1'den tekrarlayın.
DataCollatorWithFlattening
sınıf transformers.DataCollatorWithFlattening
< source >( *argsreturn_position_ids = Trueseparator_id = -100return_flash_attn_kwargs = Falsereturn_seq_idx = Falseposition_ids_start = 0**kwargs )
Parametreler
- return_position_ids (
bool, isteğe bağlı, varsayılanTrue) — Her düzleştirilmiş dizi içinposition_ids_startdeğerinden yeniden başlayanposition_idsdeğerlerinin döndürülüp döndürülmemesi. - separator_id (
int, isteğe bağlı, varsayılan -100) — Birleştirilmişlabelsiçindeki dizileri ayırmak için kullanılan değer. - return_flash_attn_kwargs (
bool, isteğe bağlı, varsayılanFalse) — FlashAttention tarafından kullanılan dizi sınırı kwargs'larını (cu_seq_lens_q,cu_seq_lens_k,max_length_qvemax_length_k) döndürüp döndürmeyeceğini belirtir. - return_seq_idx (
bool, isteğe bağlı, varsayılanFalse) — Her token'ın ait olduğu diziyi gösterenseq_idx'in döndürülüp döndürülmeyeceğini belirtir. - position_ids_start (
int, isteğe bağlı, varsayılan 0) — Her dizinin ilk token'ına verilen konum kimliği.
Doluksuz (padding free) yaklaşım için kullanılan veri toplayıcı (data collator). Şunları yapar:
- mini batch'in tamamını [1, total_tokens] biçiminde tek bir uzun diziye birleştirir
separator_id, birleştirilmişlabelsiçindeki dizileri ayırmak için kullanılır; varsayılan değeri -100'dür- dolgu eklenmez, varsayılan olarak
input_ids,labelsveposition_idsdöndürülür - FlashAttentionKwargs içindeki kwargs'yı isteğe bağlı olarak döndürür
- her bir token'ın hangi dizeye ait olduğunu gösteren seq_idx değerini isteğe bağlı olarak döndürür
DataCollatorWithFlatteningkullanıldığında tüm mini batch tek uzun diziye düzleştirilir. Dikkat (attention) hesabınızın bunu işleyebildiğinden emin olun!
Her model, konum kimliklerini kendisi hesapladığında konumları 0'dan numaralandırmaz. RoBERTa benzeri mimariler (arasında mutlak konum gömme kullanan
roberta,xlm_roberta,camembert,mpnetveesm) genellikle 2 olanpadding_idx + 1değerinden başlar. Bu modellere varsayılan 0 tabanlıposition_idsgeçirildiğinde konum gömme sessizce kayar ve çıktıları bozulur; bu nedenle bu modeller içinposition_ids_startdeğerini buna göre ayarlayın.
DataCollatorForMultipleChoice
sınıf transformers.DataCollatorForMultipleChoice
< source >( tokenizer: PreTrainedTokenizerBasepadding: bool | str | transformers.utils.generic.PaddingStrategy = Truemax_length: int | None = Nonepad_to_multiple_of: int | None = Nonereturn_tensors: str = 'pt' )
Parametreler
- tokenizer (PreTrainedTokenizer veya PreTrainedTokenizerFast) — Verilerin kodlanmasında kullanılan tokenizer.
- padding (
bool,strveya PaddingStrategy, isteğe bağlı, varsayılan olarakTrue) — Modelin padding yönüne ve padding indeksine göre döndürülen dizileri doldurmak için bir strateji seçin:Trueveya'longest': Toplu işlemdeki en uzun dizinin uzunluğuna kadar dolgu yapılır (yalnızca tek bir dizi sağlanırsa dolgu yapılmaz).'max_length':max_lengthargümanı ile belirtilen maksimum uzunluğa veya bu argüman sağlanmadıysa modelin kabul edebileceği maksimum giriş uzunluğuna kadar doldurur.Falseveya'do_not_pad'(varsayılan): Dolgu yok (yani, farklı uzunluklarda diziler içeren bir parti çıktı olarak üretilebilir).
- max_length (
int, isteğe bağlı) — Döndürülen listenin ve isteğe bağlı dolgu uzunluğunun (bkz. yukarı) maksimum uzunluğu. - pad_to_multiple_of (
int, isteğe bağlı) — Diziyi, verilen değerin katına kadar doldurun.Bu, hesaplama yeteneği >= 7.5 (Volta) olan NVIDIA donanımlarında Tensor Core'lerin kullanımını etkinleştirmek için özellikle faydalıdır.
- return_tensors (
str, isteğe bağlı, varsayılan"pt") — Döndürülecek Tensor türü. Kabul edilen değerler “np” veya “pt”’dir.
Çoktan seçmeli sorular için iç içe geçmiş örneklerden oluşan bir partiyi dinamik olarak dolduran, böylece tüm örneklerin tüm seçeneklerinin aynı uzunlukta olmasını sağlayan veri toplayıcı (data collator).