기존 페이스북(Facebook)에서 발표한 BART(Bidirectional and Auto-Regressive Transformers)를 SKT-AI팀에서 한국어를 이용하여 학습을 하여 배포하고 있습니다. 아래는 깃허브입니다.
출처 : SKT-AI KoBART 깃허브 : https://github.com/SKT-AI/KoBART
1. 설치
pip install git+https://github.com/SKT-AI/KoBART#egg=kobart
코드를 이용하여 설치하게 되면 다음 패키지들을 설치하게 됩니다. (패키지-버전 입니다.)
- chardet-4.0.0
- click-7.1.2
- dataclasses-0.8
- filelock-3.0.12
- idna-2.10
- joblib-1.0.0
- kobart-0.2
- numpy-1.19.4
- packaging-20.8
- pyparsing-2.4.7
- regex-2020.11.13
- requests-2.25.1
- sacremoses-0.0.43
- six-1.15.0
- tokenizers-0.9.4
- torch-1.7.1
- tqdm-4.54.1
- transformers-4.1.1
- typing-extensions-3.7.4.3
- urllib3-1.26.2
2. Data
SKT-AI에서 활용한 데이터는 한국어 위키 백과 이외, 뉴스, 책, 모두의 말뭉치 v1.0(대화, 뉴스 등등), 청와대 국민청원 등 다양한 데이터를 사용하였다고 합니다.
따라서 SKT-AI 팀에서 발표한 KoBART는 기존 바트의 학습 방법인 입력 텍스트 일부에 노이즈를 추가하여 이를 다시 원문으로 복구하는 autoencoder의 형태로 학습하였다고 합니다. 논문에서 사용된 Text Infilling 노이즈 함수를 사용해 40GB 이상의 한국어에 대해 학습한 encoder-decoder 모델입니다.
3. Tokenizer
tokenizers 패키지의 Character BPE tokenizer로 학습되었다고 합니다.
vocab 사이즈는 30,000이며 대화에 자주 쓰이는 이모티콘, 이모지 등을 추가해 토큰의 인식 능력을 올렸다고합니다. 또한 <unused0> ~ <unused99> 등의 미사용 토큰을 정의해 필요한 subtasks에 따라 자유롭게 정의해 사용할 수 있게 했다고 합니다.
깃허브에서도 나와있는 것처럼 tokenizer의 사용 코드입니다.
아래는 코드입니다.
더보기
from kobart import get_kobart_tokenizer
kobart_tokenizer = get_kobart_tokenizer()
kobart_tokenizer.tokenize("안녕하세요. SKT AI팀에서 발표한 KoBART를 소개합니다.")
# output : ['▁안녕하', '세요.', '▁한국어', '▁B', 'A', 'R', 'T', '▁입', '니다.', '🤣', ':)', 'l^o']
4. Model
Model | # of params | Type | # of layers | # of heads | ffn_dim | hidden_dims |
KoBART-base | 124M | Encoder | 6 | 16 | 3072 | 768 |
Decoder | 6 | 16 | 3072 | 768 |
더보기
from transformers import BartModel
from kobart import get_pytorch_kobart_model, get_kobart_tokenizer
kobart_tokenizer = get_kobart_tokenizer()
model = BartModel.from_pretrained(get_pytorch_kobart_model())
def count_parameters(model):
return sum(p.numel() for p in model.parameters() if p.requires_grad)
print(f'모델 파라미터 수 : {count_parameters(model):,}')
반응형