Transformers documentation

Özel katmanlar ve yardımcılar

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

and get access to the augmented documentation experience

to get started

Özel katmanlar ve yardımcılar

Bu sayfa, kütüphanenin kullandığı tüm özel katmanları ile modelleme için sağladığı yardımcı işlevleri ve sınıfları listeler.

Bunların çoğu, kütüphanedeki modellerin kodunu inceliyorsanız işe yarar.

WeightRenaming

sınıf transformers.GroupWeightRename

< >

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

İlk (“guard”) kaynak deseni tarafından tembelce etkinleştirilen, eşleştirilmiş WeightRenaming dönüşümlerinin bir listesini uygular. İki yeniden adlandırmanın ara bir adı paylaştığı durumlarda (ör. norm0→norm1 ve norm1→norm2) bunu kullanın; böylece zaten dönüştürülmüş bir checkpoint (içinde norm1 ve norm2 olan ama norm0 içermeyen) yüklenirken yeniden adlandırmaların yanlışlıkla tekrar uygulanması önlenir.

NOT: source_patterns listesini, dönüştürülmüş checkpoint'te bulunmayan desenin başta geleceği şekilde sıralayın. State dict, sıralı anahtar sırasına göre işlenir; bu nedenle koruyucu desen, bağımlı desenlerden sözlük sırasına göre daha küçük olmalıdır. Aksi takdirde bağımlılar ilk geçişte atlanır ve asla yeniden denenmez.

WeightConverter

sınıf transformers.WeightConverter

< >

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

Dönüşüm işlemleri

sınıf transformers.ConversionOps

< >

( )

Ağırlık dönüştürme işlemleri için temel sınıf.

sınıf transformers.Chunk

< >

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

Bir tensörü dim boyunca eşit boyutlu parçalara ayırır. Ayrıca, kaç tensörün parçalanacağı bilgisini okumak için num_shards_attribute bir yapılandırma alanıdır. Belirsiz sayıda tensör birleştirilirken faydalıdır.

sınıf transformers.Concatenate

< >

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

dim boyutu boyunca tensörleri birleştirir. Ayrıca, keyfi sayıda tensör birleştiriliyorsa, num_shards_attribute, zıt Ops kullanılırken yeniden oluşturulacak tensör sayısını öğrenmek için okunacak bir yapılandırma alanıdır.

sınıf transformers.MergeModulelist

< >

( dim: int = 0 )

Bir tensör listesini ilk boyut boyunca tek bir tensöre birleştirir. EP veya TP için bunu açıkça tanımlıyoruz çünkü ne yaptığınızı bilmenizden emin olmanız gerekir!

sınıf transformers.SplitModulelist

< >

( dim: int = 0 )

Her grup için açık bölme boyutları kullanarak MergeModulelist'in tersi.

sınıf transformers.PermuteForRope

< >

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

Karmaşık RoPE ağırlıklarını bölünmüş sin/cos biçimine dönüştürmek için gereken permütasyonu uygular.

sınıf transformers.VisionFuseAndPermuteForRope

< >

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

Füzyonlu QKV üzerinde karmaşık RoPE ağırlıklarını bölünmüş sin/cos biçimine dönüştürmek için gereken permütasyonu uygular. PermuteForRope() + Concatenate() çağrısına eşdeğerdir ancak Permute işlemini yalnızca parçalanmış tensörlerin bir alt kümesine uygulamamıza olanak tanır.

NOT: bu dönüştürme, yalnızca çok modlu modellerdeki bir görme omurgasına uygulanır, çünkü config.vision_config alanını kontrol eder

sınıf transformers.VisionUnfuseAndPermuteForRope

< >

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

Füzyonlu QKV üzerinde karmaşık RoPE ağırlıklarını bölünmüş sin/cos biçimine dönüştürmek için gereken permütasyonu uygular. Chunk() + PermuteForRope() çağrısına eşdeğerdir ancak Permute işleminin yalnızca parçalanmış tensörlerin bir alt kümesine uygulanmasına olanak tanır.

NOT: bu dönüştürme, yalnızca çok modlu modellerdeki bir görme omurgasına uygulanır, çünkü config.vision_config alanını kontrol eder

Katmanlar

sınıf transformers.GradientCheckpointingLayer

< >

( *args**kwargs )

Gradyan denetleme noktası (gradient checkpointing) içeren katmanlar için temel sınıf.

Bu sınıf, bir katman için gradyan kontrol noktası (gradient checkpointing) işlevselliğini etkinleştirir. Varsayılan olarak gradyan kontrol noktası devre dışıdır (gradient_checkpointing = False). model.set_gradient_checkpointing() çağrıldığında, gradient_checkpointing = True olarak ayarlanarak ve _gradient_checkpointing_func öğesine bir kontrol noktası işlevi atanarak gradyan kontrol noktası etkinleştirilir.

Önemli:

use_reentrant=True ile gradyan denetimi kullanıldığında, gradyan gerektiren girdilerin (ör. gizli durumların) gradyanların doğru şekilde iletilmesi için anahtar kelime argümanları yerine konumsal argümanlar (*args) olarak geçirilmesi gerekir.

Örnek:

>>> # 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)

Dikkat Fonksiyonları

sınıf transformers.AttentionInterface

< >

( )

İzin verilen dikkat işlevlerini takip eden sözlük benzeri bir nesne. register() çağrısıyla yeni bir dikkat işlevi kolayca ekleyebilirsiniz. Bir model, mevcut bir dikkat işlevini, örneğin sdpa'yi, yerel olarak geçersiz kılmak gerekiyorsa, modeling_<model>.py içinde bu sınıfın yeni bir örneğini tanımlaması ve bunu o örnekte beyan etmesi gerekir.

kayıt

< >

( key: strvalue: Callable )

Dikkat Maskesi Fonksiyonları

sınıf transformers.AttentionMaskInterface

< >

( )

kayıt

< >

( key: strvalue: Callable )

Rotary Konum Gömme İşlevleri

transformers.dynamic_rope_update

< >

( rope_forward )

Parametreler

  • rope_forward (Callable) — RoPE uygulamasının ileri geçişi.

Model dinamik bir RoPE kullanıyorsa (yani ileri yönlü geçişte frekanslarını yeniden hesaplayabilen bir RoPE uygulaması) ileri yönlü geçişte RoPE parametrelerini güncellemek için dekoratör işlevi.

Pytorch özel modülleri

sınıf transformers.Conv1D

< >

( nfnx )

Parametreler

  • nf (int) — Çıktı özelliklerinin sayısı.
  • nx (int) — Girdi özelliklerinin sayısı.

Radford ve ark. tarafından OpenAI GPT için tanımlanan (ve GPT-2'de de kullanılan) 1D konvolüsyon katmanı.

Temel olarak bir doğrusal katman gibi çalışır ancak ağırlıklar transpoze edilmiştir.

PyTorch Yardımcı İşlevleri

transformers.apply_chunking_to_forward

< >

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

Parametreler

  • forward_fn (Callable[..., torch.Tensor]) — Modelin ileri işlevi.
  • chunk_size (int) — Parçalı bir tensörün parça boyutu: num_chunks = len(input_tensors[0]) / chunk_size.
  • chunk_dim (int) — input_tensors'in parçalanacağı boyut.
  • input_tensors (tuple[torch.Tensor]) — forward_fn'nin parçalara ayrılacak girdi tensörleri

Dönüş değeri

torch.Tensor

forward_fn uygulansaydı vereceği şekle sahip bir tensör`.

Bu fonksiyon, input_tensors girdisini chunk_dim boyutu boyunca chunk_size boyutunda daha küçük girdi tensörü parçalarına böler. Ardından, bellek tasarrufu sağlamak için her parçaya bağımsız olarak forward_fn katmanını uygular.

forward_fn, chunk_dim boyunca bağımsızsa bu fonksiyon, forward_fn'in input_tensors'a doğrudan uygulanmasıyla aynı sonucu verir.

Örnekler:

# 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

Parametreler

  • layer (torch.nn.Linear) — Budanacak katman.
  • index (torch.LongTensor) — Katmanda tutulacak indeksler.
  • dim (int, isteğe bağlı, varsayılan 0) — İndekslerin korunacağı boyut.

Dönüş değeri

torch.nn.Linear

requires_grad=True ile yeni bir katman olarak budanmış katman.

Doğrusal bir katmanı budayın ve yalnızca index içindeki girişleri koruyun.

Başları kaldırmak için kullanılır.

Update on GitHub