본문 바로가기

NLP 자연어 처리, Natural Language Processing/Summary, 요약

BART - Transformer Encoder-Decoder Model (Sequence-to-Sequence)

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

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

Facebook AI Research Sequence-to-Sequence Toolkit written in Python. - pytorch/fairseq

github.com

첫번째로 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")

코드를 입력하면 자동으로 모델을 다운받아 사용할 수 있습니다.

 

 

 

 

 

반응형