Transformers documentation

Lapisan dan utilitas kustom

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Lapisan dan utilitas kustom

Halaman ini mencantumkan semua lapisan kustom yang digunakan oleh pustaka, serta fungsi utilitas dan kelas yang disediakan untuk pemodelan.

Sebagian besar dari hal tersebut hanya berguna jika Anda sedang mempelajari kode model-model di dalam pustaka.

WeightRenaming

kelas transformers.GroupWeightRename

< >

( source_patterns: list[str]target_patterns: list[str] )

Menerapkan daftar transformasi WeightRenaming berpasangan, yang diaktifkan secara malas oleh pola sumber pertama (“guard”). Gunakan ini ketika dua penamaan ulang berbagi nama perantara (misalnya norm0→norm1 dan norm1→norm2) sehingga memuat checkpoint yang sudah dikonversi (yang memiliki norm1 dan norm2 tetapi tidak ada norm0) tidak salah menerapkan ulang penamaan tersebut.

NOTE: urutkan source_patterns sehingga pola yang tidak ada di checkpoint yang sudah dikonversi berada di awal. State dict diiterasi dalam urutan kunci yang terurut, sehingga pola penjaga harus lebih kecil secara leksikografis daripada pola-pola yang bergantung. Jika tidak, pola-pola yang bergantung akan dilewati pada iterasi pertama dan tidak akan pernah dicoba lagi.

WeightConverter

kelas transformers.WeightConverter

< >

( source_patterns: str | list[str]target_patterns: str | list[str]operations: list[ConversionOps]force_cpu: bool = False )

Operasi konversi

kelas transformers.ConversionOps

< >

( )

Kelas dasar untuk operasi konversi bobot.

kelas transformers.Chunk

< >

( dim: int = 0num_shards_attribute: str | None = None )

Pisahkan tensor di sepanjang dim menjadi potongan-potongan berukuran sama. Selain itu, num_shards_attribute adalah field konfigurasi yang dibaca untuk mengetahui berapa banyak tensor yang akan dipotong. Berguna saat menggabungkan sejumlah tensor yang tidak ditentukan.

kelas transformers.Concatenate

< >

( dim: int = 0num_shards_attribute: str | None = None )

Concatenate tensor sepanjang dim. Selain itu, jika menggabungkan sejumlah tensor yang arbitrer, num_shards_attribute adalah field konfigurasi yang dibaca untuk mengetahui berapa banyak tensor yang harus dibuat ulang saat menggunakan Ops yang berlawanan.

kelas transformers.MergeModulelist

< >

( dim: int = 0 )

Menggabungkan daftar tensor menjadi satu tensor tunggal di sepanjang dimensi pertama. Kami mendefinisikan ini secara eksplisit karena untuk EP atau TP Anda perlu memastikan bahwa Anda tahu apa yang sedang Anda lakukan!

kelas transformers.SplitModulelist

< >

( dim: int = 0 )

Kebalikan dari MergeModulelist menggunakan ukuran split eksplisit per grup.

kelas transformers.PermuteForRope

< >

( subconfig_key: str | None = Nonepermute_layer_names: list[str] | None = Noneinverse: bool = False )

Menerapkan permutasi yang diperlukan untuk mengubah bobot RoPE kompleks ke format sin/cos terpisah.

kelas transformers.VisionFuseAndPermuteForRope

< >

( dim: int = 0permute_layer_names: list[str] | None = Noneinverse: bool = True )

Menerapkan permutasi yang diperlukan untuk mengubah bobot RoPE kompleks ke format sin/cos terpisah pada QKV yang digabungkan. Sama seperti memanggil PermuteForRope() + Concatenate() tetapi memungkinkan kami memanggil Permute hanya pada subset tensor yang dipecah.

CATATAN: konversi ini hanya berlaku untuk tulang punggung visual dalam model multimodal, karena memeriksa config.vision_config

kelas transformers.VisionUnfuseAndPermuteForRope

< >

( dim: int = 0permute_layer_names: list[str] | None = Noneinverse: bool = False )

Menerapkan permutasi yang diperlukan untuk mengubah bobot RoPE kompleks ke format sin/cos terpisah pada QKV yang digabungkan. Sama seperti memanggil Chunk() + PermuteForRope() tetapi memungkinkan kami memanggil Permute hanya pada subset tensor yang di-chunk.

CATATAN: konversi ini hanya berlaku untuk tulang punggung visual dalam model multimodal, karena memeriksa config.vision_config

Lapisan

kelas transformers.GradientCheckpointingLayer

< >

( *args**kwargs )

Kelas dasar untuk lapisan dengan checkpointing gradien.

Kelas ini memungkinkan fungsionalitas gradient checkpointing untuk sebuah layer. Secara default, gradient checkpointing dinonaktifkan (gradient_checkpointing = False). Ketika model.set_gradient_checkpointing() dipanggil, gradient checkpointing diaktifkan dengan mengatur gradient_checkpointing = True dan menetapkan fungsi checkpointing ke _gradient_checkpointing_func.

Penting:

Saat menggunakan gradient checkpointing dengan use_reentrant=True, input yang memerlukan gradien (misalnya hidden states) harus diteruskan sebagai argumen posisional (*args) alih-alih argumen kata kunci agar gradien dapat dipropagasikan dengan benar.

Contoh:

>>> # Correct - hidden_states passed as positional arg
>>> out = self.layer(hidden_states, attention_mask=attention_mask)

>>> # Incorrect - hidden_states passed as keyword arg
>>> out = self.layer(hidden_states=hidden_states, attention_mask=attention_mask)

Fungsi Atensi

kelas transformers.AttentionInterface

< >

( )

Objek seperti dict yang melacak fungsi-fungsi attention yang diizinkan. Anda dapat dengan mudah menambahkan fungsi attention baru dengan memanggil register(). Jika sebuah model perlu menimpa fungsi attention yang sudah ada secara lokal, misalnya sdpa, model tersebut perlu mendeklarasikan instance baru dari kelas ini di dalam modeling_<model>.py, dan mendeklarasikannya pada instance tersebut.

register

< >

( key: strvalue: Callable )

Fungsi Mask Perhatian

kelas transformers.AttentionMaskInterface

< >

( )

register

< >

( key: strvalue: Callable )

Fungsi Penyematan Posisi Rotary

transformers.dynamic_rope_update

< >

( rope_forward )

Parameter

  • rope_forward (Callable) — Lalu maju (forward pass) dari implementasi RoPE.

Fungsi dekorator untuk memperbarui parameter RoPE pada jalur maju, jika model menggunakan RoPE dinamis (yaitu implementasi RoPE yang dapat menghitung ulang frekuensinya pada jalur maju).

Modul kustom Pytorch

kelas transformers.Conv1D

< >

( nfnx )

Parameter

  • nf (int) — Jumlah fitur output.
  • nx (int) — Jumlah fitur input.

Lapisan konvolusi 1D yang didefinisikan oleh Radford et al. untuk OpenAI GPT (dan juga digunakan dalam GPT-2).

Pada dasarnya bekerja seperti lapisan linear tetapi bobotnya ditranspos.

Fungsi Helper PyTorch

transformers.apply_chunking_to_forward

< >

( forward_fn: Callable[..., torch.Tensor]chunk_size: intchunk_dim: int*input_tensors ) → torch.Tensor

Parameter

  • forward_fn (Callable[..., torch.Tensor]) — Fungsi forward dari model.
  • chunk_size (int) — Ukuran chunk dari tensor yang di-chunk: num_chunks = len(input_tensors[0]) / chunk_size.
  • chunk_dim (int) — Dimensi di mana input_tensors harus dipecah.
  • input_tensors (tuple[torch.Tensor]) — Tensor input dari forward_fn yang akan dipecah

Mengembalikan

torch.Tensor

Tensor dengan bentuk yang sama seperti yang akan diberikan oleh forward_fn jika diterapkan`.

Fungsi ini memecah input_tensors menjadi bagian tensor input yang lebih kecil dengan ukuran chunk_size pada dimensi chunk_dim. Kemudian, fungsi ini menerapkan lapisan forward_fn pada setiap chunk secara independen untuk menghemat memori.

Jika forward_fn independen di sepanjang chunk_dim, fungsi ini akan menghasilkan hasil yang sama dengan menerapkan forward_fn secara langsung pada input_tensors.

Contoh:

# rename the usual forward() fn to forward_chunk()
def forward_chunk(self, hidden_states):
    hidden_states = self.decoder(hidden_states)
    return hidden_states


# implement a chunked forward function
def forward(self, hidden_states):
    return apply_chunking_to_forward(self.forward_chunk, self.chunk_size_lm_head, self.seq_len_dim, hidden_states)

transformers.pytorch_utils.prune_linear_layer

< >

( layer: nn.Linearindex: torch.LongTensordim: int = 0 ) → torch.nn.Linear

Parameter

  • layer (torch.nn.Linear) — Lapisan yang akan dipangkas.
  • index (torch.LongTensor) — Indeks yang akan dipertahankan di lapisan.
  • dim (int, opsional, default 0) — Dimensi yang digunakan untuk mempertahankan indeks.

Mengembalikan

torch.nn.Linear

Lapisan yang dipangkas sebagai lapisan baru dengan requires_grad=True.

Prune lapisan linear untuk hanya mempertahankan entri di index.

Digunakan untuk menghapus kepala.

Update on GitHub