*이 모델은 2020-07-28에 출시되었으며 2021-03-30에 Hugging Face Transformers에 추가되었습니다.*
# BigBird[[bigbird]]
[BigBird](https://huggingface.co/papers/2007.14062)는 [BERT](./bert)의 512토큰과 달리 최대 4096토큰까지의 시퀀스 길이를 처리하도록 설계된 트랜스포머 모델입니다. 기존 트랜스포머들은 시퀀스 길이가 늘어날수록 어텐션 계산 비용이 급격히 증가하여 긴 입력 처리에 어려움을 겪습니다. BigBird는 희소 어텐션 메커니즘으로 이 문제를 해결하는데, 모든 토큰을 동시에 살펴보는 대신 로컬 어텐션, 랜덤 어텐션, 그리고 몇 개의 전역 토큰을 조합하여 전체 입력을 효율적으로 처리합니다. 이런 방식을 통해 계산 효율성을 유지하면서도 시퀀스 전체를 충분히 이해할 수 있게 됩니다. 따라서 BigBird는 질의응답, 요약, 유전체학 응용처럼 긴 문서를 다루는 작업에 특히 우수한 성능을 보입니다.
모든 원본 BigBird 체크포인트는 [Google](https://huggingface.co/google?search_models=bigbird) 조직에서 찾아볼 수 있습니다.
> [!TIP]
> 오른쪽 사이드바의 BigBird 모델들을 클릭하여 다양한 언어 작업에 BigBird를 적용하는 더 많은 예시를 확인해보세요.
아래 예시는 [`Pipeline`], [`AutoModel`], 그리고 명령줄에서 `[MASK]` 토큰을 예측하는 방법을 보여줍니다.
```py
import torch
from transformers import pipeline
pipeline = pipeline(
task="fill-mask",
model="google/bigbird-roberta-base",
dtype=torch.float16,
device=0
)
pipeline("Plants create [MASK] through a process known as photosynthesis.")
```
```py
import torch
from transformers import AutoModelForMaskedLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(
"google/bigbird-roberta-base",
)
model = AutoModelForMaskedLM.from_pretrained(
"google/bigbird-roberta-base",
dtype=torch.float16,
device_map="auto",
)
inputs = tokenizer("Plants create [MASK] through a process known as photosynthesis.", return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
predictions = outputs.logits
masked_index = torch.where(inputs['input_ids'] == tokenizer.mask_token_id)[1]
predicted_token_id = predictions[0, masked_index].argmax(dim=-1)
predicted_token = tokenizer.decode(predicted_token_id)
print(f"The predicted token is: {predicted_token}")
```
```bash
!echo -e "Plants create [MASK] through a process known as photosynthesis." | transformers-cli run --task fill-mask --model google/bigbird-roberta-base --device 0
```
## 참고사항[[notes]]
- BigBird는 절대 위치 임베딩을 사용하므로 입력을 오른쪽에 패딩해야 합니다.
- BigBird는 `original_full`과 `block_sparse` 어텐션을 지원합니다. 입력 시퀀스 길이가 1024 미만인 경우에는 희소 패턴의 이점이 크지 않으므로 `original_full` 사용을 권장합니다.
- 현재 구현은 3블록 윈도우 크기와 2개의 전역 블록을 사용하며, ITC 구현만 지원하고 `num_random_blocks=0`은 지원하지 않습니다.
- 시퀀스 길이는 블록 크기로 나누어떨어져야 합니다.
## 리소스[[resources]]
- BigBird 어텐션 메커니즘의 자세한 작동 원리는 [BigBird](https://huggingface.co/blog/big-bird) 블로그 포스트를 참고하세요.
## BigBirdConfig[[bigbirdconfig]]
[[autodoc]] BigBirdConfig
## BigBirdTokenizer[[bigbirdtokenizer]]
[[autodoc]] BigBirdTokenizer
- get_special_tokens_mask
- save_vocabulary
## BigBirdTokenizerFast[[bigbirdtokenizerfast]]
[[autodoc]] BigBirdTokenizerFast
## BigBird 특정 출력[[bigbird-specific-outputs]]
[[autodoc]] models.big_bird.modeling_big_bird.BigBirdForPreTrainingOutput
## BigBirdModel[[bigbirdmodel]]
[[autodoc]] BigBirdModel
- forward
## BigBirdForPreTraining[[bigbirdforpretraining]]
[[autodoc]] BigBirdForPreTraining
- forward
## BigBirdForCausalLM[[bigbirdforcausallm]]
[[autodoc]] BigBirdForCausalLM
- forward
## BigBirdForMaskedLM[[bigbirdformaskedlm]]
[[autodoc]] BigBirdForMaskedLM
- forward
## BigBirdForSequenceClassification[[bigbirdforsequenceclassification]]
[[autodoc]] BigBirdForSequenceClassification
- forward
## BigBirdForMultipleChoice[[bigbirdformultiplechoice]]
[[autodoc]] BigBirdForMultipleChoice
- forward
## BigBirdForTokenClassification[[bigbirdfortokenclassification]]
[[autodoc]] BigBirdForTokenClassification
- forward
## BigBirdForQuestionAnswering[[bigbirdforquestionanswering]]
[[autodoc]] BigBirdForQuestionAnswering
- forward