Transformers documentation
Data collator
Data collator
Data collator adalah objek yang akan membentuk batch dengan menggunakan daftar elemen dataset sebagai input. Elemen-elemen ini memiliki tipe yang sama dengan elemen dari train_dataset atau eval_dataset.
Untuk dapat membangun batch, data collator dapat menerapkan beberapa pemrosesan (seperti padding). Beberapa di antaranya (seperti DataCollatorForLanguageModeling) juga menerapkan beberapa augmentasi data acak (seperti random masking) pada batch yang terbentuk.
Contoh penggunaan dapat ditemukan di notebook contoh.
Collator data default
Collator data yang sangat sederhana yang hanya menggabungkan batch objek seperti dict dan melakukan penanganan khusus untuk kunci potensial bernama:
label: menangani satu nilai (int atau float) per objeklabel_ids: menangani daftar nilai per objek
Tidak melakukan pra-pemrosesan tambahan: nama properti dari objek input akan digunakan sebagai input yang sesuai untuk model. Lihat glue dan ner sebagai contoh bagaimana hal ini berguna.
DefaultDataCollator
kelas transformers.DefaultDataCollator
< source >( return_tensors: str = 'pt' )
Collator data yang sangat sederhana yang hanya menggabungkan batch objek seperti dict dan melakukan penanganan khusus untuk kunci potensial bernama:
label: menangani satu nilai (int atau float) per objeklabel_ids: menangani daftar nilai per objek
Tidak melakukan pra-pemrosesan tambahan: nama properti dari objek input akan digunakan sebagai input yang sesuai untuk model. Lihat glue dan ner sebagai contoh bagaimana hal ini berguna.
Ini adalah sebuah objek (seperti data collator lainnya) alih-alih fungsi murni seperti default_data_collator. Hal ini dapat membantu jika Anda perlu mengatur nilai return_tensors saat inisialisasi.
DataCollatorWithPadding
kelas 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' )
Parameter
- tokenizer (PreTrainedTokenizer atau PreTrainedTokenizerFast) — Tokenizer yang digunakan untuk mengkodekan data.
- padding (
bool,stratau PaddingStrategy, opsional, defaultnyaTrue) — Pilih strategi untuk melakukan padding pada urutan yang dikembalikan (sesuai sisi padding dan indeks padding model) di antara:Trueatau'longest'(default): Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad': Tanpa padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- max_length (
int, opsional) — Panjang maksimum dari daftar yang dikembalikan dan secara opsional panjang padding (lihat di atas). - pad_to_multiple_of (
int, opsional) — Jika diset, akan melakukan padding pada urutan hingga menjadi kelipatan dari nilai yang diberikan.Hal ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan compute capability >= 7.0 (Volta).
- return_tensors (
str, opsional, defaultnya"pt") — Jenis Tensor yang akan dikembalikan. Nilai yang diizinkan adalah “np” atau “pt”.
Data collator yang akan melakukan padding secara dinamis pada input yang diterima.
DataCollatorForTokenClassification
kelas 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' )
Parameter
- tokenizer (PreTrainedTokenizer atau PreTrainedTokenizerFast) — Tokenizer yang digunakan untuk mengkodekan data.
- padding (
bool,stratau PaddingStrategy, opsional, defaultnyaTrue) — Pilih strategi untuk melakukan padding pada urutan yang dikembalikan (sesuai sisi padding dan indeks padding model) di antara:Trueatau'longest'(default): Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad': Tanpa padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- max_length (
int, opsional) — Panjang maksimum dari daftar yang dikembalikan dan secara opsional panjang padding (lihat di atas). - pad_to_multiple_of (
int, opsional) — Jika diset, akan melakukan padding pada urutan hingga menjadi kelipatan dari nilai yang diberikan.Hal ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan compute capability >= 7.0 (Volta).
- label_pad_token_id (
int, opsional, default -100) — ID yang digunakan saat melakukan padding pada label (-100 akan diabaikan secara otomatis oleh fungsi loss PyTorch). - return_tensors (
str, opsional, defaultnya"pt") — Jenis Tensor yang akan dikembalikan. Nilai yang diizinkan adalah “np” atau “pt”.
Data collator yang akan secara dinamis melakukan padding pada input yang diterima, serta label.
DataCollatorForSeq2Seq
kelas 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' )
Parameter
- tokenizer (PreTrainedTokenizer atau PreTrainedTokenizerFast) — Tokenizer yang digunakan untuk mengkodekan data.
- model (PreTrainedModel, opsional) —
Model yang sedang dilatih. Jika disetel dan memiliki prepare_decoder_input_ids_from_labels, gunakan untuk
menyiapkan decoder_input_ids
Ini berguna saat menggunakan label_smoothing untuk menghindari perhitungan loss dua kali.
- padding (
bool,stratau PaddingStrategy, opsional, defaultnyaTrue) — Pilih strategi untuk melakukan padding pada urutan yang dikembalikan (sesuai sisi padding dan indeks padding model) di antara:Trueatau'longest'(default): Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad': Tanpa padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- max_length (
int, opsional) — Panjang maksimum dari daftar yang dikembalikan dan secara opsional panjang padding (lihat di atas). - pad_to_multiple_of (
int, opsional) — Jika diset, akan melakukan padding pada urutan hingga menjadi kelipatan dari nilai yang diberikan.Hal ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan compute capability >= 7.0 (Volta).
- label_pad_token_id (
int, opsional, default -100) — ID yang digunakan saat melakukan padding pada label (-100 akan diabaikan secara otomatis oleh fungsi loss PyTorch). - return_tensors (
str, opsional, defaultnya"pt") — Jenis Tensor yang akan dikembalikan. Nilai yang diizinkan adalah “np” atau “pt”.
Data collator yang akan secara dinamis melakukan padding pada input yang diterima, serta label.
DataCollatorForLanguageModeling
kelas 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 )
Parameter
- tokenizer (PreTrainedTokenizer atau PreTrainedTokenizerFast) — Tokenizer yang digunakan untuk mengkodekan data.
- mlm (
bool, opsional, defaultTrue) — Apakah akan menggunakan masked language modeling. Jika diset keFalse, label sama dengan input dengan token padding diabaikan (dengan menyetelnya ke -100). Sebaliknya, label adalah -100 untuk token yang tidak di-mask dan nilai yang diprediksi untuk token yang di-mask. - whole_word_mask (
bool, opsional, defaultFalse) — Apakah akan memasker seluruh kata alih-alih token individual. - mlm_probability (
float, opsional, default 0.15) — Probabilitas untuk (secara acak) mem-mask token dalam input, ketikamlmdiatur keTrue. - mask_replace_prob (
float, opsional, default 0.8) — Probabilitas di mana token yang dimasker diganti dengan token mask dari tokenizer (misalnya,[MASK]). Default 0,8, yang berarti 80% dari token yang dimasker akan diganti dengan[MASK]. Hanya berfungsi ketikamlmdiatur keTrue. - random_replace_prob (
float, opsional, default 0.1) — Probabilitas di mana token yang dimasker diganti dengan token acak dari kosakata tokenizer. Default 0.1, artinya 10% dari token yang dimasker akan diganti dengan token acak. Token yang dimasker sisanya (1 - mask_replace_prob - random_replace_prob) dibiarkan tanpa perubahan. Hanya berfungsi ketikamlmdiatur keTrue. - pad_to_multiple_of (
int, opsional) — Jika diatur, akan melakukan padding pada urutan hingga menjadi kelipatan dari nilai yang diberikan. - return_tensors (
str) — Jenis Tensor yang akan dikembalikan. Nilai yang diizinkan adalah “np” atau “pt”. - seed (
int, opsional) — Seed yang akan digunakan untuk generator angka acak untuk masking. Jika tidak disediakan, RNG global akan digunakan.
Data collator yang digunakan untuk pemodelan bahasa. Input akan dipadati secara dinamis hingga panjang maksimum dari batch jika panjangnya tidak semuanya sama.
Untuk kinerja terbaik, data collator ini sebaiknya digunakan dengan dataset yang itemnya berupa dictionary atau BatchEncoding, dengan kunci
<Example Options and Expectations>"special_tokens_mask", sebagaimana dikembalikan oleh PreTrainedTokenizer atau PreTrainedTokenizerFast dengan argumenreturn_special_tokens_mask=True.
Perilaku Default:
mask_replace_prob=0.8,random_replace_prob=0.1.- Diharapkan 80% token yang dimasker diganti dengan
[MASK], 10% diganti dengan token acak, dan 10% dibiarkan tanpa perubahan.Semua token yang dimasker diganti dengan
[MASK]:
mask_replace_prob=1.0,random_replace_prob=0.0.- Harap semua token yang dimasker diganti dengan
[MASK]. Tidak ada token yang dibiarkan tanpa perubahan atau diganti dengan token acak.Tidak ada penggantian
[MASK], hanya token acak:
mask_replace_prob=0.0,random_replace_prob=1.0.- Harap semua token yang dimasker diganti dengan token acak. Tidak ada penggantian
[MASK]atau token yang tidak berubah.Penggantian yang seimbang:
mask_replace_prob=0.5,random_replace_prob=0.4.- Diharapkan 50% token yang dimasker diganti dengan
[MASK], 40% diganti dengan token acak, dan 10% dibiarkan tanpa perubahan.Catatan: Jumlah
mask_replace_probdanrandom_replace_probtidak boleh melebihi 1. Jika jumlahnya kurang dari 1, proporsi sisanya akan terdiri dari token yang dimasker dan dibiarkan tanpa perubahan.
numpy_mask_tokens
< source >( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )
Siapkan input/label token yang dimasker untuk pemodelan bahasa yang dimasker.
torch_mask_tokens
< source >( inputs: Anyspecial_tokens_mask: typing.Any | None = Noneoffset_mapping: typing.Any | None = None )
Siapkan input/label token yang dimasker untuk pemodelan bahasa yang dimasker.
DataCollatorForPermutationLanguageModeling
kelas transformers.DataCollatorForPermutationLanguageModeling
< source >( tokenizer: PreTrainedTokenizerBaseplm_probability: float = 0.16666666666666666max_span_length: int = 5return_tensors: str = 'pt' )
Data collator yang digunakan untuk pemodelan bahasa permutasi.
- menggabungkan batch tensor, dengan menghormati pad_token tokenizer-nya
- memproses batch untuk pemodelan bahasa permutasi dengan prosedur yang spesifik untuk XLNet
Token yang dimasker untuk diprediksi pada urutan tertentu ditentukan oleh algoritme berikut:
- Mulai dari awal urutan dengan mengatur
cur_len = 0(jumlah token yang telah diproses sejauh ini). - Ambil sampel
span_lengthdari interval[1, max_span_length](panjang rentang token yang akan dimasker) - Cadangkan konteks dengan panjang
context_length = span_length / plm_probabilityuntuk mengelilingi span yang akan di-mask - Ambil titik awal
start_indexdari interval[cur_len, cur_len + context_length - span_length]dan mask tokenstart_index:start_index + span_length - Set
cur_len = cur_len + context_length. Jikacur_len < max_len(yaitu masih ada token dalam urutan yang perlu diproses), ulangi dari Langkah 1.
Token yang dimasker untuk diprediksi pada urutan tertentu ditentukan oleh algoritme berikut:
- Mulai dari awal urutan dengan mengatur
cur_len = 0(jumlah token yang telah diproses sejauh ini). - Ambil sampel
span_lengthdari interval[1, max_span_length](panjang rentang token yang akan dimasker) - Cadangkan konteks dengan panjang
context_length = span_length / plm_probabilityuntuk mengelilingi span yang akan di-mask - Ambil titik awal
start_indexdari interval[cur_len, cur_len + context_length - span_length]dan mask tokenstart_index:start_index + span_length - Set
cur_len = cur_len + context_length. Jikacur_len < max_len(yaitu masih ada token dalam urutan yang perlu diproses), ulangi dari Langkah 1.
DataCollatorWithFlattening
kelas transformers.DataCollatorWithFlattening
< source >( *argsreturn_position_ids = Trueseparator_id = -100return_flash_attn_kwargs = Falsereturn_seq_idx = Falseposition_ids_start = 0**kwargs )
Parameter
- return_position_ids (
bool, opsional, defaultTrue) — Apakah akan mengembalikanposition_ids, yang dimulai ulang dariposition_ids_startuntuk setiap urutan yang diratakan. - separator_id (
int, opsional, default -100) — Nilai yang digunakan untuk memisahkan urutan di dalamlabelsyang digabungkan. - return_flash_attn_kwargs (
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikan kwargs batas urutan yang digunakan oleh FlashAttention (cu_seq_lens_q,cu_seq_lens_k,max_length_qdanmax_length_k). - return_seq_idx (
bool, opsional, defaultnyaFalse) — Apakah akan mengembalikanseq_idx, yang menunjukkan urutan (sequence) tempat setiap token berada. - position_ids_start (
int, opsional, default 0) — ID posisi yang diberikan ke token pertama dari setiap urutan.
Data collator yang digunakan untuk pendekatan tanpa padding. Melakukan hal berikut:
- menggabungkan seluruh mini batch menjadi satu urutan panjang dengan bentuk [1, total_tokens]
- menggunakan
separator_iduntuk memisahkan urutan di dalamlabelsyang digabungkan, nilai default adalah -100 - tidak ada padding yang akan ditambahkan, secara default mengembalikan
input_ids,labelsdanposition_ids - secara opsional mengembalikan kwargs yang terkandung dalam FlashAttentionKwargs
- secara opsional mengembalikan seq_idx yang menunjukkan urutan mana yang dimiliki oleh setiap token
Menggunakan
DataCollatorWithFlatteningakan meratakan seluruh mini batch menjadi satu urutan panjang. Pastikan perhitungan attention Anda mampu menanganinya!
Tidak semua model menghitung posisi dari 0 saat menghitung position ids-nya sendiri. Arsitektur mirip RoBERTa (di antaranya
roberta,xlm_roberta,camembert,mpnetdanesmdengan absolute position embeddings) dimulai daripadding_idx + 1, yang biasanya bernilai 2. Jika model seperti ini diberikanposition_idsdefault berbasis 0, position embeddings akan bergeser secara diam-diam dan menurunkan kualitas outputnya, sehingga aturlahposition_ids_startsecara sesuai untuk model-model tersebut.
DataCollatorForMultipleChoice
kelas 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' )
Parameter
- tokenizer (PreTrainedTokenizer atau PreTrainedTokenizerFast) — Tokenizer yang digunakan untuk mengkodekan data.
- padding (
bool,stratau PaddingStrategy, opsional, defaultnyaTrue) — Pilih strategi untuk mengisi (padding) urutan yang dikembalikan sesuai dengan sisi padding dan indeks padding model, antara:Trueatau'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumenmax_lengthatau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.Falseatau'do_not_pad'(default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
- max_length (
int, opsional) — Panjang maksimum dari daftar yang dikembalikan dan secara opsional panjang padding (lihat di atas). - pad_to_multiple_of (
int, opsional) — Pad sequence menjadi kelipatan dari nilai yang diberikan.Hal ini sangat berguna untuk memungkinkan penggunaan Tensor Cores pada perangkat keras NVIDIA dengan compute capability >= 7.5 (Volta).
- return_tensors (
str, opsional, defaultnya"pt") — Jenis Tensor yang akan dikembalikan. Nilai yang diizinkan adalah “np” atau “pt”.
Data collator yang secara dinamis melakukan padding pada batch contoh bersarang untuk pilihan ganda, sehingga semua pilihan dari semua contoh memiliki panjang yang sama.