Transformers documentation

FlauBERT

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

Mô hình này được công bố trên HF papers vào ngày 2019-12-11 và được đóng góp cho Hugging Face Transformers vào ngày 2020-11-16.

FlauBERT

Tổng quan

Mô hình FlauBERT được đề xuất trong bài báo FlauBERT: Unsupervised Language Model Pre-training for French của Hang Le và cộng sự. Đây là một mô hình transformer được huấn luyện trước bằng mục tiêu mô hình hóa ngôn ngữ có che (masked language modeling, MLM) (giống như BERT).

Tóm tắt từ bài báo như sau:

Mô hình ngôn ngữ đã trở thành một bước quan trọng để đạt được kết quả tiên tiến trong nhiều tác vụ Xử lý Ngôn ngữ Tự nhiên (NLP) khác nhau. Bằng cách tận dụng lượng lớn văn bản không dán nhãn hiện có, chúng cung cấp một cách hiệu quả để huấn luyện trước các biểu diễn từ liên tục có thể được tinh chỉnh cho một tác vụ hạ nguồn, cùng với việc ngữ cảnh hóa ở cấp độ câu. Điều này đã được chứng minh rộng rãi cho tiếng Anh bằng cách sử dụng các biểu diễn có ngữ cảnh (Dai và Le, 2015; Peters et al., 2018; Howard và Ruder, 2018; Radford et al., 2018; Devlin et al., 2019; Yang et al., 2019b). Trong bài báo này, chúng tôi giới thiệu và chia sẻ FlauBERT, một mô hình được học trên một tập dữ liệu tiếng Pháp rất lớn và đa dạng. Các mô hình có kích thước khác nhau được huấn luyện bằng siêu máy tính Jean Zay mới của CNRS (Trung tâm Nghiên cứu Khoa học Quốc gia Pháp). Chúng tôi áp dụng các mô hình ngôn ngữ tiếng Pháp của mình vào nhiều tác vụ NLP khác nhau (phân loại văn bản, diễn đạt lại, suy luận ngôn ngữ tự nhiên, phân tích cú pháp, giải nghĩa từ) và cho thấy phần lớn thời gian chúng vượt trội hơn các phương pháp huấn luyện trước khác. Các phiên bản khác nhau của FlauBERT cũng như một giao thức đánh giá thống nhất cho các tác vụ hạ nguồn, được gọi là FLUE (French Language Understanding Evaluation), được chia sẻ cho cộng đồng nghiên cứu để thực hiện các thí nghiệm tái lập được hơn nữa trong NLP tiếng Pháp.

Mô hình này được đóng góp bởi formiel. Mã gốc có thể được tìm thấy tại đây.

Mẹo:

  • Giống như RoBERTa, nhưng không có dự đoán thứ tự câu (vì vậy chỉ được huấn luyện trên mục tiêu MLM).

Tài nguyên

FlaubertConfig

lớp transformers.FlaubertConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonepre_norm: bool = Falselayerdrop: float | int = 0.0vocab_size: int = 30145emb_dim: int = 2048n_layers: int = 12n_heads: int = 16dropout: float | int = 0.1attention_dropout: float | int = 0.1gelu_activation: bool = Truesinusoidal_embeddings: bool = Falsecausal: bool = Falseasm: bool = Falsen_langs: int = 1use_lang_emb: bool = Truemax_position_embeddings: int = 512embed_init_std: float = 0.02209708691207961layer_norm_eps: float = 1e-12init_std: float = 0.02bos_index: int = 0eos_index: int = 1pad_index: int = 2unk_index: int = 3mask_index: int = 5is_encoder: bool = Truesummary_type: str = 'first'summary_use_proj: bool = Truesummary_activation: str | None = Nonesummary_proj_to_labels: bool = Truesummary_first_dropout: float | int = 0.1start_n_top: int = 5end_n_top: int = 5mask_token_id: int = 0lang_id: int = 0pad_token_id: int | None = 2bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 1tie_word_embeddings: bool = True )

Tham số

  • pre_norm (bool, tùy chọn, mặc định là False) — Có áp dụng chuẩn hóa lớp (layer normalization) trước hay sau lớp feed forward tiếp theo attention trong mỗi lớp hay không (Vaswani et al., Tensor2Tensor for Neural Machine Translation. 2018)
  • layerdrop (Union[float, int], tùy chọn, mặc định là 0.0) — Xác suất LayerDrop. Xem [bài báo LayerDrop](xem https://huggingface.co/papers/1909.11556) để biết thêm chi tiết.
  • vocab_size (int, tuỳ chọn, mặc định là 30145) — Kích thước từ vựng của mô hình. Xác định số lượng token khác nhau có thể được biểu diễn bởi input_ids.
  • emb_dim (int, tùy chọn, mặc định là 2048) — Kích thước của lớp embedding.
  • n_layers (int, tùy chọn, mặc định là 12) — Số lượng lớp ẩn trong bộ giải mã Transformer.
  • n_heads (int, tùy chọn, mặc định là 16) — Số lượng đầu chú ý cho mỗi lớp chú ý trong bộ giải mã Transformer.
  • dropout (Union[float, int], tùy chọn, mặc định là 0.1) — Tỷ lệ cho tất cả các lớp dropout.
  • attention_dropout (Union[float, int], tùy chọn, mặc định là 0.1) — Tỷ lệ dropout cho các xác suất chú ý.
  • gelu_activation (bool, tùy chọn, mặc định là True) — Có sử dụng hàm kích hoạt GeLU hay không.
  • sinusoidal_embeddings (bool, tùy chọn, mặc định là False) — Có sử dụng nhúng vị trí hình sin thay vì nhúng vị trí tuyệt đối hay không.
  • causal (bool, tùy chọn, mặc định là False) — Xác định xem mô hình có nên hoạt động theo cách nhân quả hay không. Các mô hình nhân quả sử dụng mặt nạ chú ý hình tam giác để chỉ chú ý đến ngữ cảnh phía bên trái thay vì ngữ cảnh hai chiều.
  • asm (bool, optional, mặc định là False) — Có sử dụng lớp dự đoán là lớp chiếu log softmax thích ứng thay vì lớp tuyến tính hay không.
  • n_langs (int, tùy chọn, mặc định là 1) — Số lượng ngôn ngữ mà mô hình xử lý. Đặt thành 1 cho các mô hình đơn ngữ.
  • use_lang_emb (bool, tùy chọn, mặc định là True) — Có sử dụng nhúng ngôn ngữ hay không. Một số mô hình sử dụng các nhúng ngôn ngữ bổ sung, xem trang các mô hình đa ngôn ngữ để biết thông tin về cách sử dụng chúng.
  • embed_init_std (float, không bắt buộc, mặc định là 2048^-0.5) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo các ma trận nhúng.
  • max_position_embeddings (int, tùy chọn, mặc định là 512) — Chiều dài tối đa của chuỗi mà mô hình này có thể được sử dụng.
  • embed_init_std (float, không bắt buộc, mặc định là 2048**-0.5) — Giá trị std của bộ khởi tạo cho các lớp embedding.
  • layer_norm_eps (float, tùy chọn, mặc định là 1e-12) — Giá trị epsilon được sử dụng bởi các lớp chuẩn hóa lớp (layer normalization).
  • init_std (float, tùy chọn, mặc định là 0.02) — Độ lệch chuẩn của truncated_normal_initializer để khởi tạo tất cả các ma trận trọng số.
  • bos_index (int, tùy chọn, mặc định là 0) — Chỉ số của token bắt đầu câu trong bảng từ vựng.
  • eos_index (int, tùy chọn, mặc định là 1) — Chỉ số của token kết thúc câu trong từ vựng.
  • pad_index (int, tùy chọn, mặc định là 2) — Chỉ số của token đệm trong từ vựng.
  • unk_index (int, tùy chọn, mặc định là 3) — Chỉ số của token không xác định trong từ vựng.
  • mask_index (int, tùy chọn, mặc định là 5) — Chỉ số của token che phủ trong từ vựng.
  • is_encoder (bool, tùy chọn, mặc định là True) — Xác định xem mô hình có được sử dụng như một bộ mã hóa hay không.
  • summary_type (string, tuỳ chọn, mặc định là “first”) — Lập luận được sử dụng khi thực hiện tóm tắt chuỗi. Được dùng trong các mô hình phân loại chuỗi và lựa chọn nhiều phương án. Phải là một trong các tùy chọn sau:
    • "last": Lấy trạng thái ẩn của token cuối cùng (giống như XLNet).
    • "first": Lấy trạng thái ẩn của token đầu tiên (giống như BERT).
    • "mean": Lấy trung bình của các hidden states của tất cả các token.
    • "cls_index": Cung cấp một Tensor chứa vị trí của token phân loại (giống như GPT/GPT-2).
    • "attn": Chưa được triển khai, hãy sử dụng multi-head attention.
  • summary_use_proj (bool, tùy chọn, mặc định là True) — Tham số được sử dụng khi thực hiện tóm tắt chuỗi. Được dùng trong các mô hình phân loại chuỗi và lựa chọn nhiều phương án. Xác định có thêm một phép chiếu (projection) sau bước trích xuất vector hay không.
  • summary_activation (str, tùy chọn) — Tham số được sử dụng khi thực hiện tóm tắt chuỗi. Được dùng trong các mô hình phân loại chuỗi và lựa chọn nhiều phương án. Truyền "tanh" để áp dụng hàm kích hoạt tanh cho đầu ra, mọi giá trị khác sẽ không áp dụng hàm kích hoạt nào.
  • summary_proj_to_labels (bool, tùy chọn, mặc định là True) — Được sử dụng trong các mô hình phân loại chuỗi và lựa chọn nhiều phương án. Xác định xem đầu ra của phép chiếu có nên có config.num_labels hay config.hidden_size lớp.
  • summary_first_dropout (float, tùy chọn, mặc định là 0.1) — Được sử dụng trong các mô hình phân loại chuỗi và lựa chọn nhiều phương án. Tỷ lệ dropout được sử dụng sau phép chiếu và hàm kích hoạt.
  • start_n_top (int, tùy chọn, mặc định là 5) — Được sử dụng trong script đánh giá SQuAD.
  • end_n_top (int, tùy chọn, mặc định là 5) — Được sử dụng trong script đánh giá SQuAD.
  • mask_token_id (int, tùy chọn, mặc định là 0) — Tham số không phụ thuộc mô hình để xác định các token bị che khi tạo văn bản trong ngữ cảnh MLM.
  • lang_id (int, tùy chọn, mặc định là 1) — ID của ngôn ngữ được mô hình sử dụng. Tham số này được dùng khi tạo văn bản bằng một ngôn ngữ nhất định.
  • pad_token_id (int, tùy chọn, mặc định là 2) — Token id được sử dụng để đệm (padding) trong từ vựng.
  • bos_token_id (int, tùy chọn, mặc định là 0) — Token id được sử dụng cho đầu luồng trong bảng từ vựng.
  • eos_token_id (Union[int, list[int]], tùy chọn, mặc định là 1) — Token id được sử dụng cho end-of-stream trong bảng từ vựng.
  • tie_word_embeddings (bool, tùy chọn, mặc định là True) — Có nên gắn kết các trọng số nhúng theo ánh xạ tied_weights_keys của mô hình hay không.

Đây là lớp cấu hình để lưu trữ cấu hình của một FlaubertModel. Nó được sử dụng để khởi tạo một mô hình Flaubert theo các đối số được chỉ định, xác định kiến trúc của mô hình. Việc khởi tạo một cấu hình với các giá trị mặc định sẽ tạo ra một cấu hình tương tự như cấu hình của flaubert/flaubert_base_uncased

Các đối tượng cấu hình kế thừa từ PreTrainedConfig và có thể được sử dụng để kiểm soát đầu ra của mô hình. Đọc tài liệu từ PreTrainedConfig để biết thêm thông tin.

FlaubertTokenizer

lớp transformers.FlaubertTokenizer

< >

( vocab_filemerges_filedo_lowercase = Falseunk_token = '<unk>'bos_token = '<s>'sep_token = '</s>'pad_token = '<pad>'cls_token = '</s>'mask_token = '<special1>'additional_special_tokens = ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']lang2id = Noneid2lang = None**kwargs )

Tham số

  • vocab_file (str) — Tệp từ vựng.
  • merges_file (str) — Tệp merges.
  • do_lowercase (bool, tùy chọn, mặc định là False) — Kiểm soát việc chuyển chữ thường.
  • unk_token (str, tùy chọn, mặc định là "<unk>") — Token không xác định. Một token không có trong từ vựng sẽ không thể được chuyển đổi thành ID và sẽ được gán thành token này thay thế.
  • bos_token (str, tuỳ chọn, mặc định là "<s>") — Token bắt đầu chuỗi được sử dụng trong quá trình pretraining. Có thể được dùng làm token phân loại chuỗi. Khi xây dựng một chuỗi bằng các token đặc biệt, đây không phải là token được dùng cho phần bắt đầu của chuỗi. Token được dùng là cls_token.

    Khi xây dựng một chuỗi sử dụng các token đặc biệt, đây không phải là token được dùng cho phần đầu của chuỗi. Token được sử dụng là cls_token.

  • sep_token (str, tùy chọn, mặc định là "</s>") — Token phân cách, được sử dụng khi xây dựng một chuỗi từ nhiều chuỗi, ví dụ như hai chuỗi cho phân loại chuỗi hoặc một văn bản và một câu hỏi cho trả lời câu hỏi. Nó cũng được sử dụng làm token cuối cùng của một chuỗi được xây dựng với các token đặc biệt.
  • pad_token (str, tùy chọn, mặc định là "<pad>") — Token được sử dụng để đệm, chẳng hạn khi xử lý các lô (batch) gồm các chuỗi có độ dài khác nhau.
  • cls_token (str, tùy chọn, mặc định là "</s>") — Token phân loại được sử dụng khi thực hiện phân loại chuỗi (phân loại toàn bộ chuỗi thay vì phân loại theo từng token). Đây là token đầu tiên của chuỗi khi được xây dựng với các token đặc biệt.
  • mask_token (str, tùy chọn, mặc định là "<special1>") — Token được sử dụng để che các giá trị. Đây là token được dùng khi huấn luyện mô hình này với mô hình hóa ngôn ngữ có che (masked language modeling). Đây là token mà mô hình sẽ cố gắng dự đoán.
  • additional_special_tokens (List[str], tùy chọn, mặc định là ['<special0>', '<special1>', '<special2>', '<special3>', '<special4>', '<special5>', '<special6>', '<special7>', '<special8>', '<special9>']) — Danh sách các token đặc biệt bổ sung.
  • lang2id (Dict[str, int], tùy chọn) — Từ điển ánh xạ các định danh chuỗi ngôn ngữ sang ID tương ứng.
  • id2lang (Dict[int, str], tùy chọn) — Từ điển ánh xạ các ID ngôn ngữ sang định danh chuỗi tương ứng.

Xây dựng bộ phân từ Flaubert. Dựa trên Byte-Pair Encoding. Quy trình phân từ như sau:

  • Tiền xử lý và phân từ Moses.
  • Chuẩn hóa tất cả các đầu vào văn bản.
  • Các đối số special_tokens và hàm set_special_tokens có thể được sử dụng để thêm các ký hiệu bổ sung (như ”classify”) vào bảng từ vựng.
  • Tham số do_lowercase kiểm soát việc chuyển chữ thường (được thiết lập tự động cho các từ vựng được huấn luyện trước).

Tokenizer này kế thừa từ PreTrainedTokenizer, lớp chứa hầu hết các phương thức chính. Người dùng nên tham khảo siêu lớp này để biết thêm thông tin về các phương thức đó.

build_inputs_with_special_tokens

< >

( token_ids_0: listtoken_ids_1: list[int] | None = None ) → List[int]

Tham số

  • token_ids_0 (List[int]) — Danh sách các ID mà các token đặc biệt sẽ được thêm vào.
  • token_ids_1 (List[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.

Trả về

List[int]

Danh sách input IDs với các token đặc biệt phù hợp.

Xây dựng đầu vào mô hình từ một chuỗi hoặc một cặp chuỗi cho các tác vụ phân loại chuỗi bằng cách nối và thêm các token đặc biệt. Một chuỗi XLM có định dạng như sau:

  • một chuỗi đơn: <s> X </s>
  • cặp chuỗi: <s> A </s> B </s>

convert_tokens_to_string

< >

( tokens )

Chuyển đổi một chuỗi các token (chuỗi ký tự) trong một chuỗi duy nhất.

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → List[int]

Tham số

  • token_ids_0 (List[int]) — Danh sách các ID.
  • token_ids_1 (List[int], tùy chọn) — Danh sách ID thứ hai tùy chọn cho các cặp chuỗi.
  • already_has_special_tokens (bool, tùy chọn, mặc định là False) — Danh sách token đã được định dạng với các token đặc biệt cho mô hình hay chưa.

Trả về

List[int]

Một danh sách các số nguyên trong khoảng [0, 1]: 1 cho một token đặc biệt, 0 cho một token chuỗi.

Lấy các id của chuỗi từ một danh sách token chưa được thêm token đặc biệt. Phương thức này được gọi khi thêm token đặc biệt bằng cách sử dụng phương thức prepare_for_model của tokenizer.

FlaubertModel

lớp transformers.FlaubertModel

< >

( config: FlaubertConfig )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình Flaubert cơ bản, xuất ra các hidden-state thô mà không có bất kỳ head cụ thể nào ở phía trên.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.LongTensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonelengths: typing.Optional[torch.LongTensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem ở trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)]:
  • cache (dict[str, torch.Tensor], optional) — Từ điển ánh xạ chuỗi đến torch.Tensor chứa các hidden-states đã tính trước (key và values trong các khối attention) do mô hình tính toán (xem đầu ra cache bên dưới). Có thể dùng để tăng tốc giải mã tuần tự. Đối tượng từ điển sẽ bị thay đổi tại chỗ trong quá trình forward pass để thêm các hidden-states mới được tính toán.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

BaseModelOutput hoặc tuple(torch.Tensor)

Một BaseModelOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • last_hidden_state (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size)) — Chuỗi các hidden-state tại đầu ra của lớp cuối cùng của mô hình.

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

FlaubertWithLMHeadModel

lớp transformers.FlaubertWithLMHeadModel

< >

( config: FlaubertConfig )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình transformer Flaubert với đầu mô hình hóa ngôn ngữ ở trên (lớp tuyến tính với trọng số được liên kết với các nhúng đầu vào).

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MaskedLMOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem ở trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)]:
  • cache (dict[str, torch.Tensor], optional) — Từ điển ánh xạ chuỗi đến torch.Tensor chứa các hidden-states đã tính trước (key và values trong các khối attention) do mô hình tính toán (xem đầu ra cache bên dưới). Có thể dùng để tăng tốc giải mã tuần tự. Đối tượng từ điển sẽ bị thay đổi tại chỗ trong quá trình forward pass để thêm các hidden-states mới được tính toán.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • labels (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Nhãn cho mô hình hóa ngôn ngữ. Lưu ý rằng các nhãn được dịch chuyển bên trong mô hình, tức là bạn có thể đặt labels = input_ids Các chỉ số được chọn trong [-100, 0, ..., config.vocab_size] Tất cả các nhãn được đặt thành -100 sẽ bị bỏ qua (che), loss chỉ được tính cho các nhãn trong [0, ..., config.vocab_size]
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

MaskedLMOutput hoặc tuple(torch.Tensor)

Một MaskedLMOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertWithLMHeadModel ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có hình dạng (1,), tùy chọn, được trả về khi labels được cung cấp) — Tổn thất mô hình hóa ngôn ngữ có mặt nạ (MLM).

  • logits (torch.Tensor có hình dạng (batch_size, sequence_length, config.vocab_size)) — Điểm dự đoán của đầu mô hình hóa ngôn ngữ (điểm cho mỗi token trong từ vựng trước SoftMax).

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

>>> import torch
>>> from transformers import AutoTokenizer, FlaubertWithLMHeadModel

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertWithLMHeadModel.from_pretrained("flaubert/flaubert_base_uncased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
>>> outputs = model(**inputs, labels=inputs["input_ids"])
>>> loss = outputs.loss
>>> logits = outputs.logits

FlaubertForSequenceClassification

lớp transformers.FlaubertForSequenceClassification

< >

( config: FlaubertConfig )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình Flaubert với đầu phân loại/hồi quy chuỗi phía trên (một lớp tuyến tính phía trên đầu ra đã được pool) ví dụ cho các tác vụ GLUE.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem bên trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)].
  • cache (dict[str, torch.Tensor], tùy chọn) — Thư mục EncoderDecoderCache chứa các trạng thái KV đã được tính trước. Có thể được sử dụng để tăng tốc độ giải mã tuần tự.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • labels (torch.LongTensor có shape (batch_size,), tùy chọn) — Nhãn để tính loss cho phân loại/hồi quy chuỗi. Chỉ số phải nằm trong [0, ..., config.num_labels - 1]. Nếu config.num_labels == 1, loss hồi quy sẽ được tính (Mean-Square loss). Nếu config.num_labels > 1, loss phân loại sẽ được tính (Cross-Entropy).
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

SequenceClassifierOutput hoặc tuple(torch.Tensor)

Một SequenceClassifierOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertForSequenceClassification ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có shape (1,), optional, được trả về khi labels được cung cấp) — Loss phân loại (hoặc hồi quy nếu config.num_labels==1).

  • logits (torch.Tensor có hình dạng (batch_size, config.num_labels)) — Điểm phân loại (hoặc hồi quy nếu config.num_labels==1) (trước SoftMax).

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ về phân loại nhãn đơn:

>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

Ví dụ về phân loại đa nhãn:

>>> import torch
>>> from transformers import AutoTokenizer, FlaubertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForSequenceClassification.from_pretrained("flaubert/flaubert_base_uncased", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = FlaubertForSequenceClassification.from_pretrained(
...     "flaubert/flaubert_base_uncased", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

FlaubertForMultipleChoice

lớp transformers.FlaubertForMultipleChoice

< >

( config: FlaubertConfig*inputs**kwargs )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình Flaubert với đầu phân loại lựa chọn nhiều phương án ở trên (một lớp tuyến tính trên đầu ra đã được pool và một softmax), ví dụ cho các tác vụ RocStories/SWAG.

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → MultipleChoiceModelOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.LongTensor có dạng (batch_size, num_choices, sequence_length)) — Chỉ số của các token trong chuỗi đầu vào theo từ vựng. Có thể lấy chỉ số bằng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết. input IDs là gì?

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, num_choices, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.LongTensor có hình dạng (batch_size, num_choices, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.LongTensor có hình dạng (batch_size, num_choices, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.max_position_embeddings - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem bên trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)].
  • cache (dict[str, torch.Tensor], tùy chọn) — Thư mục EncoderDecoderCache chứa các trạng thái KV đã được tính trước. Có thể được sử dụng để tăng tốc độ giải mã tuần tự.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, num_choices, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • labels (torch.LongTensor có hình dạng (batch_size,), tùy chọn) — Nhãn để tính toán tổn thất phân loại lựa chọn nhiều. Chỉ số phải nằm trong [0, ..., num_choices-1] trong đó num_choices là kích thước của chiều thứ hai của các tensor đầu vào. (Xem input_ids ở trên)
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

MultipleChoiceModelOutput hoặc tuple(torch.Tensor)

Một MultipleChoiceModelOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertForMultipleChoice ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có hình dạng (1,), tùy chọn, được trả về khi labels được cung cấp) — Tổn phân loại.

  • logits (torch.Tensor có shape (batch_size, num_choices)) — num_choices là chiều thứ hai của các tensor đầu vào. (xem input_ids ở trên).

    Điểm phân loại (trước SoftMax).

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

>>> from transformers import AutoTokenizer, FlaubertForMultipleChoice
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForMultipleChoice.from_pretrained("flaubert/flaubert_base_uncased")

>>> prompt = "In Italy, pizza served in formal settings, such as at a restaurant, is presented unsliced."
>>> choice0 = "It is eaten with a fork and a knife."
>>> choice1 = "It is eaten while held in the hand."
>>> labels = torch.tensor(0).unsqueeze(0)  # choice0 is correct (according to Wikipedia ;)), batch size 1

>>> encoding = tokenizer([prompt, prompt], [choice0, choice1], return_tensors="pt", padding=True)
>>> outputs = model(**{k: v.unsqueeze(0) for k, v in encoding.items()}, labels=labels)  # batch size is 1

>>> # the linear classifier still needs to be trained
>>> loss = outputs.loss
>>> logits = outputs.logits

FlaubertForTokenClassification

lớp transformers.FlaubertForTokenClassification

< >

( config: FlaubertConfig )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Transformer Flaubert với một đầu phân loại token phía trên (một lớp tuyến tính phía trên đầu ra của hidden-states), ví dụ cho các tác vụ Nhận thực thể có tên (NER).

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → TokenClassifierOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem bên trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)].
  • cache (dict[str, torch.Tensor], tùy chọn) — Thư mục EncoderDecoderCache chứa các trạng thái KV đã được tính trước. Có thể được sử dụng để tăng tốc độ giải mã tuần tự.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • labels (torch.LongTensor có shape (batch_size, sequence_length), tùy chọn) — Nhãn để tính toán loss phân loại token. Các chỉ số phải nằm trong [0, ..., config.num_labels - 1].
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

TokenClassifierOutput hoặc tuple(torch.Tensor)

Một TokenClassifierOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertForTokenClassification ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có shape (1,), tuỳ chọn, được trả về khi labels được cung cấp) — Loss phân loại.

  • logits (torch.Tensor có hình dạng (batch_size, sequence_length, config.num_labels)) — Điểm phân loại (trước SoftMax).

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

>>> from transformers import AutoTokenizer, FlaubertForTokenClassification
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForTokenClassification.from_pretrained("flaubert/flaubert_base_uncased")

>>> inputs = tokenizer(
...     "HuggingFace is a company based in Paris and New York", add_special_tokens=False, return_tensors="pt"
... )

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_token_class_ids = logits.argmax(-1)

>>> # Note that tokens are classified rather then input words which means that
>>> # there might be more predicted token classes than words.
>>> # Multiple token classes might account for the same word
>>> predicted_tokens_classes = [model.config.id2label[t.item()] for t in predicted_token_class_ids[0]]
>>> predicted_tokens_classes
...

>>> labels = predicted_token_class_ids
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

FlaubertForQuestionAnsweringSimple

lớp transformers.FlaubertForQuestionAnsweringSimple

< >

( config: FlaubertConfig )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Mô hình Flaubert với một đầu phân loại span phía trên cho các tác vụ trả lời câu hỏi trích xuất như SQuAD (một lớp tuyến tính phía trên đầu ra hidden-states để tính toán span start logits và span end logits).

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → QuestionAnsweringModelOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem bên trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)].
  • cache (dict[str, torch.Tensor], tùy chọn) — Thư mục EncoderDecoderCache chứa các trạng thái KV đã được tính trước. Có thể được sử dụng để tăng tốc độ giải mã tuần tự.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • start_positions (torch.Tensor có hình dạng (batch_size,), tùy chọn) — Nhãn cho vị trí (chỉ số) bắt đầu của đoạn được gán nhãn để tính toán tổn thất phân loại token. Các vị trí được kẹp (clamp) theo độ dài của chuỗi (sequence_length). Các vị trí nằm ngoài chuỗi không được tính đến khi tính toán tổn thất.
  • end_positions (torch.Tensor có hình dạng (batch_size,), tùy chọn) — Nhãn cho vị trí (chỉ số) của điểm kết thúc của đoạn được gán nhãn để tính toán tổn thất phân loại token. Các vị trí được kẹp (clamp) theo độ dài của chuỗi (sequence_length). Các vị trí nằm ngoài chuỗi không được tính đến khi tính toán tổn thất.
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

QuestionAnsweringModelOutput hoặc tuple(torch.Tensor)

Một QuestionAnsweringModelOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertForQuestionAnsweringSimple ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có shape (1,), tuỳ chọn, được trả về khi labels được cung cấp) — Tổng loss trích xuất span là tổng của Cross-Entropy cho các vị trí bắt đầu và kết thúc.

  • start_logits (torch.Tensor có hình dạng (batch_size, sequence_length)) — Điểm số bắt đầu span (trước SoftMax).

  • end_logits (torch.Tensor có hình dạng (batch_size, sequence_length)) — Điểm số kết thúc span (trước SoftMax).

  • hidden_states (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Bộ tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple(torch.Tensor), tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

>>> from transformers import AutoTokenizer, FlaubertForQuestionAnsweringSimple
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("flaubert/flaubert_base_uncased")
>>> model = FlaubertForQuestionAnsweringSimple.from_pretrained("flaubert/flaubert_base_uncased")

>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"

>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)

>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()

>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...

>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])

>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...

FlaubertForQuestionAnswering

lớp transformers.FlaubertForQuestionAnswering

< >

( config: FlaubertConfig )

Tham số

  • config (FlaubertConfig) — Lớp cấu hình mô hình chứa tất cả các tham số của mô hình. Khởi tạo bằng tệp cấu hình sẽ không tải trọng số liên quan đến mô hình, chỉ tải cấu hình. Xem phương thức from_pretrained() để tải trọng số của mô hình.

Transformer Flaubert với một đầu phân loại span phía trên cho các tác vụ trả lời câu hỏi trích xuất như SQuAD (một lớp tuyến tính phía trên đầu ra hidden-states để tính toán span start logits và span end logits).

Mô hình này kế thừa từ PreTrainedModel. Xem tài liệu của lớp cha để biết các phương thức chung mà thư viện triển khai cho tất cả các mô hình của nó (chẳng hạn như tải xuống hoặc lưu trữ, thay đổi kích thước các nhúng đầu vào, cắt tỉa các đầu, v.v.)

Mô hình này cũng là một lớp con của torch.nn.Module trong PyTorch. Hãy sử dụng nó như một Module PyTorch thông thường và tham khảo tài liệu PyTorch cho mọi vấn đề liên quan đến cách sử dụng và hành vi chung.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonelangs: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Nonelengths: typing.Optional[torch.Tensor] = Nonecache: dict[str, torch.Tensor] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.Tensor] = Noneend_positions: typing.Optional[torch.Tensor] = Noneis_impossible: typing.Optional[torch.Tensor] = Nonecls_index: typing.Optional[torch.Tensor] = Nonep_mask: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → FlaubertForQuestionAnsweringOutput or tuple(torch.Tensor)

Tham số

  • input_ids (torch.Tensor có dạng (batch_size, sequence_length), tùy chọn) — Chỉ số của các token trong chuỗi đầu vào theo từ điển. Mặc định, padding sẽ bị bỏ qua.

    Các chỉ số có thể được lấy bằng cách sử dụng AutoTokenizer. Xem PreTrainedTokenizer.encode() và PreTrainedTokenizer.call() để biết thêm chi tiết.

    ID đầu vào là gì?

  • attention_mask (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Mặt nạ để tránh thực hiện chú ý trên các chỉ số token đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
    • 1 cho các token không bị che,
    • 0 cho các token bị che.

    Mặt nạ chú ý là gì?

  • langs (torch.LongTensor có hình dạng (batch_size, sequence_length), tùy chọn) — Một chuỗi token song song được sử dụng để chỉ định ngôn ngữ của từng token trong đầu vào. Các chỉ số là id ngôn ngữ, có thể lấy được từ tên ngôn ngữ bằng cách sử dụng hai ánh xạ chuyển đổi được cung cấp trong cấu hình của mô hình (chỉ được cung cấp cho các mô hình đa ngôn ngữ). Cụ thể hơn, ánh xạ từ tên ngôn ngữ sang id ngôn ngữ nằm trong model.config.lang2id ((là một từ điển từ chuỗi sang int) và ánh xạ từ id ngôn ngữ sang tên ngôn ngữ nằm trong model.config.id2lang ((từ điển từ int sang chuỗi).

    Xem các ví dụ sử dụng chi tiết trong tài liệu đa ngôn ngữ.

  • token_type_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số token phân đoạn để chỉ định phần đầu và phần thứ hai của đầu vào. Các chỉ số được chọn trong [0, 1]:
    • 0 tương ứng với một token sentence A,
    • 1 tương ứng với một token sentence B.

    ID loại token là gì?

  • position_ids (torch.Tensor có hình dạng (batch_size, sequence_length), tùy chọn) — Chỉ số vị trí của các token trong mỗi chuỗi đầu vào trong các position embeddings. Được chọn trong khoảng [0, config.n_positions - 1].

    ID vị trí là gì?

  • lengths (torch.LongTensor có shape (batch_size,), tùy chọn) — Độ dài của từng câu, có thể được sử dụng để tránh thực hiện attention trên các chỉ số token padding. Bạn cũng có thể sử dụng attention_mask để đạt được kết quả tương tự (xem bên trên), được giữ lại ở đây để đảm bảo tính tương thích. Các chỉ số được chọn trong [0, ..., input_ids.size(-1)].
  • cache (dict[str, torch.Tensor], tùy chọn) — Thư mục EncoderDecoderCache chứa các trạng thái KV đã được tính trước. Có thể được sử dụng để tăng tốc độ giải mã tuần tự.
  • inputs_embeds (torch.Tensor có hình dạng (batch_size, sequence_length, hidden_size), tùy chọn) — Tùy chọn, thay vì truyền input_ids, bạn có thể chọn truyền trực tiếp một biểu diễn nhúng. Điều này hữu ích nếu bạn muốn kiểm soát nhiều hơn cách chuyển đổi các chỉ số input_ids thành các vector liên quan so với ma trận tra cứu nhúng nội bộ của mô hình.
  • start_positions (torch.Tensor có hình dạng (batch_size,), tùy chọn) — Nhãn cho vị trí (chỉ số) bắt đầu của đoạn được gán nhãn để tính toán tổn thất phân loại token. Các vị trí được kẹp (clamp) theo độ dài của chuỗi (sequence_length). Các vị trí nằm ngoài chuỗi không được tính đến khi tính toán tổn thất.
  • end_positions (torch.Tensor có hình dạng (batch_size,), tùy chọn) — Nhãn cho vị trí (chỉ số) của điểm kết thúc của đoạn được gán nhãn để tính toán tổn thất phân loại token. Các vị trí được kẹp (clamp) theo độ dài của chuỗi (sequence_length). Các vị trí nằm ngoài chuỗi không được tính đến khi tính toán tổn thất.
  • is_impossible (torch.LongTensor có hình dạng (batch_size,), tùy chọn) — Nhãn cho biết một câu hỏi có câu trả lời hay không (SQuAD 2.0)
  • cls_index (torch.LongTensor có shape (batch_size,), tùy chọn) — Nhãn cho vị trí (chỉ số) của token phân loại được dùng làm đầu vào để tính độ hợp lý của câu trả lời.
  • p_mask (torch.Tensor có shape (batch_size, sequence_length), tùy chọn) — Mặt nạ tùy chọn cho các token không thể nằm trong câu trả lời (ví dụ: [CLS], [PAD], …). 1.0 có nghĩa là token nên bị che. 0.0 có nghĩa là token không bị che.
  • output_attentions (bool, tùy chọn) — Có trả về các tensor attentions của tất cả các lớp attention hay không. Xem attentions trong phần tensor được trả về để biết thêm chi tiết.
  • output_hidden_states (bool, tùy chọn) — Có trả về trạng thái ẩn (hidden states) của tất cả các lớp hay không. Xem hidden_states trong phần tensor trả về để biết thêm chi tiết.
  • return_dict (bool, tùy chọn) — Có nên trả về một ModelOutput thay vì một tuple thông thường hay không.

Trả về

FlaubertForQuestionAnsweringOutput hoặc tuple(torch.Tensor)

Một FlaubertForQuestionAnsweringOutput hoặc một tuple của torch.Tensor (nếu return_dict=False được truyền hoặc khi config.return_dict=False) bao gồm các thành phần khác nhau tùy thuộc vào cấu hình (FlaubertConfig) và đầu vào.

Phương thức forward của FlaubertForQuestionAnswering ghi đè lên phương thức đặc biệt __call__.

Mặc dù công thức cho bước truyền tiến cần được định nghĩa bên trong hàm này, người dùng nên gọi instance của Module sau đó thay vì gọi hàm này, vì instance Module sẽ đảm nhận việc thực hiện các bước tiền xử lý và hậu xử lý, trong khi hàm này sẽ lặng lẽ bỏ qua chúng.

  • loss (torch.Tensor có shape (1,), tùy chọn, được trả về nếu cả start_positions và end_positions đều được cung cấp) — Loss phân loại dưới dạng tổng của các loss phân loại cho token bắt đầu, token kết thúc (và is_impossible nếu được cung cấp).

  • start_top_log_probs (torch.Tensor có shape (batch_size, config.start_n_top), optional, được trả về nếu start_positions hoặc end_positions không được cung cấp) — Log probabilities cho config.start_n_top khả năng token bắt đầu hàng đầu (beam-search).

  • start_top_index (torch.LongTensor có shape (batch_size, config.start_n_top), tùy chọn, được trả về nếu start_positions hoặc end_positions không được cung cấp) — Chỉ số cho config.start_n_top khả năng token bắt đầu hàng đầu (beam-search).

  • end_top_log_probs (torch.Tensor có shape (batch_size, config.start_n_top * config.end_n_top), optional, được trả về nếu start_positions hoặc end_positions không được cung cấp) — Xác suất log cho config.start_n_top * config.end_n_top khả năng token kết thúc hàng đầu (beam-search).

  • end_top_index (torch.LongTensor có shape (batch_size, config.start_n_top * config.end_n_top), tùy chọn, được trả về nếu start_positions hoặc end_positions không được cung cấp) — Chỉ số cho config.start_n_top * config.end_n_top khả năng token kết thúc hàng đầu (beam-search).

  • cls_logits (torch.Tensor có hình dạng (batch_size,), tùy chọn, được trả về nếu start_positions hoặc end_positions không được cung cấp) — Xác suất log cho nhãn is_impossible của các câu trả lời.

  • hidden_states (tuple[torch.Tensor], tuỳ chọn, được trả về khi output_hidden_states=True được truyền vào hoặc khi config.output_hidden_states=True) — Tuple của torch.Tensor (một cho đầu ra của embeddings, nếu mô hình có lớp embedding, + một cho đầu ra của mỗi lớp) có hình dạng (batch_size, sequence_length, hidden_size).

    Trạng thái ẩn của mô hình tại đầu ra của mỗi lớp cùng với các đầu ra embedding ban đầu tùy chọn.

  • attentions (tuple[torch.Tensor], tuỳ chọn, được trả về khi output_attentions=True được truyền vào hoặc khi config.output_attentions=True) — Tuple của torch.Tensor (một cho mỗi lớp) có hình dạng (batch_size, num_heads, sequence_length, sequence_length).

    Trọng số chú ý sau softmax của attention, được sử dụng để tính trung bình có trọng số trong các đầu self-attention.

Ví dụ:

>>> from transformers import AutoTokenizer, FlaubertForQuestionAnswering
>>> import torch

>>> tokenizer = AutoTokenizer.from_pretrained("FacebookAI/xlm-mlm-en-2048")
>>> model = FlaubertForQuestionAnswering.from_pretrained("FacebookAI/xlm-mlm-en-2048")

>>> input_ids = torch.tensor(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True)).unsqueeze(
...     0
... )  # Batch size 1
>>> start_positions = torch.tensor([1])
>>> end_positions = torch.tensor([3])

>>> outputs = model(input_ids, start_positions=start_positions, end_positions=end_positions)
>>> loss = outputs.loss
Update on GitHub