BART는 Facebook AI 에서 발표한 모델입니다.
Encoder는 Bidirectional Encoder를 이용하고,
Decoder는 Autoregressive Decoder를 이용합니다.
다음 사진은 바트모델입니다. Sequence-to-Sequence 방식을 이용합니다.
Sequence-to-Sequence는 입력된 시퀀스로부터 다른 도멘의 시퀀스를 출력하는 다양한 분야에서 사용되는 모델입니다. 예를 들어 챗봇(Chatbot)과 기계 번역(Machine Translation)이 그러한 대표적인 예인데, 입력 시퀀스와 출력 시퀀스를 각각 질문과 대답으로 구성하면 챗봇으로 만들 수 있고, 입력 시퀀스와 출력 시퀀스를 각각 입력 문장과 번역 문장으로 만들면 번역기로 만들 수 있습니다. 그 외에도 다음과 같이 내용 요약(Text Summarization), STT(Speech to Text) 등에서 쓰일 수 있습니다.
BART 모델을 사용할 수 있는 방법은 크게 Fairseq를 이용하거나 HuggingFace의 Transformers를 이용하는 방법이 있습니다.
Fairseq
Fairseq는 Facebook AI Research Sequence-to-Sequence Toolkit 입니다.
말 그대로 Facebook AI 팀에서 툴킷을 만들어 배포 합니다.
설치방법은 다음과 같습니다.
# fairseq 모듈 설치
pip install fairseq
그리고 Pre-trained 된 BART를 사용하기 위해 torch.hub를 이용하거나 학습된 모델을 다운 받는 방법 2가지가 있습니다.
https://github.com/pytorch/fairseq/tree/master/examples/bart
첫번째로 Pytorch 버전이 1.1이상이면 torch 허브를 이용할 수 있습니다.
다음 코드를 작성하고 실행하면 모델을 자동으로 다운할 수 있습니다.
import torch
bart = torch.hub.load('pytorch/fairseq', 'bart.large')
bart.eval() # disable dropout (or leave in train mode to finetune)
두번째로 Pytorch 버전이 1.0 이거나 Custom models로 사용하면 모델을 직접 다운받아 사용할 수 있습니다.
(이 경우에는 Pytorch 버전이 1.0 이상일 때도 사용할 수 있습니다.)
# Download bart.large model
wget https://dl.fbaipublicfiles.com/fairseq/models/bart.large.tar.gz
tar -xzvf bart.large.tar.gz
# Load the model in fairseq
from fairseq.models.bart import BARTModel
bart = BARTModel.from_pretrained('/path/to/bart.large', checkpoint_file='model.pt')
bart.eval() # disable dropout (or leave in train mode to finetune)
위의 작업은 해당 폴더를 실행할 곳에서 코드를 실행하는 것을 추천드립니다.
Transformers (HuggingFace)
Transformers는 State-of-the-art Natural Language Processing을 지원하는 모듈입니다.
다음과 같이 코드로 간편하게 설치할 수 있습니다.
# Transformers 모듈 설치
pip install transformers
Transformers에서 BART를 이용하는 방법은 다음 코드와 같습니다.
from transformers import BartConfig, BartTokenizer, BartModel
config = BartConfig.from_pretrained("facebook/bart-large")
tokenizer = BartTokenizer.from_pretrained("facebook/bart-large")
model = BartModel.from_pretrained("facebook/bart-large")
코드를 입력하면 자동으로 모델을 다운받아 사용할 수 있습니다.
'NLP 자연어 처리, Natural Language Processing > Summary, 요약' 카테고리의 다른 글
BART 학습 및 예측 (0) | 2020.08.17 |
---|