Transformers documentation

DPR

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

Model ini dipublikasikan di HF papers pada 2020-04-10 dan disumbangkan ke Hugging Face Transformers pada 2020-11-16.

DPR

SDPA

Ikhtisar

Dense Passage Retrieval (DPR) adalah seperangkat alat dan model untuk penelitian open-domain Q&A terkini. Diperkenalkan dalam Dense Passage Retrieval for Open-Domain Question Answering oleh Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, Wen-tau Yih.

Abstrak dari makalah tersebut adalah sebagai berikut:

Jawaban pertanyaan domain terbuka bergantung pada pengambilan cuplikan yang efisien untuk memilih konteks kandidat, di mana model ruang vektor sparse tradisional, seperti TF-IDF atau BM25, adalah metode de facto. Dalam karya ini, kami menunjukkan bahwa pengambilan dapat diimplementasikan secara praktis hanya menggunakan representasi padat, di mana embedding dipelajari dari sejumlah kecil pertanyaan dan cuplikan oleh kerangka kerja dual-encoder yang sederhana. Ketika dievaluasi pada berbagai dataset QA domain terbuka, retriever padat kami melampaui sistem Lucene-BM25 yang kuat secara signifikan sebesar 9%-19% absolut dalam hal akurasi pengambilan 20 cuplikan teratas, dan membantu sistem QA end-to-end kami mencapai state-of-the-art baru pada beberapa benchmark QA domain terbuka.

Model ini disumbangkan oleh lhoestq. Kode aslinya dapat ditemukan di sini.

Tips penggunaan

  • DPR terdiri dari tiga model:

    • Encoder pertanyaan: mengkodekan pertanyaan sebagai vektor
    • Pengkode konteks: mengkodekan konteks sebagai vektor
    • Reader: mengekstrak jawaban dari pertanyaan di dalam konteks yang diambil, beserta skor relevansi (tinggi jika span yang disimpulkan benar-benar menjawab pertanyaan).

DPRConfig

kelas transformers.DPRConfig

< >

( 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 = Nonevocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Noneprojection_dim: int = 0is_decoder: bool = Falseadd_cross_attention: bool = False )

Parameter

  • vocab_size (int, opsional, default 30522) — Ukuran kosakata model. Menentukan jumlah token berbeda yang dapat direpresentasikan oleh input_ids.
  • hidden_size (int, opsional, default 768) — Dimensi dari representasi tersembunyi.
  • num_hidden_layers (int, opsional, default 12) — Jumlah lapisan tersembunyi dalam decoder Transformer.
  • num_attention_heads (int, opsional, default 12) — Jumlah attention head untuk setiap lapisan attention di decoder Transformer.
  • intermediate_size (int, opsional, default 3072) — Dimensi representasi MLP.
  • hidden_act (str, opsional, defaultnya gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • hidden_dropout_prob (Union[float, int], opsional, default 0.1) — Probabilitas dropout untuk semua lapisan fully connected di embeddings, encoder, dan pooler.
  • attention_probs_dropout_prob (Union[float, int], opsional, default 0.1) — Rasio dropout untuk probabilitas perhatian.
  • max_position_embeddings (int, opsional, default 512) — Panjang maksimum urutan yang mungkin digunakan dengan model ini.
  • type_vocab_size (int, opsional, default 2) — Ukuran kosakata dari token_type_ids.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • layer_norm_eps (float, opsional, defaultnya 1e-12) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • pad_token_id (int, opsional, default 0) — ID token yang digunakan untuk padding dalam kosakata.
  • bos_token_id (int, opsional) — ID token yang digunakan untuk awal aliran (beginning-of-stream) dalam kosakata.
  • eos_token_id (Union[int, list[int]], opsional) — ID token yang digunakan untuk akhir aliran dalam kosakata.
  • projection_dim (int, opsional, defaultnya 0) — Dimensi dari lapisan proyeksi teks dan visi.
  • is_decoder (bool, opsional, default False) — Apakah model digunakan sebagai decoder atau tidak. Jika False, model digunakan sebagai encoder.
  • add_cross_attention (bool, opsional, default False) — Apakah lapisan cross-attention harus ditambahkan ke model.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi DPRQuestionEncoder. Kelas ini digunakan untuk membuat model Dpr berdasarkan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi facebook/dpr-ctx_encoder-single-nq-base

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

>>> from transformers import DPRConfig, DPRContextEncoder

>>> # Initializing a DPR facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> configuration = DPRConfig()

>>> # Initializing a model (with random weights) from the facebook/dpr-ctx_encoder-single-nq-base style configuration
>>> model = DPRContextEncoder(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

DPRContextEncoderTokenizer

kelas transformers.DPRContextEncoderTokenizer

< >

( *argsdo_lower_case = False**kwargs )

Konstruksi tokenizer DPRContextEncoder.

DPRContextEncoderTokenizer identik dengan BertTokenizer dan menjalankan tokenisasi end-to-end: pemisahan tanda baca dan wordpiece.

Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.

DPRContextEncoderTokenizerFast

kelas transformers.DPRContextEncoderTokenizerFast

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )

Konstruksi tokenizer “fast” DPRContextEncoder (didukung oleh pustaka tokenizers dari HuggingFace).

DPRContextEncoderTokenizerFast identik dengan BertTokenizer dan menjalankan tokenisasi end-to-end: pemisahan tanda baca dan wordpiece.

Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.

DPRQuestionEncoderTokenizer

kelas transformers.DPRQuestionEncoderTokenizer

< >

( *argsdo_lower_case = False**kwargs )

Membangun tokenizer DPRQuestionEncoder.

DPRQuestionEncoderTokenizer identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece.

Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.

DPRQuestionEncoderTokenizerFast

kelas transformers.DPRQuestionEncoderTokenizerFast

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )

Membuat tokenizer DPRQuestionEncoder “cepat” (didukung oleh pustaka tokenizers dari HuggingFace).

DPRQuestionEncoderTokenizerFast identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece.

Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.

DPRReaderTokenizer

kelas transformers.DPRReaderTokenizer

< >

( *argsdo_lower_case = False**kwargs ) → dict[str, list[list[int]]]

Parameter

  • questions (str atau list[str]) — Pertanyaan yang akan di-encode. Anda dapat menentukan satu pertanyaan untuk banyak passage. Dalam kasus ini, pertanyaan akan diduplikasi seperti [questions] * n_passages. Sebaliknya, Anda harus menentukan sebanyak pertanyaan yang ada di titles atau texts.
  • titles (str atau list[str]) — Judul paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf.
  • texts (str atau list[str]) — Teks paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf.
  • padding (bool, str atau PaddingStrategy, opsional, defaultnya False) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:
    • True atau 'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).
    • 'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.
    • False atau 'do_not_pad' (default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
  • truncation (bool, str atau TruncationStrategy, opsional, defaultnya False) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:
    • True atau 'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.
    • 'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.
    • 'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.
    • False atau 'do_not_truncate' (default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
  • max_length (int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.

    Jika tidak disetel atau disetel ke None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan.

  • return_tensors (str atau TensorType, opsional) — Jika diset, akan mengembalikan tensor alih-alih daftar integer Python. Nilai yang dapat diterima adalah:
    • 'pt': Mengembalikan objek PyTorch torch.Tensor.
    • 'np': Mengembalikan objek Numpy np.ndarray.
  • return_attention_mask (bool, opsional) — Apakah akan mengembalikan attention mask. Jika tidak diatur, attention mask akan dikembalikan sesuai dengan nilai default tokenizer tertentu, yang ditentukan oleh atribut return_outputs .

    Apa itu attention mask?

Mengembalikan

dict[str, list[list[int]]]

Kamus dengan kunci-kunci berikut:

  • input_ids: Daftar id token yang akan diberikan ke model.
  • attention_mask: Daftar indeks yang menentukan token mana yang harus diperhatikan oleh model.

Konstruksi tokenizer DPRReader.

DPRReaderTokenizer hampir identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece. Perbedaannya adalah bahwa tokenizer ini memiliki tiga string input: question, titles, dan texts yang digabungkan untuk diberikan ke model DPRReader.

Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.

Kembalikan sebuah dictionary berisi token id dari string input dan informasi lain untuk diberikan ke .decode_best_spans. Ini mengonversi string dari sebuah pertanyaan dan berbagai passage (judul dan teks) menjadi urutan ID (bilangan bulat), menggunakan tokenizer dan vocabulary. Hasil input_ids adalah matriks berukuran (n_passages, sequence_length)

dengan format:

[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

DPRReaderTokenizerFast

kelas transformers.DPRReaderTokenizerFast

< >

( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs ) → dict[str, list[list[int]]]

Parameter

  • questions (str atau list[str]) — Pertanyaan yang akan di-encode. Anda dapat menentukan satu pertanyaan untuk banyak passage. Dalam kasus ini, pertanyaan akan diduplikasi seperti [questions] * n_passages. Sebaliknya, Anda harus menentukan sebanyak pertanyaan yang ada di titles atau texts.
  • titles (str atau list[str]) — Judul paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf.
  • texts (str atau list[str]) — Teks paragraf yang akan dienkod. Ini bisa berupa string atau daftar string jika ada beberapa paragraf.
  • padding (bool, str atau PaddingStrategy, opsional, defaultnya False) — Mengaktifkan dan mengontrol padding. Menerima nilai-nilai berikut:
    • True atau 'longest': Pad hingga urutan terpanjang dalam batch (atau tanpa padding jika hanya satu urutan yang diberikan).
    • 'max_length': Pad hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan.
    • False atau 'do_not_pad' (default): Tidak ada padding (yaitu, dapat menghasilkan batch dengan urutan yang panjangnya berbeda).
  • truncation (bool, str atau TruncationStrategy, opsional, defaultnya False) — Mengaktifkan dan mengontrol pemotongan. Menerima nilai-nilai berikut:
    • True atau 'longest_first': Memotong hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini akan memotong per token, dengan menghapus satu token dari urutan terpanjang dalam pasangan jika sepasang urutan (atau batch pasangan) diberikan.
    • 'only_first': Potong hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan pertama dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.
    • 'only_second': Potong hingga panjang maksimum yang ditentukan dengan argumen max_length atau hingga panjang input maksimum yang dapat diterima oleh model jika argumen tersebut tidak diberikan. Ini hanya akan memotong urutan kedua dari sebuah pasangan jika sepasang urutan (atau batch dari pasangan) diberikan.
    • False atau 'do_not_truncate' (default): Tidak ada pemotongan (yaitu, dapat menghasilkan batch dengan panjang sekuens yang lebih besar dari ukuran input maksimum yang diizinkan model).
  • max_length (int, opsional) — Mengontrol panjang maksimum yang digunakan oleh salah satu parameter truncation/padding.

    Jika tidak disetel atau disetel ke None, ini akan menggunakan panjang maksimum model yang telah didefinisikan sebelumnya jika panjang maksimum diperlukan oleh salah satu parameter truncation/padding. Jika model tidak memiliki panjang input maksimum yang spesifik (seperti XLNet), truncation/padding ke panjang maksimum akan dinonaktifkan.

  • return_tensors (str atau TensorType, opsional) — Jika diset, akan mengembalikan tensor alih-alih daftar integer Python. Nilai yang dapat diterima adalah:
    • 'pt': Mengembalikan objek PyTorch torch.Tensor.
    • 'np': Mengembalikan objek Numpy np.ndarray.
  • return_attention_mask (bool, opsional) — Apakah akan mengembalikan attention mask. Jika tidak diatur, attention mask akan dikembalikan sesuai dengan nilai default tokenizer tertentu, yang ditentukan oleh atribut return_outputs .

    Apa itu attention mask?

Mengembalikan

dict[str, list[list[int]]]

Kamus dengan kunci-kunci berikut:

  • input_ids: Daftar id token yang akan diberikan ke model.
  • attention_mask: Daftar indeks yang menentukan token mana yang harus diperhatikan oleh model.

Membuat tokenizer DPRReader “cepat” (didukung oleh pustaka tokenizers HuggingFace).

DPRReaderTokenizerFast hampir identik dengan BertTokenizer dan menjalankan tokenisasi dari awal hingga akhir: pemisahan tanda baca dan wordpiece. Perbedaannya adalah bahwa ia memiliki tiga string input: question, titles, dan texts yang digabungkan untuk diberikan ke model DPRReader.

Lihat kelas induk BertTokenizer untuk contoh penggunaan dan dokumentasi mengenai parameter.

Kembalikan sebuah dictionary berisi token id dari string input dan informasi lain untuk diberikan ke .decode_best_spans. Ini mengonversi string dari sebuah pertanyaan dan berbagai passage (judul dan teks) menjadi urutan ID (bilangan bulat), menggunakan tokenizer dan vocabulary. Hasil input_ids adalah matriks berukuran (n_passages, sequence_length) dengan format:

[CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

Output khusus DPR

kelas transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput

< >

( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Parameter

  • pooler_output (torch.Tensor dengan bentuk (batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi konteks. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang diproses lebih lanjut oleh lapisan Linear. Output ini digunakan untuk menyematkan konteks untuk kueri tetangga terdekat dengan embeddings pertanyaan.
  • hidden_states (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output embeddings, jika model memiliki lapisan embedding, + satu untuk output setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Kelas untuk output dari DPRQuestionEncoder.

kelas transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput

< >

( pooler_output: Tensorhidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Parameter

  • pooler_output (torch.Tensor dengan bentuk (batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi pertanyaan. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang kemudian diproses oleh lapisan Linear. Output ini digunakan untuk menyematkan pertanyaan untuk kueri tetangga terdekat dengan embeddings konteks.
  • hidden_states (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output embeddings, jika model memiliki lapisan embedding, + satu untuk output setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Kelas untuk output dari DPRQuestionEncoder.

kelas transformers.DPRReaderOutput

< >

( start_logits: Tensorend_logits: typing.Optional[torch.Tensor] = Nonerelevance_logits: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Parameter

  • start_logits (torch.Tensor dengan bentuk (n_passages, sequence_length)) — Logits dari indeks awal span untuk setiap passage.
  • end_logits (torch.Tensor dengan bentuk (n_passages, sequence_length)) — Logits dari indeks akhir span untuk setiap passage.
  • relevance_logits (torch.Tensor dengan bentuk (n_passages, )) — Output dari klasifikator QA dari DPRReader yang sesuai dengan skor setiap passage untuk menjawab pertanyaan, dibandingkan dengan semua passage lainnya.
  • hidden_states (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output embeddings, jika model memiliki lapisan embedding, + satu untuk output setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_attentions=True dilewatkan atau ketika config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Kelas untuk output dari DPRQuestionEncoder.

DPRContextEncoder

kelas transformers.DPRContextEncoder

< >

( config: DPRConfig )

Parameter

  • config (DPRConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Transformer DPRContextEncoder polos yang menghasilkan keluaran pooler sebagai representasi konteks.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRContextEncoderOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length)) — Indeks token dari urutan input dalam kosakata. Untuk sesuai dengan pra-pelatihan, urutan input DPR harus diformat dengan token [CLS] dan [SEP] sebagai berikut:

    (a) Untuk pasangan urutan (misalnya, pasangan judul+teks):

  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

DPRContextEncoderOutput atau tuple(torch.Tensor)

A DPRContextEncoderOutput atau tuple dari torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (DPRConfig) dan input.

Metode forward dari DPRContextEncoder menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • pooler_output (torch.Tensor dengan bentuk (batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi konteks. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang diproses lebih lanjut oleh lapisan Linear. Output ini digunakan untuk menyematkan konteks untuk kueri tetangga terdekat dengan embeddings pertanyaan.

  • hidden_states (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor, ...], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

tokens:         [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
token_type_ids:   0   0  0    0    0     0       0   0   1  1  1  1   1   1

(b) Untuk urutan tunggal (misalnya untuk sebuah pertanyaan):

tokens:         [CLS] the dog is hairy . [SEP]
token_type_ids:   0   0   0   0  0     0   0

DPR adalah model dengan penanam posisi absolut sehingga biasanya disarankan untuk mengisi input di sisi kanan, bukan di sisi kiri.

Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

Apa itu input ID?

Contoh:

>>> from transformers import DPRContextEncoder, DPRContextEncoderTokenizer

>>> tokenizer = DPRContextEncoderTokenizer.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> model = DPRContextEncoder.from_pretrained("facebook/dpr-ctx_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output

DPRQuestionEncoder

kelas transformers.DPRQuestionEncoder

< >

( config: DPRConfig )

Parameter

  • config (DPRConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Transformer DPRQuestionEncoder polos yang menghasilkan keluaran pooler sebagai representasi pertanyaan.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRQuestionEncoderOutput or tuple(torch.Tensor)

Parameter

  • input_ids (torch.LongTensor dengan bentuk (batch_size, sequence_length)) — Indeks token dari urutan input dalam kosakata. Untuk sesuai dengan pra-pelatihan, urutan input DPR harus diformat dengan token [CLS] dan [SEP] sebagai berikut:

    (a) Untuk pasangan urutan (misalnya, pasangan judul+teks):

  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • token_type_ids (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Indeks token segmen untuk menunjukkan bagian pertama dan kedua dari input. Indeks dipilih dari [0, 1]:
    • 0 sesuai dengan token sentence A,
    • 1 sesuai dengan token sentence B.

    Apa itu token type ID?

  • inputs_embeds (torch.Tensor dengan bentuk (batch_size, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

DPRQuestionEncoderOutput atau tuple(torch.Tensor)

A DPRQuestionEncoderOutput atau tuple dari torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (DPRConfig) dan input.

Metode forward dari DPRQuestionEncoder menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • pooler_output (torch.Tensor dengan bentuk (batch_size, embeddings_size)) — Encoder DPR menghasilkan pooler_output yang sesuai dengan representasi pertanyaan. Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) yang diproses lebih lanjut oleh lapisan Linear. Output ini digunakan untuk menyematkan pertanyaan untuk kueri tetangga terdekat dengan embeddings konteks.

  • hidden_states (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor, ...], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

tokens:         [CLS] is this jack ##son ##ville ? [SEP] no it is not . [SEP]
token_type_ids:   0   0  0    0    0     0       0   0   1  1  1  1   1   1

(b) Untuk urutan tunggal (misalnya untuk sebuah pertanyaan):

tokens:         [CLS] the dog is hairy . [SEP]
token_type_ids:   0   0   0   0  0     0   0

DPR adalah model dengan penanam posisi absolut sehingga biasanya disarankan untuk mengisi input di sisi kanan, bukan di sisi kiri.

Indeks dapat diperoleh menggunakan AutoTokenizer. Lihat PreTrainedTokenizer.encode() dan PreTrainedTokenizer.call() untuk detailnya.

Apa itu input ID?

Contoh:

>>> from transformers import DPRQuestionEncoder, DPRQuestionEncoderTokenizer

>>> tokenizer = DPRQuestionEncoderTokenizer.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> model = DPRQuestionEncoder.from_pretrained("facebook/dpr-question_encoder-single-nq-base")
>>> input_ids = tokenizer("Hello, is my dog cute ?", return_tensors="pt")["input_ids"]
>>> embeddings = model(input_ids).pooler_output

DPRReader

kelas transformers.DPRReader

< >

( config: DPRConfig )

Parameter

  • config (DPRConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Transformer DPRReader polos yang menghasilkan prediksi span.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DPRReaderOutput or tuple(torch.Tensor)

Parameter

  • input_ids (tuple[torch.LongTensor] dengan bentuk (n_passages, sequence_length)) — Indeks token urutan input dalam kosakata. Harus berupa triplet urutan dengan 1) pertanyaan dan 2) judul passage serta 3) teks passage. Untuk sesuai dengan pra-pelatihan, DPR input_ids urutan harus diformat dengan [CLS] dan [SEP] dengan format:

    [CLS] <question token ids> [SEP] <titles ids> [SEP] <texts ids>

    DPR adalah model dengan penanam posisi absolut sehingga biasanya disarankan untuk mengisi input di sisi kanan, bukan di sisi kiri.

    Indeks dapat diperoleh menggunakan DPRReaderTokenizer. Lihat dokumentasi kelas ini untuk detail lebih lanjut.

    Apa itu input ID?

  • attention_mask (torch.Tensor dengan bentuk (batch_size, sequence_length), opsional) — Mask untuk menghindari eksekusi attention pada indeks token padding. Nilai mask dipilih dari [0, 1]:
    • 1 untuk token yang tidak dimasker,
    • 0 untuk token yang dimasker.

    Apa itu attention mask?

  • inputs_embeds (torch.Tensor dengan bentuk (n_passages, sequence_length, hidden_size), opsional) — Secara opsional, alih-alih meneruskan input_ids, Anda dapat memilih untuk langsung meneruskan representasi tertanam. Hal ini berguna jika Anda ingin memiliki kendali lebih atas cara mengonversi indeks input_ids menjadi vektor terkait, dibandingkan dengan matriks pencarian penanaman internal model.
  • output_attentions (bool, opsional) — Apakah akan mengembalikan tensor attentions dari semua lapisan attention. Lihat attentions di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • output_hidden_states (bool, opsional) — Apakah akan mengembalikan hidden states dari semua lapisan. Lihat hidden_states di bawah tensor yang dikembalikan untuk detail lebih lanjut.
  • return_dict (bool, opsional) — Apakah akan mengembalikan ModelOutput alih-alih tuple biasa.

Mengembalikan

DPRReaderOutput atau tuple(torch.Tensor)

A DPRReaderOutput atau tuple dari torch.Tensor (jika return_dict=False dilewatkan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (DPRConfig) dan input.

Metode forward dari DPRReader menimpa metode khusus __call__.

Meskipun resep untuk forward pass perlu didefinisikan di dalam fungsi ini, sebaiknya panggil instance Module setelahnya alih-alih fungsi ini, karena yang pertama menangani langkah-langkah pra-pemrosesan dan pasca-pemrosesan, sedangkan yang kedua mengabaikannya secara diam-diam.

  • start_logits (torch.Tensor dengan bentuk (n_passages, sequence_length)) — Logits dari indeks awal span untuk setiap passage.

  • end_logits (torch.Tensor dengan bentuk (n_passages, sequence_length)) — Logits dari indeks akhir span untuk setiap passage.

  • relevance_logits (torch.Tensor dengan bentuk (n_passages, )) — Output dari klasifikator QA DPRReader yang sesuai dengan skor setiap passage untuk menjawab pertanyaan, dibandingkan dengan semua passage lainnya.

  • hidden_states (tuple[torch.Tensor, ...], opsional, dikembalikan ketika output_hidden_states=True dilewatkan atau ketika config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple[torch.Tensor, ...], opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

Contoh:

>>> from transformers import DPRReader, DPRReaderTokenizer

>>> tokenizer = DPRReaderTokenizer.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> model = DPRReader.from_pretrained("facebook/dpr-reader-single-nq-base")
>>> encoded_inputs = tokenizer(
...     questions=["What is love ?"],
...     titles=["Haddaway"],
...     texts=["'What Is Love' is a song recorded by the artist Haddaway"],
...     return_tensors="pt",
... )
>>> outputs = model(**encoded_inputs)
>>> start_logits = outputs.start_logits
>>> end_logits = outputs.end_logits
>>> relevance_logits = outputs.relevance_logits
Update on GitHub