Transformers documentation
LongT5
이 모델은 2021-12-15에 HF papers에 게시되었으며, 2022-06-13에 Hugging Face Transformers에 기여되었습니다.
LongT5
개요
LongT5 모델은 Mandy Guo, Joshua Ainslie, David Uthus, Santiago Ontanon, Jianmo Ni, Yun-Hsuan Sung, Yinfei Yang이 LongT5: Efficient Text-To-Text Transformer for Long Sequences에서 제안했습니다. 이는 텍스트-투-텍스트(text-to-text) 노이즈 제거 생성 설정에서 사전 학습된 인코더-디코더 transformer입니다. LongT5 모델은 T5 모델의 확장으로, 두 가지 다른 효율적인 attention 메커니즘 중 하나를 사용할 수 있도록 합니다. (1) Local attention 또는 (2) Transient-Global attention입니다.
해당 논문의 초록은 다음과 같습니다:
최근 연구는 (1) 입력 길이를 늘리거나 (2) 모델 크기를 늘리면 Transformer 기반 신경 모델의 성능이 향상될 수 있음을 보여 주었습니다. 본 논문에서는 LongT5라는 새로운 모델을 제시하며, 입력 길이와 모델 크기를 동시에 확장하는 효과를 탐구합니다. 구체적으로, 긴 입력을 처리하는 Transformer(ETC)의 attention 아이디어를 통합하고, 요약 사전 학습(PEGASUS)의 사전 학습 전략을 확장 가능한 T5 아키텍처에 적용했습니다. 그 결과, ETC의 local/global attention 메커니즘을 모방하되 추가적인 side-input이 필요하지 않은 새로운 attention 메커니즘인 {\em Transient Global}(TGlobal)을 제안했습니다. 이를 통해 여러 요약 작업에서 최첨단(state-of-the-art) 결과를 달성했으며, 질의응답 작업에서는 기존 T5 모델보다 우수한 성능을 보였습니다.
이 모델은 stancld님이 기여했습니다. 원본 코드는 여기에서 찾을 수 있습니다.
사용 팁
- LongT5ForConditionalGeneration은 T5ForConditionalGeneration의 확장으로, 기존의 인코더 self-attention 레이어를 효율적인 local attention 또는 transient-global(tglobal) attention으로 대체합니다.
- T5 모델과 달리 LongT5는 작업 접두사를 사용하지 않습니다. 또한 PegasusForConditionalGeneration의 사전 학습에서 영감을 받은 다른 사전 학습 목표를 사용합니다.
- LongT5 모델은 일반적으로 사용되는 512 토큰을 초과하는 입력 시퀀스를 가진 장거리 sequence-to-sequence 작업에서 효율적이고 매우 잘 작동하도록 설계되었습니다. 최대 16,384 토큰 길이의 입력 시퀀스를 처리할 수 있습니다.
- Local Attention의 경우, 희소 슬라이딩 윈도우 로컬 어텐션 연산은 주어진 토큰이 왼쪽과 오른쪽의
r개 토큰에만 어텐션을 수행하도록 허용합니다(기본값은r=127). Local Attention은 모델에 새로운 매개변수를 추가하지 않습니다. 이 메커니즘의 복잡도는 입력 시퀀스 길이l에 대해 선형이며,O(l*r)입니다. - Transient Global Attention은 Local Attention의 확장입니다. 이 방식은 각 입력 토큰이 해당 레이어의 모든 다른 토큰과 상호작용할 수 있도록 합니다. 이를 위해 입력 시퀀스를 고정 길이
k의 블록(기본값k=16)으로 분할합니다. 그런 다음, 해당 블록 내 모든 토큰의 임베딩을 합산하고 정규화하여 블록의 글로벌 토큰을 생성합니다. 이를 통해 어텐션은 Local attention과 유사하게 인접한 토큰에 주목하는 동시에, 표준 글로벌 어텐션의 경우처럼 모든 글로벌 토큰에도 주목할 수 있습니다(transient는 글로벌 토큰이 각 어텐션 연산 내에서 동적으로 구성됨을 나타냅니다). 그 결과, TGlobal 어텐션은 몇 가지 새로운 매개변수, 즉 글로벌 상대 위치 편향과 글로벌 토큰 임베딩을 위한 레이어 정규화를 도입합니다. 이 메커니즘의 복잡도는O(l(r + l/k))입니다. - pubmed dataset에서 fine-tuned된 LongT5 모델을 평가하는 방법을 보여주는 예시는 다음과 같습니다.
import evaluate
from datasets import load_dataset
from transformers import AutoTokenizer, LongT5ForConditionalGeneration
dataset = load_dataset("ccdv/pubmed-summarization", "document", split="validation")
model = (
LongT5ForConditionalGeneration.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps", device_map="auto")
.half()
)
tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
def generate_answers(batch):
inputs_dict = tokenizer(
batch["article"], max_length=16384, padding="max_length", truncation=True, return_tensors="pt"
)
input_ids = inputs_dict.input_ids.to(model.device)
attention_mask = inputs_dict.attention_mask.to(model.device)
output_ids = model.generate(input_ids, attention_mask=attention_mask, max_length=512, num_beams=2)
batch["predicted_abstract"] = tokenizer.batch_decode(output_ids, skip_special_tokens=True)
return batch
result = dataset.map(generate_answers, batched=True, batch_size=2)
rouge = evaluate.load("rouge")
rouge.compute(predictions=result["predicted_abstract"], references=result["abstract"])리소스
LongT5Config
클래스 transformers.LongT5Config
< 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 = 32128d_model: int = 512d_kv: int = 64d_ff: int = 2048num_layers: int = 6num_decoder_layers: int | None = Nonenum_heads: int = 8local_radius: int = 127global_block_size: int = 16relative_attention_num_buckets: int = 32relative_attention_max_distance: int = 128dropout_rate: float | int = 0.1layer_norm_epsilon: float = 1e-06initializer_factor: float = 1.0feed_forward_proj: str = 'relu'encoder_attention_type: str = 'local'use_cache: bool = Truepad_token_id: int | None = 0eos_token_id: int | list[int] | None = 1bos_token_id: int | None = Noneis_decoder: bool = Falsetie_word_embeddings: bool = True )
매개변수
- is_encoder_decoder (
bool, 선택 사항, 기본값True) — 모델이 인코더/디코더로 사용되는지 여부를 나타냅니다. - vocab_size (
int, 선택 사항, 기본값32128) — 모델의 어휘 크기입니다.input_ids로 표현할 수 있는 서로 다른 토큰의 수를 정의합니다. - d_model (
int, 선택 사항, 기본값512) — 인코더 레이어와 풀러 레이어의 크기입니다. - d_kv (
int, 선택 사항, 기본값64) — 각 어텐션 헤드당 key, query, value 투영의 크기입니다. 투영 레이어의inner_dim은num_heads * d_kv로 정의됩니다. - d_ff (
int, 선택 사항, 기본값 2048) — 각LongT5Block의 중간 feed forward 레이어 크기. - num_layers (
int, 선택 사항, 기본값6) — Transformer decoder의 hidden layer 수입니다. - num_decoder_layers (
int, 선택 사항) — Transformer decoder의 숨겨진 레이어 수입니다. 설정하지 않으면num_layers와 동일한 값을 사용합니다. - num_heads (
int, 선택 사항, 기본값8) — Transformer decoder의 각 attention layer에 사용할 attention head의 수입니다. - local_radius (
int, 선택 사항, 기본값 127) — 로컬 어텐션 메커니즘에서 각 토큰이 로컬 자기 어텐션을 수행할 때 왼쪽/오른쪽으로 고려할 토큰 수입니다. - global_block_size (
int, 선택 사항, 기본값 16) — 글로벌 토큰 표현을 위해 입력 시퀀스가 분할되는 블록의 길이.encoder_attention_type = "transient-global"에서만 사용됩니다. - relative_attention_num_buckets (
int, 선택 사항, 기본값 32) — 각 attention layer에 사용할 버킷의 수입니다. - relative_attention_max_distance (
int, 선택 사항, 기본값 128) — 버킷 분리를 위한 더 긴 시퀀스의 최대 거리입니다. - 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 레이어의 유형입니다."relu"또는"gated-gelu"중 하나여야 합니다. LongT5v1.1은"gated-gelu"feed forward projection을 사용합니다. 원래 LongT5 구현은"gated-gelu"를 사용합니다. - encoder_attention_type (
string, 선택 사항, 기본값"local") — 사용할 인코더 어텐션의 유형입니다. LongT5 구현에서 지원하는"local"또는"transient-global"중 하나여야 합니다. - 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입니다. - bos_token_id (
int, 선택 사항) — 어휘에서 스트림 시작에 사용되는 토큰 ID입니다. - is_decoder (
bool, 선택 사항, 기본값False) — 모델이 디코더로 사용되는지 여부입니다.False인 경우 모델은 인코더로 사용됩니다. - tie_word_embeddings (
bool, 선택, 기본값True) — 모델의tied_weights_keys매핑에 따라 가중치 임베딩을 묶을지 여부.
이것은 LongT5Model의 설정을 저장하기 위한 설정 클래스입니다. 지정된 인자에 따라 Longt5 모델을 인스턴스화하여 모델 아키텍처를 정의하는 데 사용됩니다. 기본값으로 설정을 인스턴스화하면 google/long-t5-local-base와 유사한 설정이 생성됩니다.
Configuration 객체는 PreTrainedConfig를 상속하며 모델 출력을 제어하는 데 사용할 수 있습니다. 자세한 내용은 PreTrainedConfig의 문서를 참고하세요.
LongT5Model
클래스 transformers.LongT5Model
< source >( config: LongT5Config )
매개변수
- config (LongT5Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 상태의 Longt5 모델로, 원시 hidden-states를 출력합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqModelOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상(batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. LongT5는 상대 위치 임베딩을 사용하는 모델이므로, 입력을 오른쪽과 왼쪽 모두에 패딩할 수 있습니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
input_ids를 사전학습을 위해 준비하는 방법에 대해 자세히 알아보려면 LONGT5 Training을 참고하세요. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensor형상이(batch_size, target_sequence_length), 선택 사항) — 어휘에서 디코더 입력 시퀀스 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. 디코더 입력 ID란 무엇인가요? LONGT5는 decoder_input_ids 생성의 시작 토큰으로 pad_token_id를 사용합니다. past_key_values를 사용하는 경우, 선택적으로 마지막 decoder_input_ids만 입력하면 됩니다(past_key_values 참조). 사전 학습을 위해 decoder_input_ids를 준비하는 방법에 대해서는 LONGT5 Training을 참조하세요.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
LONGT5는
decoder_input_ids생성의 시작 토큰으로pad_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조).decoder_input_ids를 사전 학습을 위해 준비하는 방법에 대해 자세히 알아보려면 LONGT5 Training을 참고하세요. - decoder_attention_mask (
torch.BoolTensor, shape(batch_size, target_sequence_length), 선택) — 기본 동작:decoder_input_ids의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 causal mask도 사용됩니다. - encoder_outputs (
tuple[tuple[torch.Tensor]], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 Tuple입니다.last_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를 입력하지 않습니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다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참조). - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
Seq2SeqModelOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqModelOutput(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(LongT5Config)과 입력에 따라 다양한 요소를 포함합니다.
LongT5Model의 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 AutoTokenizer, LongT5Model
>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5Model.from_pretrained("google/long-t5-local-base")
>>> # Let's try a very long encoder input.
>>> input_ids = tokenizer(
... 100 * "Studies have been shown that owning a dog is good for you", return_tensors="pt"
... ).input_ids # Batch size 1
>>> decoder_input_ids = tokenizer("Studies show that", return_tensors="pt").input_ids # Batch size 1
>>> # forward pass
>>> outputs = model(input_ids=input_ids, decoder_input_ids=decoder_input_ids)
>>> last_hidden_states = outputs.last_hidden_stateLongT5ForConditionalGeneration
클래스 transformers.LongT5ForConditionalGeneration
< source >( config: LongT5Config )
매개변수
- config (LongT5Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
language modeling 헤드가 위에 있는 LONGT5 모델.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor형상(batch_size, sequence_length)) — 어휘 사전에서 입력 시퀀스 토큰의 인덱스입니다. LongT5는 상대 위치 임베딩을 사용하는 모델이므로, 입력을 오른쪽과 왼쪽 모두에 패딩할 수 있습니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
input_ids를 사전학습을 위해 준비하는 방법에 대해 자세히 알아보려면 LONGT5 Training을 참고하세요. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- decoder_input_ids (
torch.LongTensor형상이(batch_size, target_sequence_length), 선택 사항) — 어휘에서 디코더 입력 시퀀스 토큰의 인덱스입니다. 인덱스는 AutoTokenizer를 사용하여 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()을 참조하세요. 디코더 입력 ID란 무엇인가요? LONGT5는 decoder_input_ids 생성의 시작 토큰으로 pad_token_id를 사용합니다. past_key_values를 사용하는 경우, 선택적으로 마지막 decoder_input_ids만 입력하면 됩니다(past_key_values 참조). 사전 학습을 위해 decoder_input_ids를 준비하는 방법에 대해서는 LONGT5 Training을 참조하세요.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
LONGT5는
decoder_input_ids생성의 시작 토큰으로pad_token_id를 사용합니다.past_key_values를 사용하는 경우, 선택적으로 마지막decoder_input_ids만 입력하면 됩니다(past_key_values참조).decoder_input_ids를 사전 학습을 위해 준비하는 방법에 대해 자세히 알아보려면 LONGT5 Training을 참고하세요. - decoder_attention_mask (
torch.BoolTensor, shape(batch_size, target_sequence_length), 선택) — 기본 동작:decoder_input_ids의 pad 토큰을 무시하는 텐서를 생성합니다. 기본적으로 causal mask도 사용됩니다. - encoder_outputs (
tuple[tuple[torch.Tensor]], 선택 사항) — (last_hidden_state, 선택 사항:hidden_states, 선택 사항:attentions)으로 구성된 Tuple입니다.last_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를 입력하지 않습니다. - inputs_embeds (
torch.Tensor, shape(batch_size, sequence_length, hidden_size), 선택) —input_ids를 전달하는 대신 임베딩 표현을 직접 전달할 수 있습니다. 이는 모델 내부의 임베딩 조회 행렬보다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의 값을 가져옵니다. - labels (
torch.LongTensor, shape(batch_size,), 선택 사항) — 시퀀스 분류/회귀 손실을 계산하는 데 사용되는 라벨입니다. 인덱스는[-100, 0, ..., config.vocab_size - 1]범위에 있어야 합니다.-100으로 설정된 모든 라벨은 무시(마스크 처리)되며, 손실은[0, ..., config.vocab_size]범위의 라벨에 대해서만 계산됩니다. - use_cache (
bool, 선택 사항) —True로 설정하면past_key_values키 값 상태가 반환되며, 디코딩 속도를 높이는 데 사용할 수 있습니다(past_key_values참조). - output_attentions (
bool, 선택 사항) — 모든 attention 레이어의 attentions 텐서를 반환할지 여부. 자세한 내용은 반환 텐서 섹션의attentions항목을 참조하세요. - output_hidden_states (
bool, 선택 사항) — 모든 레이어의 hidden states를 반환할지 여부입니다. 자세한 내용은 반환되는 텐서 중hidden_states항목을 참고하세요. - return_dict (
bool, 선택) — 일반 튜플 대신 ModelOutput를 반환할지 여부.
반환값
Seq2SeqLMOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 Seq2SeqLMOutput(return_dict=False가 전달되었거나 config.return_dict=False인 경우)로, 구성(LongT5Config)과 입력에 따라 다양한 요소를 포함합니다.
LongT5ForConditionalGeneration의 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 AutoTokenizer, LongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("Stancld/longt5-tglobal-large-16384-pubmed-3k_steps")
>>> model = LongT5ForConditionalGeneration.from_pretrained(
... "Stancld/longt5-tglobal-large-16384-pubmed-3k_steps"
... )
>>> # Let's try a very long input.
>>> inputs = tokenizer(100 * "studies have shown that owning a dog is good for you ", return_tensors="pt")
>>> input_ids = inputs.input_ids
>>> outputs = model.generate(input_ids)
>>> print(tokenizer.decode(outputs[0], skip_special_tokens=True))
abstractthe aim of this article is to provide an overview of the literature on the role of dogLongT5EncoderModel
class transformers.LongT5EncoderModel
< source >( config: LongT5Config )
매개변수
- config (LongT5Config) — 모델의 모든 매개변수를 포함하는 모델 구성 클래스입니다. 구성 파일로 초기화하는 것은 모델과 관련된 가중치를 로드하지 않으며, 구성만 로드합니다. 모델 가중치를 로드하려면 from_pretrained() 메서드를 확인하세요.
특정 헤드가 위에 없는 상태의 Longt5 모델로, 원시 hidden-states를 출력합니다.
이 모델은 PreTrainedModel에서 상속됩니다. 라이브러리가 모든 모델에 대해 구현하는 일반적 메서드(다운로드 또는 저장, 입력 임베딩 크기 조정, 헤드 프루닝 등)에 대한 세부 사항은 상위 클래스 문서를 확인하세요.
이 모델은 또한 PyTorch torch.nn.Module의 하위 클래스입니다. 일반적인 PyTorch Module처럼 사용하며, 일반적인 사용법 및 동작과 관련된 모든 사항은 PyTorch 문서를 참조하세요.
forward
< source >( input_ids: typing.Optional[torch.LongTensor] = 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 ) → BaseModelOutput or tuple(torch.Tensor)
매개변수
- input_ids (
torch.LongTensor다음 shape를 가진(batch_size, sequence_length)) — 어휘(input vocabulary)에서 입력 시퀀스 토큰의 인덱스입니다. LongT5는 상대 위치 임베딩(relative position embeddings)을 사용하는 모델이므로, 입력을 오른쪽과 왼쪽 모두에 패딩(padding)할 수 있습니다.AutoTokenizer를 사용하여 인덱스를 얻을 수 있습니다. 자세한 내용은 PreTrainedTokenizer.encode() 및 PreTrainedTokenizer.call()를 참조하세요.
input_ids를 사전학습을 위해 준비하는 방법에 대해 자세히 알아보려면 LONGT5 Training을 참고하세요. - attention_mask (
torch.Tensor형상이(batch_size, sequence_length), 선택 사항) — 패딩 토큰 인덱스에 대한 attention을 수행하지 않도록 방지하는 마스크. [0, 1]에서 선택된 마스크 값: 마스크되지 않은 토큰은 1, 마스크된 토큰은 0. attention mask란 무엇인가요?[0, 1]:- 마스크되지 않은 토큰에 대해 1
- 마스크된 토큰에 대해 0
- 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를 반환할지 여부.
반환값
BaseModelOutput 또는 tuple(torch.Tensor)
torch.Tensor의 튜플 또는 BaseModelOutput (return_dict=False가 전달되거나 config.return_dict=False인 경우)로, 구성(LongT5Config)과 입력에 따라 다양한 요소를 포함합니다.
LongT5EncoderModel의 forward 메서드는 __call__ 특수 메서드를 오버라이드합니다.
이 함수 내에서 forward pass의 레시피를 정의해야 하지만, 이후에는 이 함수 대신
Module인스턴스를 호출해야 합니다. 전자는 전처리 및 후처리 단계를 실행하는 것을 처리하는 반면, 후자는 이를 조용히 무시하기 때문입니다.
last_hidden_state (
torch.Tensor, shape(batch_size, sequence_length, hidden_size)) — 모델의 마지막 레이어 출력에서 생성된 hidden-state 시퀀스입니다.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 AutoTokenizer, LongT5ForConditionalGeneration
>>> tokenizer = AutoTokenizer.from_pretrained("google/long-t5-local-base")
>>> model = LongT5EncoderModel.from_pretrained("google/long-t5-local-base")
>>> input_ids = tokenizer(
... 100 * "Studies have been shown that owning a dog is good for you ", return_tensors="pt"
... ).input_ids # Batch size 1
>>> outputs = model(input_ids=input_ids)
>>> last_hidden_states = outputs.last_hidden_state