Transformers documentation

Tầng và tiện ích tùy chỉnh

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

Tầng và tiện ích tùy chỉnh

Trang này liệt kê tất cả các lớp tùy chỉnh được thư viện sử dụng, cũng như các hàm tiện ích và lớp mà nó cung cấp cho việc mô hình hóa.

Phần lớn những điều đó chỉ hữu ích nếu bạn đang nghiên cứu mã nguồn của các mô hình trong thư viện.

WeightRenaming

lớp transformers.GroupWeightRename

< >

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

Áp dụng một danh sách các biến đổi WeightRenaming được ghép cặp, được kích hoạt một cách lười biếng bởi mẫu nguồn đầu tiên (“guard”). Sử dụng điều này khi hai lần đổi tên chia sẻ một tên trung gian (ví dụ: norm0→norm1 và norm1→norm2) để đảm bảo việc tải một checkpoint đã được chuyển đổi (có norm1 và norm2 nhưng không có norm0) không áp dụng lại các lần đổi tên một cách sai lệch.

NOTE: sắp xếp source_patterns sao cho pattern vắng mặt trong checkpoint đã được chuyển đổi đứng đầu. State dict được lặp lại theo thứ tự key đã sắp xếp, do đó guard pattern phải nhỏ hơn các pattern phụ thuộc theo thứ tự từ điển. Nếu không, các phần phụ thuộc sẽ bị bỏ qua ở lượt đầu tiên và không bao giờ được thử lại.

WeightConverter

lớp transformers.WeightConverter

< >

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

Các thao tác chuyển đổi

lớp transformers.ConversionOps

< >

( )

Lớp cơ sở cho các thao tác chuyển đổi trọng số.

lớp transformers.Chunk

< >

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

Tách một tensor dọc theo dim thành các khối có kích thước bằng nhau. Ngoài ra, num_shards_attribute là một trường cấu hình để đọc nhằm biết cần tách thành bao nhiêu tensor. Hữu ích khi nối một số lượng tensor tùy ý.

lớp transformers.Concatenate

< >

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

Nối các tensor dọc theo dim. Ngoài ra, nếu nối một số lượng tensor tùy ý, num_shards_attribute là một trường cấu hình để đọc nhằm biết số lượng tensor cần tạo lại khi sử dụng các Ops ngược lại.

lớp transformers.MergeModulelist

< >

( dim: int = 0 )

Gộp một danh sách tensor thành một tensor duy nhất dọc theo chiều đầu tiên. Chúng ta định nghĩa rõ ràng điều này vì với EP hoặc TP, bạn cần chắc chắn rằng mình biết mình đang làm gì!

lớp transformers.SplitModulelist

< >

( dim: int = 0 )

Ngược của MergeModulelist sử dụng kích thước tách rõ ràng cho từng nhóm.

lớp transformers.PermuteForRope

< >

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

Áp dụng hoán vị cần thiết để chuyển đổi trọng số RoPE phức tạp sang định dạng sin/cos tách riêng.

lớp transformers.VisionFuseAndPermuteForRope

< >

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

Áp dụng hoán vị cần thiết để chuyển trọng số RoPE phức sang định dạng sin/cos tách riêng trên QKV đã hợp nhất. Tương tự như việc gọi PermuteForRope() + Concatenate() nhưng cho phép gọi Permute chỉ trên một tập con của các tensor đã chia nhỏ.

LƯU Ý: quá trình chuyển đổi này chỉ áp dụng cho bộ xương thị giác trong các mô hình đa phương thức, vì nó kiểm tra config.vision_config

lớp transformers.VisionUnfuseAndPermuteForRope

< >

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

Áp dụng hoán vị cần thiết để chuyển trọng số RoPE phức sang định dạng sin/cos tách riêng trên QKV đã hợp nhất. Tương tự như việc gọi Chunk() + PermuteForRope() nhưng cho phép gọi Permute chỉ trên một tập con các tensor đã chia.

LƯU Ý: quá trình chuyển đổi này chỉ áp dụng cho bộ xương thị giác trong các mô hình đa phương thức, vì nó kiểm tra config.vision_config

Các lớp

lớp transformers.GradientCheckpointingLayer

< >

( *args**kwargs )

Lớp cơ sở cho các lớp có kiểm tra điểm gradient.

Lớp này cho phép tính năng kiểm tra điểm (gradient checkpointing) cho một lớp. Mặc định, gradient checkpointing bị tắt (gradient_checkpointing = False). Khi model.set_gradient_checkpointing() được gọi, gradient checkpointing sẽ được bật bằng cách đặt gradient_checkpointing = True và gán một hàm checkpointing cho _gradient_checkpointing_func.

Quan trọng:

Khi sử dụng gradient checkpointing với use_reentrant=True, các đầu vào cần tính gradient (ví dụ: hidden states) phải được truyền dưới dạng đối số vị trí (*args) thay vì đối số từ khóa để truyền gradient một cách chính xác.

Ví dụ:

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

Các hàm chú ý

lớp transformers.AttentionInterface

< >

( )

Đối tượng dạng Dict theo dõi các hàm attention được cho phép. Bạn có thể dễ dàng thêm một hàm attention mới bằng cách gọi register(). Nếu một model cần ghi đè cục bộ một hàm attention hiện có, chẳng hạn như sdpa, nó cần khai báo một instance mới của lớp này bên trong modeling_<model>.py, và khai báo nó trên instance đó.

đăng ký

< >

( key: strvalue: Callable )

Các hàm mặt nạ chú ý

lớp transformers.AttentionMaskInterface

< >

( )

đăng ký

< >

( key: strvalue: Callable )

Các hàm nhúng vị trí Xoay

transformers.dynamic_rope_update

< >

( rope_forward )

Tham số

  • rope_forward (Callable) — Bước truyền thẳng của triển khai RoPE.

Hàm decorator để cập nhật các tham số RoPE trong bước truyền thẳng, nếu mô hình đang sử dụng RoPE động (tức là một triển khai RoPE có thể tính toán lại tần số của nó trong bước truyền thẳng).

Các module tùy chỉnh của Pytorch

lớp transformers.Conv1D

< >

( nfnx )

Tham số

  • nf (int) — Số lượng đặc trưng đầu ra.
  • nx (int) — Số lượng đặc trưng đầu vào.

Lớp tích chập 1 chiều được định nghĩa bởi Radford et al. cho OpenAI GPT (và cũng được sử dụng trong GPT-2).

Về cơ bản hoạt động giống như một lớp tuyến tính nhưng các trọng số được chuyển vị.

Hàm trợ giúp PyTorch

transformers.apply_chunking_to_forward

< >

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

Tham số

  • forward_fn (Callable[..., torch.Tensor]) — Hàm forward của mô hình.
  • chunk_size (int) — Kích thước chunk của một tensor dạng chunk: num_chunks = len(input_tensors[0]) / chunk_size.
  • chunk_dim (int) — Chiều mà input_tensors nên được chia nhỏ.
  • input_tensors (tuple[torch.Tensor]) — Các tensor đầu vào của forward_fn sẽ được chia nhỏ

Trả về

torch.Tensor

Một tensor có cùng hình dạng với kết quả mà forward_fn sẽ trả về nếu được áp dụng`.

Hàm này chia input_tensors thành các phần tensor đầu vào nhỏ hơn có kích thước chunk_size trên chiều chunk_dim. Sau đó, nó áp dụng lớp forward_fn cho từng phần một cách độc lập để tiết kiệm bộ nhớ.

Nếu forward_fn độc lập theo chunk_dim, hàm này sẽ cho kết quả giống như việc áp dụng trực tiếp forward_fn lên input_tensors.

Ví dụ:

# 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

Tham số

  • layer (torch.nn.Linear) — Lớp cần cắt tỉa.
  • index (torch.LongTensor) — Các chỉ số cần giữ lại trong lớp.
  • dim (int, tuỳ chọn, mặc định là 0) — Chiều cần giữ lại các chỉ số.

Trả về

torch.nn.Linear

Lớp đã được cắt tỉa như một lớp mới với requires_grad=True.

Cắt tỉa một lớp tuyến tính để chỉ giữ lại các mục trong index.

Được sử dụng để loại bỏ các đầu.

Update on GitHub