Transformers documentation
UDOP
이 모델은 2022-12-05에 HF papers에 게시되었으며, 2024-03-04에 Hugging Face Transformers에 기여되었습니다.
UDOP
개요
UDOP 모델은 Zineng Tang, Ziyi Yang, Guoxin Wang, Yuwei Fang, Yang Liu, Chenguang Zhu, Michael Zeng, Cha Zhang, Mohit Bansal이 Unifying Vision, Text, and Layout for Universal Document Processing에서 제안했습니다. UDOP은 문서 이미지 분류, 문서 파싱, 문서 시각 질의응답과 같은 문서 AI 작업을 위해 T5 기반의 인코더-디코더 Transformer 아키텍처를 채택합니다.
해당 논문의 초록은 다음과 같습니다:
Universal Document Processing(UDOP)을 제안합니다. UDOP는 문서 이해 및 생성을 포함한 다양한 작업 형식과 함께 텍스트, 이미지, 레이아웃 모달리티를 통합하는 기반 Document AI 모델입니다. UDOP는 텍스트 콘텐츠와 문서 이미지 간의 공간적 상관관계를 활용하여 이미지, 텍스트, 레이아웃 모달리티를 하나의 균일한 표현으로 모델링합니다. 새로운 Vision-Text-Layout Transformer를 통해 UDOP는 사전 학습과 다중 도메인 하위 작업을 프롬프트 기반 시퀀스 생성 방식으로 통합합니다. UDOP는 혁신적인 자기 지도 학습 목표를 사용하여 대규모 무라벨 문서 코퍼스와 다양한 라벨링 데이터로 사전 학습됩니다. 또한 UDOP는 마스킹 이미지 재구성을 통해 텍스트와 레이아웃 모달리티로부터 문서 이미지를 생성하는 것을 학습합니다. 저자의 지식 범위 내에서, 이는 Document AI 분야에서 하나의 모델이 고품질 신경 문서 편집과 콘텐츠 커스터마이징을 동시에 달성한 최초의 사례입니다. 본 방법은 금융 보고서, 학술 논문, 웹사이트와 같은 다양한 데이터 도메인에서 문서 이해 및 QA를 포함한 9가지 Document AI 작업에서 최첨단 성능을 달성했습니다. UDOP는 Document Understanding Benchmark(DUE) 리더보드에서 1위를 기록합니다.*
UDOP architecture. Taken from the original paper. 사용 팁
- input_ids 외에도 UdopForConditionalGeneration은 입력 토큰의 바운딩 박스(즉, 2D 좌표)인
bbox입력을 기대합니다. 이는 Google의 Tesseract와 같은 외부 OCR 엔진을 사용하여 얻을 수 있습니다(Python wrapper가 있습니다). 각 바운딩 박스는 (x0, y0, x1, y1) 형식이어야 하며, 여기서 (x0, y0)는 바운딩 박스의 왼쪽 위 모서리 위치를, (x1, y1)는 오른쪽 아래 모서리 위치를 나타냅니다. 바운딩 박스를 0-1000 범위로 정규화해야 한다는 점에 유의하세요. 정규화를 위해 다음 함수를 사용할 수 있습니다:
def normalize_bbox(bbox, width, height):
return [
int(1000 * (bbox[0] / width)),
int(1000 * (bbox[1] / height)),
int(1000 * (bbox[2] / width)),
int(1000 * (bbox[3] / height)),
]여기서 width와 height는 해당 토큰이 나타나는 원본 문서의 너비와 높이에 해당합니다. 예를 들어 Python Image Library(PIL) 라이브러리를 사용하여 다음과 같이 얻을 수 있습니다:
from PIL import Image
# Document can be a png, jpg, etc. PDFs must be converted to images.
image = Image.open(name_of_your_document).convert("RGB")
width, height = image.sizeUdopProcessor를 사용하면 이미지와 텍스트를 모델에 맞게 준비할 수 있으며, 이 클래스가 이러한 모든 작업을 처리합니다. 기본적으로 이 클래스는 Tesseract 엔진을 사용하여 주어진 문서에서 단어 목록과 박스(좌표)를 추출합니다. 그 기능은 LayoutLMv3Processor와 동일하므로, 자체 OCR 엔진을 사용하려면 apply_ocr=False를, 기본 OCR 엔진을 사용하려면 apply_ocr=True를 전달할 수 있습니다. 가능한 모든 사용 사례에 대해서는 LayoutLMv2 사용 가이드를 참조하세요(UdopProcessor의 기능은 동일합니다).
- 선호하는 자체 OCR 엔진을 사용하는 경우, 라인 세그먼트를 지원하는 Azure의 Read API 사용을 권장합니다. 세그먼트 위치 임베딩을 사용하면 일반적으로 더 나은 성능을 얻을 수 있습니다.
- 추론 시에는 문서 이미지를 입력으로 받아 자기회귀적으로 텍스트를 생성하는
generate메서드를 사용하는 것이 권장됩니다. - The model has been pre-trained on both self-supervised and supervised objectives. One can use the various task prefixes (prompts) used during pre-training to test out the out-of-the-box capabilities. For instance, the model can be prompted with “Question answering. What is the date?”, as “Question answering.” is the task prefix used during pre-training for DocVQA. Refer to the paper (table 1) for all task prefixes.
- UdopEncoderModel도 fine-tune할 수 있습니다. 이는 UDOP의 encoder-only 부분으로, LayoutLMv3과 유사한 Transformer encoder로 볼 수 있습니다. 판별형(discriminative) 작업의 경우, 이 위에 linear classifier를 추가하고 라벨이 붙은 데이터셋으로 fine-tune하면 됩니다.
이 모델은 nielsr님이 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.
리소스
UDOP 시작을 돕기 위한 공식 Hugging Face 및 커뮤니티(🌎로 표시) 리소스 목록입니다. 여기에 리소스를 추가하고 싶으시면 Pull Request를 열어 주시면 검토하겠습니다! 기존 리소스와 중복되지 않고 새로운 것을 보여주는 것이 이상적입니다.
- UDOP에 관한 데모 노트북은 여기에서 찾을 수 있으며, 커스텀 데이터셋으로 UDOP를 파인튜닝하는 방법과 추론 과정을 보여줍니다. 🌎
- 문서 질의응답 작업 가이드
UdopConfig
클래스 transformers.UdopConfig
< source >( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truevocab_size: int = 33201d_model: int = 1024d_kv: int = 64d_ff: int = 4096num_layers: int = 24num_decoder_layers: int | None = Nonenum_heads: int = 16relative_attention_num_buckets: int = 32relative_attention_max_distance: int = 128relative_bias_args: list[dict] | None = Nonedropout_rate: float | int = 0.1layer_norm_epsilon: float = 1e-06initializer_factor: float = 1.0feed_forward_proj: str = 'relu'use_cache: bool = Truepad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1max_2d_position_embeddings: int = 1024image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 16num_channels: int = 3is_decoder: bool = Falseadd_cross_attention: bool = Falsetie_word_embeddings: bool = True )
매개변수
- is_encoder_decoder (
bool, 선택 사항, 기본값True) — 모델이 인코더/디코더로 사용되는지 여부를 나타냅니다. - vocab_size (
int, 선택 사항, 기본값33201) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - d_model (
int, 선택 사항, 기본값1024) — 인코더 레이어와 풀러 레이어의 크기입니다. - d_kv (
int, 선택 사항, 기본값64) — 각 어텐션 헤드당 key, query, value 투영의 크기입니다. 투영 레이어의inner_dim은num_heads * d_kv로 정의됩니다. - d_ff (
int, 선택 사항, 기본값4096) — MLP 표현의 차원입니다. - num_layers (
int, 선택 사항, 기본값24) — Transformer decoder의 hidden layer 수입니다. - num_decoder_layers (
int, 선택 사항) — Transformer decoder의 숨겨진 레이어 수입니다. 설정하지 않으면num_layers와 동일한 값을 사용합니다. - num_heads (
int, 선택 사항, 기본값16) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - relative_attention_num_buckets (
int, 선택 사항, 기본값 32) — 각 attention layer에 사용할 버킷의 수입니다. - relative_attention_max_distance (
int, 선택 사항, 기본값 128) — 버킷 분리를 위한 더 긴 시퀀스의 최대 거리입니다. - relative_bias_args (
list[dict], 선택 사항, 기본값[{'type' -- '1d'}, {'type': 'horizontal'}, {'type': 'vertical'}]): 상대적 bias 레이어의 인수를 포함하는 사전 목록입니다. - dropout_rate (
Union[float, int], 선택 사항, 기본값0.1) — 모든 dropout 레이어에 적용할 비율입니다. - layer_norm_epsilon (
float, 선택 사항, 기본값1e-06) — 레이어 정규화 레이어에서 사용되는 epsilon 값입니다. - initializer_factor (
float, 선택 사항, 기본값1.0) — 모든 가중치 행렬을 초기화하는 계수입니다(1로 유지해야 하며, 초기화 테스트를 위해 내부적으로 사용됨). - feed_forward_proj (
string, 선택 사항, 기본값"relu") — 사용할 feed forward layer의 유형입니다."relu"또는"gated-gelu"중 하나여야 합니다. Udopv1.1은"gated-gelu"feed forward projection을 사용합니다. 원래 Udop은"relu"를 사용합니다. - use_cache (
bool, 선택 사항, 기본값True) — 모델이 마지막 key/values attention을 반환할지 여부입니다(모든 모델에서 사용되지 않음).config.is_decoder=True인 경우 또는 모델이 decoder-only 생성 모델인 경우에만 관련이 있습니다. - pad_token_id (
int, 선택 사항, 기본값0) — 어휘에서 패딩에 사용되는 토큰 ID입니다. - eos_token_id (
Union[int, list[int]], 선택 사항, 기본값1) — 어휘에서 스트림 종료에 사용되는 토큰 id입니다. - max_2d_position_embeddings (
int, 선택, 기본값 1024) — 상대 위치 인코딩을 위한 최대 절대 위치 임베딩입니다. - image_size (
Union[int, list[int], tuple[int, int]], 선택 사항, 기본값224) — 각 이미지의 크기(해상도). - patch_size (
Union[int, list[int], tuple[int, int]], 선택 사항, 기본값16) — 각 패치의 크기(해상도)입니다. - num_channels (
int, 선택 사항, 기본값3) — 입력 채널의 수입니다. - is_decoder (
bool, 선택 사항, 기본값False) — 모델이 디코더로 사용되는지 여부입니다.False인 경우 모델은 인코더로 사용됩니다. - add_cross_attention (
bool, 선택 사항, 기본값False) — 모델에 cross-attention 레이어를 추가할지 여부. - tie_word_embeddings (
bool, 선택, 기본값True) — 모델의tied_weights_keys매핑에 따라 가중치 임베딩을 묶을지 여부.
이것은 UdopModel의 구성을 저장하기 위한 구성 클래스입니다. 지정된 인자에 따라 Udop 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 구성을 인스턴스화하면 microsoft/udop-large와 유사한 구성이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
UdopTokenizer
클래스 transformers.UdopTokenizer
< source >( vocab: str | list[tuple[str, float]] | None = Noneeos_token = '</s>'sep_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'sep_token_box = [1000, 1000, 1000, 1000]pad_token_box = [0, 0, 0, 0]pad_token_label = -100only_label_first_subword = Trueextra_special_tokens = None**kwargs )
매개변수
- eos_token (
str, 선택 사항, 기본값은"</s>") — 시퀀스 종료 토큰입니다. 특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 종료에 사용되는 토큰은 이 토큰이 아닙니다. 시퀀스 종료에 사용되는 토큰은 sep_token입니다.특수 토큰을 사용하여 시퀀스를 구성할 때, 시퀀스 끝에는 이 토큰이 사용되지 않습니다. 사용되는 토큰은
sep_token입니다. - sep_token (
str, 선택, 기본값"</s>") — 여러 시퀀스로 시퀀스를 구성할 때 사용되는 구분 토큰입니다. 예를 들어 시퀀스 분류의 두 시퀀스나 질의응답의 텍스트와 질문 등에 사용됩니다. 특수 토큰으로 구성된 시퀀스의 마지막 토큰으로도 사용됩니다. - unk_token (
str, 선택 사항, 기본값"<unk>") — 미지의 토큰입니다. 어휘에 없는 토큰은 ID로 변환할 수 없으므로, 대신 이 토큰으로 설정됩니다. - pad_token (
str, 선택 사항, 기본값"<pad>") — 패딩에 사용되는 토큰입니다. 예를 들어, 길이가 다른 시퀀스를 배치(batching)할 때 사용됩니다. - sep_token_box (
list[int], 선택 사항, 기본값[1000, 1000, 1000, 1000]) — [SEP] 특수 토큰에 사용할 바운딩 박스입니다. - pad_token_box (
list[int], 선택 사항, 기본값[0, 0, 0, 0]) — [PAD] 특수 토큰에 사용할 바운딩 박스입니다. - pad_token_label (
int, 선택 사항, 기본값 -100) — 패딩 토큰에 사용할 라벨입니다. 기본값은 -100이며, 이는 PyTorch의 CrossEntropyLoss의ignore_index입니다. - only_label_first_subword (
bool, 선택 사항, 기본값True) — 단어 라벨이 제공된 경우, 첫 번째 서브워드에만 라벨을 할당할지 여부. - extra_special_tokens (
list[str], 선택, 기본값["<s>NOTUSED", "</s>NOTUSED"]) — 토크나이저에서 사용하는 추가 특수 토큰입니다.
HuggingFace의 tokenizers 라이브러리를 기반으로 하는 “fast” UDOP 토크나이저를 구성합니다. LayoutXLMTokenizer와 T5Tokenizer에서 수정하여 적용했습니다. BPE를 기반으로 합니다.
이 토크나이저는 대부분의 주요 메서드를 포함하고 있는 TokenizersBackend를 상속합니다. 해당 메서드에 대한 자세한 내용은 이 상위 클래스를 참고하세요.
build_inputs_with_special_tokens
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
매개변수
- token_ids_0 (
list[int]) — 특별 토큰이 추가될 ID 목록입니다. - token_ids_1 (
list[int], 선택 사항) — 시퀀스 쌍을 위한 선택적 두 번째 ID 목록입니다.
반환값
list[int]
적절한 특수 토큰이 포함된 입력 ID 목록
시퀀스 분류 작업을 위해 시퀀스 하나 또는 시퀀스 쌍을 연결하고 특수 토큰을 추가하여 모델 입력을 구성합니다. XLM-RoBERTa 시퀀스는 다음과 같은 형식을 가집니다:
- 단일 시퀀스:
<s> X </s> - 시퀀스 쌍:
<s> A </s></s> B </s>
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
…
빠른 토크나이저의 경우, 데이터 콜레이터는 이미 포맷된 시퀀스에 대한 마스크를 생성하기 위해 already_has_special_tokens=True를 전달하여 이 함수를 호출합니다. 이 경우 all_special_ids에 대한 멤버십을 확인하여 마스크를 계산합니다.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
시퀀스-페어 분류 작업에 사용될 두 시퀀스로부터 마스크를 생성합니다. XLM-RoBERTa는 토큰 타입 ID를 사용하지 않으므로, 0의 목록이 반환됩니다.
토크나이저 어휘 파일을 저장합니다. TokenizersBackend의 경우, tokenizer.json 파일은 베이스 클래스에 의해 저장됩니다. tokenizer.json만 사용하므로 이 메서드는 빈 튜플을 반환합니다.
UdopProcessor
클래스 transformers.UdopProcessor
< source >( image_processortokenizer )
이미지 프로세서와 토크나이저를 단일 프로세서로 래핑하는 UdopProcessor를 생성합니다.
UdopProcessor는 LayoutLMv3ImageProcessor와 UdopTokenizer의 모든 기능을 제공합니다. 자세한 내용은 ~LayoutLMv3ImageProcessor와 ~UdopTokenizer를 참고하세요.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | list[list[str]] = None**kwargs: *<class 'transformers.models.udop.processing_udop.UdopProcessorKwargs'> ) → ~image_processing_base.BatchFeature
매개변수
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], 선택) — 전처리할 이미지입니다. 픽셀 값이 0에서 255 범위로 이루어진 단일 이미지 또는 배치 이미지를 기대합니다. 픽셀 값이 0에서 1 사이인 이미지를 전달하는 경우do_rescale=False로 설정하세요. - text (
Union[str, list[str], list[list[str]]], 선택 사항) — 인코딩할 시퀀스 또는 시퀀스 배치입니다. 각 시퀀스는 문자열 또는 문자열 목록(사전 토큰화된 문자열)일 수 있습니다. 사전 토큰화된 입력을 전달하는 경우, 배치 입력과의 혼동을 피하기 위해is_split_into_words=True를 설정하세요. - return_tensors (
str또는 TensorType, 선택 사항) — 설정된 경우, 특정 프레임워크의 텐서를 반환합니다. 허용되는 값은 다음과 같습니다:'pt': PyTorchtorch.Tensor객체를 반환합니다.'np': NumPynp.ndarray객체를 반환합니다.
- **kwargs (ProcessingKwargs, 선택) — 각 모달리티(텍스트, 이미지, 비디오, 오디오)에 대한 추가 처리 옵션입니다. 모델별 매개변수는 위에 나열되어 있으며, 지원되는 인수의 전체 목록은 TypedDict 클래스를 참조하세요.
반환값
~image_processing_base.BatchFeature
- data (
dict) — call 메서드가 반환하는 리스트/배열/텐서 딕셔너리(‘pixel_values’ 등). - tensor_type (
Union[None, str, TensorType], 선택 사항) — 초기화 시 PyTorch/Numpy 텐서에서 정수 목록을 변환하려면 여기에 tensor_type를 지정할 수 있습니다.
UdopModel
class transformers.UdopModel
< source >( config: UdopConfig )
매개변수
- config (UdopConfig) — 모든 모델 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델에 연결된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 Udop Model입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox: dict[str, typing.Any] | None = Nonepixel_values: typing.Optional[torch.Tensor] = Nonevisual_bbox: dict[str, typing.Any] | None = Nonedecoder_input_ids: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqModelOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.Tensor의 shape(batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- bbox (
torch.LongTensorshape({0}, 4), 선택 사항) — 각 입력 시퀀스 토큰의 바운딩 박스. 선택 범위[0, config.max_2d_position_embeddings-1]. 각 바운딩 박스는 (x0, y0, x1, y1) 형식의 정규화된 값이어야 하며, 여기서 (x0, y0)는 바운딩 박스의 왼쪽 위 모서리 위치를, (x1, y1)은 오른쪽 아래 모서리 위치를 나타냅니다.sequence_length = token_sequence_length + patch_sequence_length + 1이며, 여기서1은 [CLS] 토큰을 위한 것입니다.patch_sequence_length에 대한pixel_values를 참조하세요. - pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 LayoutLMv3ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 LayoutLMv3ImageProcessor.call()를 참조하세요 (UdopProcessor는 이미지 처리에 LayoutLMv3ImageProcessor를 사용합니다). - visual_bbox (
torch.LongTensor, shape(batch_size, patch_sequence_length, 4), 선택 사항) — 이미지에서 각 패치의 바운딩 박스입니다. 제공되지 않으면 모델에서 바운딩 박스가 생성됩니다. - decoder_input_ids (
torch.LongTensor, shape(batch_size, target_sequence_length), 선택 사항) — 어휘 사전에서 decoder 입력 시퀀스 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요. decoder input ID란 무엇인가요? T5는decoder_input_ids생성의 시작 토큰으로pad_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조). 사전 학습을 위해decoder_input_ids를 준비하는 방법에 대해서는 T5 Training을 확인하세요. - decoder_attention_mask (
torch.BoolTensor, shape(batch_size, target_sequence_length), 선택) — 기본 동작:decoder_input_ids의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 causal mask도 사용됩니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - encoder_outputs (
torch.Tensor, 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)로 구성된 Tuplelast_hidden_state의 shape은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - decoder_inputs_embeds (
torch.Tensor형상(batch_size, target_sequence_length, hidden_size), 선택 사항) — 선택적으로,decoder_input_ids대신에 임베딩된 표현을 직접 전달할 수 있습니다.past_key_values이 사용되면, 선택적으로 마지막decoder_inputs_embeds만 입력하면 됩니다(참고:past_key_values). 이는decoder_input_ids인덱스를 관련 벡터로 변환하는 방식을 모델의 내부 임베딩 조회 행렬보다 더 세밀하게 제어하려는 경우에 유용합니다.decoder_input_ids와decoder_inputs_embeds가 모두 설정되지 않은 경우,decoder_inputs_embeds는inputs_embeds의 값을 가져옵니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조).
반환값
Seq2SeqModelOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqModelOutput입니다. return_dict=False가 전달되거나 config.return_dict=False인 경우, 구성(UdopConfig)과 입력에 따라 다양한 요소를 포함합니다.
UdopModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 decoder 마지막 레이어 출력의 hidden-state 시퀀스입니다.past_key_values가 사용되면,(batch_size, 1, hidden_size)형태의 시퀀스의 마지막 hidden-state만 출력됩니다.past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_hidden_states (
tuple(torch.Tensor), 선택 사항,output_hidden_states=True가 전달되거나config.output_hidden_states=True인 경우 반환됨) —torch.Tensor의 튜플(모델에 임베딩 레이어가 있는 경우 임베딩의 출력에 대한 것 1개 + 각 레이어의 출력에 대한 것 1개)로, 모양은(batch_size, sequence_length, hidden_size)입니다.각 레이어 출력의 decoder hidden-states와 선택적인 초기 embedding 출력
decoder_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 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_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와 선택적인 초기 임베딩 출력.
encoder_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 AutoProcessor, AutoModel
>>> from datasets import load_dataset
>>> import torch
>>> # load model and processor
>>> # in this case, we already have performed OCR ourselves
>>> # so we initialize the processor with `apply_ocr=False`
>>> processor = AutoProcessor.from_pretrained("microsoft/udop-large", apply_ocr=False)
>>> model = AutoModel.from_pretrained("microsoft/udop-large")
>>> # load an example image, along with the words and coordinates
>>> # which were extracted using an OCR engine
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> inputs = processor(image, words, boxes=boxes, return_tensors="pt")
>>> decoder_input_ids = torch.tensor([[model.config.decoder_start_token_id]])
>>> # forward pass
>>> outputs = model(**inputs, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 1, 1024]UdopForConditionalGeneration
클래스 transformers.UdopForConditionalGeneration
< source >( config: UdopConfig )
매개변수
- config (UdopConfig) — 모든 모델 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델에 연결된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
UDOP 인코더-디코더 Transformer로, 상단에 언어 모델링 헤드가 있어 문서 이미지와 선택적 프롬프트를 입력으로 받아 텍스트를 생성할 수 있습니다.
이 클래스는 T5ForConditionalGeneration을 기반으로 하며, 이미지와 레이아웃(2D) 데이터를 처리하도록 확장되었습니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonebbox: dict[str, typing.Any] | None = Nonepixel_values: typing.Optional[torch.Tensor] = Nonevisual_bbox: dict[str, typing.Any] | None = Nonedecoder_input_ids: typing.Optional[torch.Tensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.Tensor의 shape(batch_size, sequence_length), , 선택 사항) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. 기본적으로 패딩은 무시됩니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
- attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- bbox (
torch.LongTensorshape({0}, 4), 선택 사항) — 각 입력 시퀀스 토큰의 바운딩 박스. 선택 범위[0, config.max_2d_position_embeddings-1]. 각 바운딩 박스는 (x0, y0, x1, y1) 형식의 정규화된 값이어야 하며, 여기서 (x0, y0)는 바운딩 박스의 왼쪽 위 모서리 위치를, (x1, y1)은 오른쪽 아래 모서리 위치를 나타냅니다.sequence_length = token_sequence_length + patch_sequence_length + 1이며, 여기서1은 [CLS] 토큰을 위한 것입니다.patch_sequence_length에 대한pixel_values를 참조하세요. - pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 LayoutLMv3ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 LayoutLMv3ImageProcessor.call()를 참조하세요 (UdopProcessor는 이미지 처리에 LayoutLMv3ImageProcessor를 사용합니다). - visual_bbox (
torch.LongTensor, shape(batch_size, patch_sequence_length, 4), 선택 사항) — 이미지에서 각 패치의 바운딩 박스입니다. 제공되지 않으면 모델에서 바운딩 박스가 생성됩니다. - decoder_input_ids (
torch.LongTensor, shape(batch_size, target_sequence_length), 선택 사항) — 어휘 사전에서 decoder 입력 시퀀스 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요. decoder input ID란 무엇인가요? T5는decoder_input_ids생성의 시작 토큰으로pad_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조). 사전 학습을 위해decoder_input_ids를 준비하는 방법에 대해서는 T5 Training을 확인하세요. - decoder_attention_mask (
torch.BoolTensor, shape(batch_size, target_sequence_length), 선택) — 기본 동작:decoder_input_ids의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 causal mask도 사용됩니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다. - encoder_outputs (
torch.Tensor, 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)로 구성된 Tuplelast_hidden_state의 shape은(batch_size, sequence_length, hidden_size), 선택 사항)이며, 인코더의 마지막 레이어 출력에서 생성된 hidden-states 시퀀스입니다. 디코더의 cross-attention에 사용됩니다. - past_key_values (
~cache_utils.Cache, 선택 사항) — 순차적 디코딩을 가속화할 수 있는 사전 계산된 hidden-states(self-attention 블록과 cross-attention 블록의 key 및 value). 일반적으로 이는past_key_values디코딩의 이전 단계에서 모델이 반환한use_cache=True또는config.use_cache=True.입력으로 Cache 인스턴스만 허용되며, kv cache 가이드를 참고하세요.
past_key_values가 전달되지 않으면 기본적으로 DynamicCache가 초기화됩니다.모델은 입력으로 제공된 것과 동일한 캐시 형식을 출력합니다.
past_key_values를 사용하는 경우, 이 모델에 과거 키 값 상태가 제공되지 않은input_ids만 입력해야 하며, 이때의 shape은(batch_size, unprocessed_length)입니다. shape이(batch_size, sequence_length)인 전체input_ids를 입력하지 않습니다. - decoder_inputs_embeds (
torch.Tensor형상(batch_size, target_sequence_length, hidden_size), 선택 사항) — 선택적으로,decoder_input_ids대신에 임베딩된 표현을 직접 전달할 수 있습니다.past_key_values이 사용되면, 선택적으로 마지막decoder_inputs_embeds만 입력하면 됩니다(참고:past_key_values). 이는decoder_input_ids인덱스를 관련 벡터로 변환하는 방식을 모델의 내부 임베딩 조회 행렬보다 더 세밀하게 제어하려는 경우에 유용합니다.decoder_input_ids와decoder_inputs_embeds가 모두 설정되지 않은 경우,decoder_inputs_embeds는inputs_embeds의 값을 가져옵니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조). - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 언어 모델링 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size - 1]범위에 있어야 합니다.-100으로 설정된 모든 라벨은 무시(마스크 처리)되며, 손실은[0, ..., config.vocab_size]범위의 라벨에 대해서만 계산됩니다.
반환값
Seq2SeqLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqLMOutput입니다. 구성(UdopConfig)과 입력에 따라 다양한 요소를 포함하며, return_dict=False가 전달되었거나 config.return_dict=False인 경우에도 동일합니다.
UdopForConditionalGeneration의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
loss (
torch.Tensor, shape(1,), 선택 사항,labels이 제공될 때 반환됨) — 언어 모델링 손실.logits (
torch.Tensor, shape(batch_size, sequence_length, config.vocab_size)) — 언어 모델링 헤드에서 생성된 예측 점수(SoftMax 적용 전 각 어휘 토큰에 대한 점수).past_key_values (
EncoderDecoderCache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — EncoderDecoderCache 인스턴스입니다. 자세한 내용은 kv 캐시 가이드를 참고하세요.순차적 디코딩을 가속화하는 데 사용할 수 있는 사전 계산된 hidden-states(셀프 어텐션 블록과 크로스 어텐션 블록의 key 및 value)를 포함합니다(입력
past_key_values참조).decoder_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와 초기 임베딩 출력을 더한 값.
decoder_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 이후의 decoder의 attention 가중치입니다.
cross_attentions (
tuple(torch.Tensor), 선택 사항,output_attentions=True가 전달되었거나config.output_attentions=True인 경우 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 모양은(batch_size, num_heads, sequence_length, sequence_length)입니다.decoder의 cross-attention 레이어에서 attention softmax를 적용한 후, cross-attention 헤드에서 가중 평균을 계산하는 데 사용되는 attention 가중치입니다.
encoder_last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택 사항) — 모델 인코더의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.encoder_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와 초기 임베딩 출력을 더한 값.
encoder_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 AutoProcessor, UdopForConditionalGeneration
>>> from datasets import load_dataset
>>> # load model and processor
>>> # in this case, we already have performed OCR ourselves
>>> # so we initialize the processor with `apply_ocr=False`
>>> processor = AutoProcessor.from_pretrained("microsoft/udop-large", apply_ocr=False)
>>> model = UdopForConditionalGeneration.from_pretrained("microsoft/udop-large")
>>> # load an example image, along with the words and coordinates
>>> # which were extracted using an OCR engine
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> # one can use the various task prefixes (prompts) used during pre-training
>>> # e.g. the task prefix for DocVQA is "Question answering. "
>>> question = "Question answering. What is the date on the form?"
>>> encoding = processor(image, question, text_pair=words, boxes=boxes, return_tensors="pt")
>>> # autoregressive generation
>>> predicted_ids = model.generate(**encoding)
>>> print(processor.batch_decode(predicted_ids, skip_special_tokens=True)[0])
9/30/92UdopEncoderModel
클래스 transformers.UdopEncoderModel
< source >( config: UdopConfig )
매개변수
- config (UdopConfig) — 모든 모델 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델에 연결된 가중치를 로드하지 않으며, 구성 정보만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 상태에서 원시 hidden-states를 출력하는 기본 Udop Model입니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Nonebbox: dict[str, typing.Any] | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepixel_values: typing.Optional[torch.Tensor] = Nonevisual_bbox: dict[str, typing.Any] | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithAttentionMask or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상(batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. T5는 상대 위치 임베딩을 사용하는 모델이므로, 입력을 오른쪽과 왼쪽 모두에 패딩할 수 있습니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
input_ids를 사전학습을 위해 준비하는 방법에 대해 자세히 알아보려면 T5 Training을 참고하세요. - bbox (
torch.LongTensorshape({0}, 4), 선택 사항) — 각 입력 시퀀스 토큰의 바운딩 박스. 선택 범위[0, config.max_2d_position_embeddings-1]. 각 바운딩 박스는 (x0, y0, x1, y1) 형식의 정규화된 값이어야 하며, 여기서 (x0, y0)는 바운딩 박스의 왼쪽 위 모서리 위치를, (x1, y1)은 오른쪽 아래 모서리 위치를 나타냅니다.sequence_length = token_sequence_length + patch_sequence_length + 1이며, 여기서1은 [CLS] 토큰을 위한 것입니다.patch_sequence_length에 대한pixel_values를 참조하세요. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- pixel_values (
torch.Tensor, shape(batch_size, num_channels, image_size, image_size), 선택 사항) — 입력 이미지에 해당하는 텐서입니다. 픽셀 값은 LayoutLMv3ImageProcessor를 사용하여 얻을 수 있습니다. 자세한 내용은 LayoutLMv3ImageProcessor.call()를 참조하세요 (UdopProcessor는 이미지 처리에 LayoutLMv3ImageProcessor를 사용합니다). - visual_bbox (
torch.LongTensor, shape(batch_size, patch_sequence_length, 4), 선택 사항) — 이미지에서 각 패치의 바운딩 박스입니다. 제공되지 않으면 모델에서 바운딩 박스가 생성됩니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다input_ids인덱스를 관련 벡터로 변환하는 방식에 대해 더 세밀한 제어가 필요한 경우에 유용합니다.
반환값
BaseModelOutputWithAttentionMask 또는 tuple(torch.Tensor)
BaseModelOutputWithAttentionMask 또는 torch.Tensor의 튜플(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(UdopConfig)과 입력에 따라 다양한 요소를 포함합니다.
UdopEncoderModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.past_key_values를 사용하는 경우, shape(batch_size, 1, hidden_size)인 시퀀스의 마지막 hidden-state만 출력됩니다.attention_mask (
torch.Tensor, shape(batch_size, sequence_length), 선택 사항) — 모델의 forward pass에서 padding 토큰 인덱스에 대한 attention을 수행하지 않도록 하는 데 사용되는 attention mask.[0, 1]에서 선택된 mask 값:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
past_key_values (
Cache, 선택 사항,use_cache=True가 전달되었거나config.use_cache=True인 경우 반환됨) — Cache 인스턴스입니다. 자세한 내용은 kv cache 가이드를 참고하세요.config.is_encoder_decoder=True인 경우를 포함하여, 순차적 디코딩을 가속화하는 데 사용할 수 있는(입력past_key_values참조) 사전 계산된 hidden-states(self-attention 블록의 key와 value, 선택적으로 cross-attention 블록의 key와 value)를 포함합니다.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)입니다. attention softmax 이후의 attention 가중치로, self-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.cross_attentions (
tuple(torch.Tensor), 선택,output_attentions=True가 전달되거나config.add_cross_attention=True또는config.output_attentions=True일 때 반환됨) — 각 레이어마다 하나씩 포함된torch.Tensor의 튜플로, 형태는(batch_size, num_heads, sequence_length, sequence_length)입니다. attention softmax를 거친 후의 decoder cross-attention 레이어의 attention 가중치로, cross-attention 헤드에서 가중 평균을 계산하는 데 사용됩니다.
예:
>>> from transformers import AutoProcessor, UdopEncoderModel
>>> from huggingface_hub import hf_hub_download
>>> from datasets import load_dataset
>>> # load model and processor
>>> # in this case, we already have performed OCR ourselves
>>> # so we initialize the processor with `apply_ocr=False`
>>> processor = AutoProcessor.from_pretrained("microsoft/udop-large", apply_ocr=False)
>>> model = UdopEncoderModel.from_pretrained("microsoft/udop-large")
>>> # load an example image, along with the words and coordinates
>>> # which were extracted using an OCR engine
>>> dataset = load_dataset("nielsr/funsd-layoutlmv3", split="train")
>>> example = dataset[0]
>>> image = example["image"]
>>> words = example["tokens"]
>>> boxes = example["bboxes"]
>>> encoding = processor(image, words, boxes=boxes, return_tensors="pt")
>>> outputs = model(**encoding)
>>> last_hidden_states = outputs.last_hidden_state