Transformers documentation
Özel katmanlar ve yardımcılar
Ö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 >( 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 >( source_patterns: str | list[str]target_patterns: str | list[str]operations: list[ConversionOps]force_cpu: bool = False )
Dönüşüm işlemleri
Ağırlık dönüştürme işlemleri için temel sınıf.
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.
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.
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!
Her grup için açık bölme boyutları kullanarak MergeModulelist'in tersi.
sınıf transformers.PermuteForRope
< source >( 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
< source >( 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
< source >( 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
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.
Dikkat Fonksiyonları
İ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.
Dikkat Maskesi Fonksiyonları
Rotary Konum Gömme İşlevleri
transformers.dynamic_rope_update
< source >( rope_forward )
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
< source >( nfnx )
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
< source >( 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
< source >( layer: nn.Linearindex: torch.LongTensordim: int = 0 ) → torch.nn.Linear
Doğrusal bir katmanı budayın ve yalnızca index içindeki girişleri koruyun.
Başları kaldırmak için kullanılır.