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

이 모델은 2020-04-10에 HF papers에 게시되었으며, 2020-11-16에 Hugging Face Transformers에 기여되었습니다.

DPR

SDPA

개요

Dense Passage Retrieval(DPR)은 최첨단 오픈 도메인 Q&A 연구를 위한 도구 및 모델의 집합입니다. Vladimir Karpukhin, Barlas Oğuz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, Wen-tau Yih가 Dense Passage Retrieval for Open-Domain Question Answering에서 소개했습니다.

해당 논문의 초록은 다음과 같습니다:

오픈 도메인 질의응답은 후보 컨텍스트를 선택하기 위해 효율적인 패스리지 검색에 의존하며, TF-IDF나 BM25와 같은 전통적인 희소 벡터 공간 모델이 사실상 표준 방법입니다. 본 연구에서는 간단한 듀얼 인코더 프레임워크를 사용하여 소수의 질문과 패스리지로부터 임베딩을 학습함으로써, 밀집 표현만으로 검색을 실용적으로 구현할 수 있음을 보여줍니다. 다양한 오픈 도메인 QA 데이터셋에서 평가한 결과, 우리의 밀집 검색기는 top-20 패스리지 검색 정확도 기준으로 강력한 Lucene-BM25 시스템을 9%~19%의 절대적 차이로 크게 능가하며, 우리의 엔드투엔드 QA 시스템이 여러 오픈 도메인 QA 벤치마크에서 새로운 최첨단 성능을 달성하는 데 기여합니다.

이 모델은 lhoestq에 의해 기여되었습니다. 원본 코드는 여기에서 찾을 수 있습니다.

사용 팁

  • DPR은 세 가지 모델로 구성됩니다:

    • 질문 인코더: 질문을 벡터로 인코딩
    • 컨텍스트 인코더: 컨텍스트를 벡터로 인코딩
    • Reader: 검색된 컨텍스트 내 질문의 답변을 추출하고, 관련성 점수를 함께 반환합니다(추론된 스팬이 실제로 질문을 답변하는 경우 점수가 높음).

DPRConfig

클래스 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 )

매개변수

  • vocab_size (int, 선택 사항, 기본값 30522) — 모델의 어휘 크기입니다. input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다.
  • hidden_size (int, 선택 사항, 기본값 768) — 숨겨진 표현의 차원입니다.
  • num_hidden_layers (int, 선택 사항, 기본값 12) — Transformer 디코더의 숨겨진 레이어 수.
  • num_attention_heads (int, 선택 사항, 기본값 12) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다.
  • intermediate_size (int, 선택 사항, 기본값 3072) — MLP 표현의 차원입니다.
  • hidden_act (str, 선택 사항, 기본값 gelu) — 디코더에서 사용되는 비선형 활성화 함수(함수 또는 문자열)입니다. 예를 들어, "gelu", "relu", "silu" 등이 있습니다.
  • hidden_dropout_prob (Union[float, int], 선택 사항, 기본값 0.1) — 임베딩, 인코더, 풀러의 모든 완전 연결 계층에 적용되는 드롭아웃 확률입니다.
  • attention_probs_dropout_prob (Union[float, int], 선택 사항, 기본값 0.1) — Attention 확률에 적용할 dropout 비율입니다.
  • max_position_embeddings (int, 선택 사항, 기본값 512) — 이 모델이 사용될 수 있는 최대 시퀀스 길이입니다.
  • type_vocab_size (int, 선택 사항, 기본값 2) — token_type_ids의 어휘 크기입니다.
  • initializer_range (float, 선택 사항, 기본값 0.02) — 모든 가중치 행렬을 초기화하는 truncated_normal_initializer의 표준 편차입니다.
  • layer_norm_eps (float, 선택 사항, 기본값 1e-12) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다.
  • pad_token_id (int, 선택 사항, 기본값 0) — 어휘에서 패딩에 사용되는 토큰 ID입니다.
  • bos_token_id (int, 선택 사항) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다.
  • eos_token_id (Union[int, list[int]], 선택) — 어휘에서 스트림 종료에 사용되는 토큰 ID입니다.
  • projection_dim (int, 선택 사항, 기본값 0) — 텍스트 및 비전 투영 레이어의 차원.
  • is_decoder (bool, 선택 사항, 기본값 False) — 모델이 디코더로 사용되는지 여부입니다. False인 경우 모델은 인코더로 사용됩니다.
  • add_cross_attention (bool, 선택 사항, 기본값 False) — 모델에 cross-attention 레이어를 추가할지 여부.

이것은 DPRQuestionEncoder의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Dpr 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 facebook/dpr-ctx_encoder-single-nq-base와 유사한 설정이 생성됩니다.

Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.

예:

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

클래스 transformers.DPRContextEncoderTokenizer

< >

( *argsdo_lower_case = False**kwargs )

DPRContextEncoder 토크나이저를 구성합니다.

DPRContextEncoderTokenizer은 BertTokenizer와 동일하며, 구두점 분할과 워드피스를 포함한 끝에서 끝까지의 토큰화를 수행합니다.

사용 예시 및 매개변수에 대한 문서에 대해서는 상위 클래스 BertTokenizer를 참조하세요.

DPRContextEncoderTokenizerFast

클래스 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 )

HuggingFace의 tokenizers 라이브러리를 기반으로 하는 “fast” DPRContextEncoder 토크나이저를 구성합니다.

DPRContextEncoderTokenizerFast는 BertTokenizer와 동일하며, 구두점 분할과 wordpiece를 포함하는 끝에서 끝까지의 토큰화를 실행합니다.

사용 예시 및 매개변수에 대한 문서에 대해서는 상위 클래스 BertTokenizer를 참조하세요.

DPRQuestionEncoderTokenizer

클래스 transformers.DPRQuestionEncoderTokenizer

< >

( *argsdo_lower_case = False**kwargs )

DPRQuestionEncoder 토크나이저를 생성합니다.

DPRQuestionEncoderTokenizer는 BertTokenizer와 동일하며, 구두점 분할과 워드피스를 포함하는 전체 토큰화 과정을 수행합니다.

사용 예시 및 매개변수에 대한 문서에 대해서는 상위 클래스 BertTokenizer를 참조하세요.

DPRQuestionEncoderTokenizerFast

클래스 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 )

HuggingFace의 tokenizers 라이브러리를 기반으로 하는 “fast” DPRQuestionEncoder 토크나이저를 생성합니다.

DPRQuestionEncoderTokenizerFast은 BertTokenizer와 동일하며, 구두점 분할과 워드피스를 포함하는 end-to-end 토큰화를 실행합니다.

사용 예시 및 매개변수에 대한 문서에 대해서는 상위 클래스 BertTokenizer를 참조하세요.

DPRReaderTokenizer

class transformers.DPRReaderTokenizer

< >

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

매개변수

  • questions (str 또는 list[str]) — 인코딩할 질문입니다. 여러 패스지에 대해 하나의 질문을 지정할 수 있습니다. 이 경우 질문은 [questions] * n_passages처럼 복제됩니다. 그렇지 않으면 titles 또는 texts의 개수와 동일한 수의 질문을 지정해야 합니다.
  • titles (str 또는 list[str]) — 인코딩할 패사지의 제목입니다. 패사지가 여러 개인 경우 문자열 또는 문자열 목록을 사용할 수 있습니다.
  • texts (str 또는 list[str]) — 인코딩할 패사지 텍스트입니다. 패사지가 여러 개인 경우 문자열 또는 문자열 목록을 사용할 수 있습니다.
  • padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값은 False) — 패딩을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다: True 또는 'longest': 배치 내 가장 긴 시퀀스 길이로 패딩합니다(단일 시퀀스만 제공된 경우 패딩하지 않음). 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 패딩합니다. False 또는 'do_not_pad' (기본값): 패딩하지 않음(즉, 서로 다른 길이의 시퀀스로 구성된 배치 출력 가능).
    • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).
    • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.
    • False 또는 'do_not_pad' (기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
  • truncation (bool, str 또는 TruncationStrategy, 선택 사항, 기본값은 False) — 잘림을 활성화하고 제어합니다. 다음 값을 허용합니다:
    • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 방식은 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.
    • 'only_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 첫 번째 시퀀스를 잘라냅니다.
    • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.
    • False 또는 'do_not_truncate' (기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
  • max_length (int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.

    설정하지 않거나 None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다.

  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': Numpy np.ndarray 객체를 반환합니다.
  • return_attention_mask (bool, 선택 사항) — attention mask를 반환할지 여부. 설정하지 않으면 return_outputs 속성에 따라 정의된 해당 tokenizer의 기본값에 따라 attention mask를 반환합니다.

    어텐션 마스크란 무엇인가요?

반환값

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

다음 키를 가진 사전:

  • input_ids: 모델에 입력할 토큰 ID 목록.
  • attention_mask: 모델이 어떤 토큰에 주의를 기울여야 하는지 지정하는 인덱스 목록.

DPRReader 토크나이저를 구성합니다.

DPRReaderTokenizer은 BertTokenizer와 거의 동일하며, 구두점 분할과 wordpiece를 포함하는 end-to-end 토큰화를 수행합니다. 차이점은 question, titles, texts라는 세 개의 입력 문자열을 받아 결합한 뒤 DPRReader 모델에 전달한다는 점입니다.

사용 예시 및 매개변수에 대한 문서에 대해서는 상위 클래스 BertTokenizer를 참조하세요.

입력 문자열의 토큰 ID와 .decode_best_spans에 전달할 기타 정보를 딕셔너리로 반환합니다. 토크나이저와 어휘를 사용하여 질문과 여러 패스지(제목 및 본문)의 문자열을 ID(정수) 시퀀스로 변환합니다. 그 결과로 생성되는 input_ids는 크기가 (n_passages, sequence_length)인 행렬입니다.

다음 형식으로:

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

DPRReaderTokenizerFast

클래스 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]]]

매개변수

  • questions (str 또는 list[str]) — 인코딩할 질문입니다. 여러 패스지에 대해 하나의 질문을 지정할 수 있습니다. 이 경우 질문은 [questions] * n_passages처럼 복제됩니다. 그렇지 않으면 titles 또는 texts의 개수와 동일한 수의 질문을 지정해야 합니다.
  • titles (str 또는 list[str]) — 인코딩할 패사지의 제목입니다. 패사지가 여러 개인 경우 문자열 또는 문자열 목록을 사용할 수 있습니다.
  • texts (str 또는 list[str]) — 인코딩할 패사지 텍스트입니다. 패사지가 여러 개인 경우 문자열 또는 문자열 목록을 사용할 수 있습니다.
  • padding (bool, str 또는 PaddingStrategy, 선택 사항, 기본값은 False) — 패딩을 활성화하고 제어합니다. 다음 값을 받을 수 있습니다: True 또는 'longest': 배치 내 가장 긴 시퀀스 길이로 패딩합니다(단일 시퀀스만 제공된 경우 패딩하지 않음). 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 패딩합니다. False 또는 'do_not_pad' (기본값): 패딩하지 않음(즉, 서로 다른 길이의 시퀀스로 구성된 배치 출력 가능).
    • True 또는 'longest': 배치 내 가장 긴 시퀀스 길이에 맞게 패딩을 수행합니다(단일 시퀀스만 제공된 경우 패딩을 하지 않음).
    • 'max_length': max_length 인수로 지정된 최대 길이로 패딩하거나, 해당 인수가 제공되지 않으면 모델이 허용하는 최대 입력 길이로 패딩합니다.
    • False 또는 'do_not_pad' (기본값): 패딩을 하지 않습니다(즉, 서로 다른 길이의 시퀀스로 구성된 배치로 출력할 수 있습니다).
  • truncation (bool, str 또는 TruncationStrategy, 선택 사항, 기본값은 False) — 잘림을 활성화하고 제어합니다. 다음 값을 허용합니다:
    • True 또는 'longest_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 방식은 토큰 단위로 잘라내며, 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우 가장 긴 시퀀스에서 토큰을 하나씩 제거합니다.
    • 'only_first': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 첫 번째 시퀀스를 잘라냅니다.
    • 'only_second': max_length 인수로 지정된 최대 길이로 잘라내거나, 해당 인수가 제공되지 않은 경우 모델이 허용하는 최대 입력 길이로 잘라냅니다. 이 옵션은 시퀀스 쌍(또는 쌍의 배치)이 제공된 경우에만 쌍의 두 번째 시퀀스를 잘라냅니다.
    • False 또는 'do_not_truncate' (기본값): 잘라내기 없음 (즉, 모델이 허용하는 최대 입력 크기보다 긴 시퀀스 길이를 가진 배치 출력 가능).
  • max_length (int, 선택 사항) — truncation/padding 파라미터 중 하나가 사용할 최대 길이를 제어합니다.

    설정하지 않거나 None으로 설정하면, truncation/padding 파라미터 중 하나가 최대 길이를 요구할 경우 미리 정의된 모델 최대 길이를 사용합니다. 모델에 특정 최대 입력 길이가 없는 경우(XLNet 등) 최대 길이로 truncation/padding하는 기능이 비활성화됩니다.

  • return_tensors (str 또는 TensorType, 선택 사항) — 설정된 경우, Python 정수 목록 대신 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:
    • 'pt': PyTorch torch.Tensor 객체를 반환합니다.
    • 'np': Numpy np.ndarray 객체를 반환합니다.
  • return_attention_mask (bool, 선택 사항) — attention mask를 반환할지 여부. 설정하지 않으면 return_outputs 속성에 따라 정의된 해당 tokenizer의 기본값에 따라 attention mask를 반환합니다.

    어텐션 마스크란 무엇인가요?

반환값

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

다음 키를 가진 사전:

  • input_ids: 모델에 입력할 토큰 ID 목록.
  • attention_mask: 모델이 어떤 토큰에 주의를 기울여야 하는지 지정하는 인덱스 목록.

HuggingFace의 tokenizers 라이브러리를 기반으로 하는 “fast” DPRReader 토크나이저를 생성합니다.

DPRReaderTokenizerFast은 BertTokenizer와 거의 동일하며, 구두점 분할과 wordpiece를 포함하는 end-to-end 토큰화를 수행합니다. 차이점은 question, titles, texts라는 세 개의 입력 문자열을 가지고 있으며, 이 문자열들을 결합하여 DPRReader 모델에 전달한다는 점입니다.

사용 예시 및 매개변수에 대한 문서에 대해서는 상위 클래스 BertTokenizer를 참조하세요.

입력 문자열의 토큰 ID와 .decode_best_spans에 전달할 기타 정보를 딕셔너리로 반환합니다. 토크나이저와 어휘를 사용하여 질문과 여러 패스지(제목 및 본문)의 문자열을 ID(정수) 시퀀스로 변환합니다. 생성된 input_ids는 (n_passages, sequence_length) 크기의 행렬이며, 형식은 다음과 같습니다:

[CLS] <질문 토큰 ID> [SEP] <제목 ID> [SEP] <본문 ID>

DPR에 특화된 출력

class transformers.models.dpr.modeling_dpr.DPRContextEncoderOutput

< >

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

매개변수

  • pooler_output (torch.Tensor, shape (batch_size, embeddings_size)) — DPR 인코더는 컨텍스트 표현에 해당하는 pooler_output을 출력합니다. 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state를 Linear 레이어로 추가 처리한 값입니다. 이 출력은 질문 임베딩을 사용하여 컨텍스트를 임베딩하여 최근접 이웃 쿼리를 수행하는 데 사용됩니다.
  • hidden_states (tuple[torch.Tensor, ...], 선택 사항, 다음 조건에서 반환됩니다: output_hidden_states=True 이 전달되거나 config.output_hidden_states=True) — 다음 형태의 튜플: torch.Tensor (임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는 (batch_size, sequence_length, hidden_size).

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor, ...], 선택 사항, 다음 조건에서 반환됩니다: output_attentions=True 이 전달되거나 config.output_attentions=True) — 다음의 튜플입니다: torch.Tensor (각 레이어당 하나씩, 모양이 (batch_size, num_heads, sequence_length, sequence_length).

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

DPRQuestionEncoder의 출력 클래스입니다.

class transformers.models.dpr.modeling_dpr.DPRQuestionEncoderOutput

< >

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

매개변수

  • pooler_output (torch.Tensor, shape (batch_size, embeddings_size)) — DPR 인코더는 질문 표현에 해당하는 pooler_output를 출력합니다. 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state를 Linear 레이어로 추가 처리한 값입니다. 이 출력은 컨텍스트 임베딩을 활용한 최근접 이웃 쿼리에 질문을 임베딩하는 데 사용됩니다.
  • hidden_states (tuple[torch.Tensor, ...], 선택 사항, 다음 조건에서 반환됩니다: output_hidden_states=True 이 전달되거나 config.output_hidden_states=True) — 다음 형태의 튜플: torch.Tensor (임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는 (batch_size, sequence_length, hidden_size).

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor, ...], 선택 사항, 다음 조건에서 반환됩니다: output_attentions=True 이 전달되거나 config.output_attentions=True) — 다음의 튜플입니다: torch.Tensor (각 레이어당 하나씩, 모양이 (batch_size, num_heads, sequence_length, sequence_length).

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

DPRQuestionEncoder의 출력 클래스입니다.

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

매개변수

  • start_logits (torch.Tensor, shape (n_passages, sequence_length)) — 각 패스지의 스팬 시작 인덱스에 대한 로짓.
  • end_logits (torch.Tensor, shape (n_passages, sequence_length)) — 각 passage에 대해 스팬의 끝 인덱스에 대한 logits입니다.
  • relevance_logits (torch.Tensor, shape (n_passages, )) — DPRReader의 QA 분류기가 출력하는 값으로, 각 passage가 주어진 질문에 답할 수 있는 점수를 나타내며, 다른 모든 passage와 비교됩니다.
  • hidden_states (tuple[torch.Tensor, ...], 선택 사항, 다음 조건에서 반환됩니다: output_hidden_states=True 이 전달되거나 config.output_hidden_states=True) — 다음 형태의 튜플: torch.Tensor (임베딩이 있는 경우 임베딩 레이어의 출력 1개 + 각 레이어의 출력 1개)로, 형태는 (batch_size, sequence_length, hidden_size).

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor, ...], 선택 사항, 다음 조건에서 반환됩니다: output_attentions=True 이 전달되거나 config.output_attentions=True) — 다음의 튜플입니다: torch.Tensor (각 레이어당 하나씩, 모양이 (batch_size, num_heads, sequence_length, sequence_length).

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

DPRQuestionEncoder의 출력 클래스입니다.

DPRContextEncoder

클래스 transformers.DPRContextEncoder

< >

( config: DPRConfig )

매개변수

  • config (DPRConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

pooler 출력을 컨텍스트 표현으로 출력하는 기본 DPRContextEncoder transformer.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

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)

매개변수

  • input_ids (torch.LongTensor 다음 형태의 (batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 사전 학습과 일치시키기 위해 DPR 입력 시퀀스는 [CLS] 및 [SEP] 토큰을 사용하여 다음과 같이 포맷팅되어야 합니다:

    (a) 시퀀스 쌍의 경우(예: 제목+본문 쌍):

  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • token_type_ids (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) — 입력의 첫 번째 및 두 번째 부분을 나타내는 세그먼트 토큰 인덱스. 인덱스는 [0, 1]:
    • 0은 sentence A 토큰에 해당합니다.
    • 1은 sentence B 토큰에 해당합니다.

    토큰 타입 ID란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 attentions 항목을 참조하세요.
  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중 hidden_states 항목을 참고하세요.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.

반환값

DPRContextEncoderOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 DPRContextEncoderOutput (인수가 return_dict=False인 경우 또는 config.return_dict=False인 경우)로, 구성(DPRConfig)과 입력에 따라 다양한 요소를 포함합니다.

DPRContextEncoder의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • pooler_output (torch.Tensor, shape (batch_size, embeddings_size)) — DPR 인코더는 컨텍스트 표현에 해당하는 pooler_output을 출력합니다. 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state를 Linear 레이어로 추가 처리한 값입니다. 이 출력은 질문 임베딩을 사용하여 컨텍스트를 임베딩하여 최근접 이웃 쿼리를 수행하는 데 사용됩니다.

  • hidden_states (tuple[torch.Tensor, ...], 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor, ...], 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 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) 단일 시퀀스의 경우(예: 질문):

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

DPR은 절대 위치 임베딩을 사용하는 모델이므로, 일반적으로 왼쪽이 아닌 오른쪽으로 입력을 패딩하는 것이 권장됩니다.

AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

입력 ID란 무엇인가요?

예:

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

클래스 transformers.DPRQuestionEncoder

< >

( config: DPRConfig )

매개변수

  • config (DPRConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

pooler 출력을 질문 표현으로 출력하는 기본 DPRQuestionEncoder transformer.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

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)

매개변수

  • input_ids (torch.LongTensor 다음 형태의 (batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 사전 학습과 일치시키기 위해 DPR 입력 시퀀스는 [CLS] 및 [SEP] 토큰을 사용하여 다음과 같이 포맷팅되어야 합니다:

    (a) 시퀀스 쌍의 경우(예: 제목+본문 쌍):

  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • token_type_ids (torch.Tensor 형상 (batch_size, sequence_length), 선택 사항) — 입력의 첫 번째 및 두 번째 부분을 나타내는 세그먼트 토큰 인덱스. 인덱스는 [0, 1]:
    • 0은 sentence A 토큰에 해당합니다.
    • 1은 sentence B 토큰에 해당합니다.

    토큰 타입 ID란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (batch_size, sequence_length, hidden_size), 선택) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 attentions 항목을 참조하세요.
  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중 hidden_states 항목을 참고하세요.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.

반환값

DPRQuestionEncoderOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 DPRQuestionEncoderOutput (인수가 return_dict=False인 경우 또는 config.return_dict=False인 경우)로, 구성(DPRConfig)과 입력에 따라 다양한 요소를 포함합니다.

DPRQuestionEncoder의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • pooler_output (torch.Tensor, shape (batch_size, embeddings_size)) — DPR 인코더는 질문 표현에 해당하는 pooler_output을 출력합니다. 시퀀스의 첫 번째 토큰(분류 토큰)의 마지막 레이어 hidden-state를 Linear 레이어로 추가 처리한 값입니다. 이 출력은 컨텍스트 임베딩을 활용한 최근접 이웃 쿼리에 질문을 임베딩하는 데 사용됩니다.

  • hidden_states (tuple[torch.Tensor, ...], 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor, ...], 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 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) 단일 시퀀스의 경우(예: 질문):

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

DPR은 절대 위치 임베딩을 사용하는 모델이므로, 일반적으로 왼쪽이 아닌 오른쪽으로 입력을 패딩하는 것이 권장됩니다.

AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.

입력 ID란 무엇인가요?

예:

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

class transformers.DPRReader

< >

( config: DPRConfig )

매개변수

  • config (DPRConfig) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 연관된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.

스팬 예측을 출력하는 기본 DPRReader transformer.

이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.

이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.

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)

매개변수

  • input_ids (tuple[torch.LongTensor] 의 형태 (n_passages, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. 1) 질문, 2) 패스지 제목, 3) 패스지 본문으로 구성된 시퀀스 3중 구성이어야 합니다. 사전 학습과 일치시키기 위해 DPR input_ids 시퀀스는 [CLS]와 [SEP]를 사용하여 다음과 같은 형식으로 포맷되어야 합니다:

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

    DPR은 절대 위치 임베딩을 사용하는 모델이므로, 일반적으로 왼쪽이 아닌 오른쪽으로 입력을 패딩하는 것이 권장됩니다.

    DPRReaderTokenizer를 사용하여 인덱스를 가져올 수 있습니다. 자세한 내용은 해당 클래스의 문서를 참조하세요.

    입력 ID란 무엇인가요?

  • attention_mask (torch.Tensor 형상이 (batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요? [0, 1]:
    • 마스크되지 않은 토큰에 대해 1
    • 마스크된 토큰에 대해 0

    어텐션 마스크란 무엇인가요?

  • inputs_embeds (torch.Tensor, shape (n_passages, sequence_length, hidden_size), 선택 사항) — input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다 input_ids 인덱스를 관련 벡터로 변환하는 방식에 대한 더 세밀한 제어가 필요한 경우 유용합니다.
  • output_attentions (bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의 attentions 항목을 참조하세요.
  • output_hidden_states (bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중 hidden_states 항목을 참고하세요.
  • return_dict (bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.

반환값

DPRReaderOutput 또는 tuple(torch.Tensor)

torch.Tensor의 튜플 또는 DPRReaderOutput(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(DPRConfig)과 입력에 따라 다양한 요소를 포함합니다.

DPRReader의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.

이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신 Module 인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.

  • start_logits (torch.Tensor, shape (n_passages, sequence_length)) — 각 패스지의 스팬 시작 인덱스에 대한 로짓.

  • end_logits (torch.Tensor, shape (n_passages, sequence_length)) — 각 passage에 대해 스팬의 끝 인덱스에 대한 logits입니다.

  • relevance_logits (torch.Tensor, shape (n_passages, )) — DPRReader의 QA 분류기 출력으로, 질문을 답변하는 데 각 패시지가 다른 모든 패시지와 비교했을 때 얻는 점수에 해당합니다.

  • hidden_states (tuple[torch.Tensor, ...], 선택 사항, output_hidden_states=True가 전달되거나 config.output_hidden_states=True인 경우 반환됨) — torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은 (batch_size, sequence_length, hidden_size)입니다.

    각 레이어의 출력에서 모델의 Hidden-states와 선택적 초기 임베딩 출력을 포함합니다.

  • attentions (tuple[torch.Tensor, ...], 선택 사항, output_attentions=True가 전달되었거나 config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된 torch.Tensor의 튜플로, 모양은 (batch_size, num_heads, sequence_length, sequence_length)입니다.

    self-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention softmax 이후의 attention 가중치.

예:

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