chyun commited on
Commit
963120c
1 Parent(s): d7fb1a2

initial commit

Browse files
Files changed (7) hide show
  1. .gitattributes +1 -0
  2. README.md +370 -0
  3. config.json +154 -0
  4. model.safetensors +3 -0
  5. pytorch_model.bin +3 -0
  6. tokenizer_config.json +1 -0
  7. vocab.txt +0 -0
.gitattributes CHANGED
@@ -32,3 +32,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ pytorch_model.bin filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,370 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: ko
3
+ license: apache-2.0
4
+ tags:
5
+ - korean
6
+ ---
7
+
8
+ # KcBERT: Korean comments BERT
9
+
10
+ ** Updates on 2021.04.07 **
11
+
12
+ - KcELECTRA가 릴리즈 되었습니다!🤗
13
+ - KcELECTRA는 보다 더 많은 데이터셋, 그리고 더 큰 General vocab을 통해 KcBERT 대비 **모든 태스크에서 더 높은 성능**을 보입니다.
14
+ - 아래 깃헙 링크에서 직접 사용해보세요!
15
+ - https://github.com/Beomi/KcELECTRA
16
+
17
+ ** Updates on 2021.03.14 **
18
+
19
+ - KcBERT Paper 인용 표기를 추가하였습니다.(bibtex)
20
+ - KcBERT-finetune Performance score를 본문에 추가하였습니다.
21
+
22
+ ** Updates on 2020.12.04 **
23
+
24
+ Huggingface Transformers가 v4.0.0으로 업데이트됨에 따라 Tutorial의 코드가 일부 변경되었습니다.
25
+
26
+ 업데이트된 KcBERT-Large NSMC Finetuning Colab: <a href="https://colab.research.google.com/drive/1dFC0FL-521m7CL_PSd8RLKq67jgTJVhL?usp=sharing">
27
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
28
+ </a>
29
+
30
+ ** Updates on 2020.09.11 **
31
+
32
+ KcBERT를 Google Colab에서 TPU를 통해 학습할 수 있는 튜토리얼을 제공합니다! 아래 버튼을 눌러보세요.
33
+
34
+ Colab에서 TPU로 KcBERT Pretrain 해보기: <a href="https://colab.research.google.com/drive/1lYBYtaXqt9S733OXdXvrvC09ysKFN30W">
35
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
36
+ </a>
37
+
38
+ 텍스트 분량만 전체 12G 텍스트 중 일부(144MB)로 줄여 학습을 진행합니다.
39
+
40
+ 한국어 데이터셋/코퍼스를 좀더 쉽게 사용할 수 있는 [Korpora](https://github.com/ko-nlp/Korpora) 패키지를 사용합니다.
41
+
42
+ ** Updates on 2020.09.08 **
43
+
44
+ Github Release를 통해 학습 데이터를 업로드하였습니다.
45
+
46
+ 다만 한 파일당 2GB 이내의 제약으로 인해 분할압축되어있습니다.
47
+
48
+ 아래 링크를 통해 받아주세요. (가입 없이 받을 수 있어요. 분할압축)
49
+
50
+ 만약 한 파일로 받고싶으시거나/Kaggle에서 데이터를 살펴보고 싶으시다면 아래의 캐글 데이터셋을 이용해주세요.
51
+
52
+ - Github릴리즈: https://github.com/Beomi/KcBERT/releases/tag/TrainData_v1
53
+
54
+ ** Updates on 2020.08.22 **
55
+
56
+ Pretrain Dataset 공개
57
+
58
+ - 캐글: https://www.kaggle.com/junbumlee/kcbert-pretraining-corpus-korean-news-comments (한 파일로 받을 수 있어요. 단일파일)
59
+
60
+ Kaggle에 학습을 위해 정제한(아래 `clean`처리를 거친) Dataset을 공개하였습니다!
61
+
62
+ 직접 다운받으셔서 다양한 Task에 학습을 진행해보세요 :)
63
+
64
+ ---
65
+
66
+ 공개된 한국어 BERT는 대부분 한국어 위키, 뉴스 기사, 책 등 잘 정제된 데이터를 기반으로 학습한 모델입니다. 한편, 실제로 NSMC와 같은 댓글형 데이터셋은 정제되지 않았고 구어체 특징에 신조어가 많으며, 오탈자 등 공식적인 글쓰기에서 나타나지 않는 표현들이 빈번하게 등장합니다.
67
+
68
+ KcBERT는 위와 같은 특성의 데이터셋에 적용하기 위해, 네이버 뉴스에서 댓글과 대댓글을 수집해, 토크나이저와 BERT모델을 처음부터 학습한 Pretrained BERT 모델입니다.
69
+
70
+ KcBERT는 Huggingface의 Transformers 라이브러리를 통해 간편히 불러와 사용할 수 있습니다. (별도의 파일 다운로드가 필요하지 않습니다.)
71
+
72
+ ## KcBERT Performance
73
+
74
+ - Finetune 코드는 https://github.com/Beomi/KcBERT-finetune 에서 찾아보실 수 있습니다.
75
+
76
+ | | Size<br/>(용량) | **NSMC**<br/>(acc) | **Naver NER**<br/>(F1) | **PAWS**<br/>(acc) | **KorNLI**<br/>(acc) | **KorSTS**<br/>(spearman) | **Question Pair**<br/>(acc) | **KorQuaD (Dev)**<br/>(EM/F1) |
77
+ | :-------------------- | :---: | :----------------: | :--------------------: | :----------------: | :------------------: | :-----------------------: | :-------------------------: | :---------------------------: |
78
+ | KcBERT-Base | 417M | 89.62 | 84.34 | 66.95 | 74.85 | 75.57 | 93.93 | 60.25 / 84.39 |
79
+ | KcBERT-Large | 1.2G | **90.68** | 85.53 | 70.15 | 76.99 | 77.49 | 94.06 | 62.16 / 86.64 |
80
+ | KoBERT | 351M | 89.63 | 86.11 | 80.65 | 79.00 | 79.64 | 93.93 | 52.81 / 80.27 |
81
+ | XLM-Roberta-Base | 1.03G | 89.49 | 86.26 | 82.95 | 79.92 | 79.09 | 93.53 | 64.70 / 88.94 |
82
+ | HanBERT | 614M | 90.16 | **87.31** | 82.40 | **80.89** | 83.33 | 94.19 | 78.74 / 92.02 |
83
+ | KoELECTRA-Base | 423M | **90.21** | 86.87 | 81.90 | 80.85 | 83.21 | 94.20 | 61.10 / 89.59 |
84
+ | KoELECTRA-Base-v2 | 423M | 89.70 | 87.02 | **83.90** | 80.61 | **84.30** | **94.72** | **84.34 / 92.58** |
85
+ | DistilKoBERT | 108M | 88.41 | 84.13 | 62.55 | 70.55 | 73.21 | 92.48 | 54.12 / 77.80 |
86
+
87
+
88
+ \*HanBERT의 Size는 Bert Model과 Tokenizer DB를 합친 것입니다.
89
+
90
+ \***config의 세팅을 그대로 하여 돌린 결과이며, hyperparameter tuning을 추가적으로 할 시 더 좋은 성능이 나올 수 있습니다.**
91
+
92
+ ## How to use
93
+
94
+ ### Requirements
95
+
96
+ - `pytorch <= 1.8.0`
97
+ - `transformers ~= 3.0.1`
98
+ - `transformers ~= 4.0.0` 도 호환됩니다.
99
+ - `emoji ~= 0.6.0`
100
+ - `soynlp ~= 0.0.493`
101
+
102
+ ```python
103
+ from transformers import AutoTokenizer, AutoModelWithLMHead
104
+
105
+ # Base Model (108M)
106
+
107
+ tokenizer = AutoTokenizer.from_pretrained("beomi/kcbert-base")
108
+
109
+ model = AutoModelWithLMHead.from_pretrained("beomi/kcbert-base")
110
+
111
+ # Large Model (334M)
112
+
113
+ tokenizer = AutoTokenizer.from_pretrained("beomi/kcbert-large")
114
+
115
+ model = AutoModelWithLMHead.from_pretrained("beomi/kcbert-large")
116
+ ```
117
+
118
+ ### Pretrain & Finetune Colab 링크 모음
119
+
120
+ #### Pretrain Data
121
+
122
+ - [데이터셋 다운로드(Kaggle, 단일파일, 로그인 필요)](https://www.kaggle.com/junbumlee/kcbert-pretraining-corpus-korean-news-comments)
123
+ - [데이터셋 다운로드(Github, 압축 여러파일, 로그인 불필요)](https://github.com/Beomi/KcBERT/releases/tag/TrainData_v1)
124
+
125
+ #### Pretrain Code
126
+
127
+ Colab에서 TPU로 KcBERT Pretrain 해보기: <a href="https://colab.research.google.com/drive/1lYBYtaXqt9S733OXdXvrvC09ysKFN30W">
128
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
129
+ </a>
130
+
131
+ #### Finetune Samples
132
+
133
+ **KcBERT-Base** NSMC Finetuning with PyTorch-Lightning (Colab) <a href="https://colab.research.google.com/drive/1fn4sVJ82BrrInjq6y5655CYPP-1UKCLb?usp=sharing">
134
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
135
+ </a>
136
+
137
+ **KcBERT-Large** NSMC Finetuning with PyTorch-Lightning (Colab) <a href="https://colab.research.google.com/drive/1dFC0FL-521m7CL_PSd8RLKq67jgTJVhL?usp=sharing">
138
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
139
+ </a>
140
+
141
+ > 위 두 코드는 Pretrain 모델(base, large)와 batch size만 다를 뿐, 나머지 코드는 완전히 동일합니다.
142
+
143
+ ## Train Data & Preprocessing
144
+
145
+ ### Raw Data
146
+
147
+ 학습 데이터는 2019.01.01 ~ 2020.06.15 사이에 작성된 **댓글 많은 뉴스** 기사들의 **댓글과 대댓글**을 모두 수집한 데이터입니다.
148
+
149
+ 데이터 사이즈는 텍스트만 추출시 **약 15.4GB이며, 1억1천만개 이상의 문장**으로 이뤄져 있습니다.
150
+
151
+ ### Preprocessing
152
+
153
+ PLM 학습을 위해서 전처리를 진행한 과정은 다음과 같습니다.
154
+
155
+ 1. 한글 및 영어, 특수문자, 그리고 이모지(🥳)까지!
156
+
157
+ 정규표현식을 통해 한글, 영어, 특수문자를 포함해 Emoji까지 학습 대상에 포함했습니다.
158
+
159
+ 한편, 한글 범위를 `ㄱ-ㅎ가-힣` 으로 지정해 `ㄱ-힣` 내의 한자를 제외했습니다.
160
+
161
+ 2. 댓글 내 중복 문자열 축약
162
+
163
+ `ㅋㅋㅋㅋㅋ`와 같이 중복된 글자를 `ㅋㅋ`와 같은 것으로 합쳤습니다.
164
+
165
+ 3. Cased Model
166
+
167
+ KcBERT는 영문에 대해서는 대소문자를 유지하는 Cased model입니다.
168
+
169
+ 4. 글자 단위 10글자 이하 제거
170
+
171
+ 10글자 미만의 텍스트는 단일 단어로 이뤄진 경우가 많아 해당 부분을 제외했습니다.
172
+
173
+ 5. 중복 제거
174
+
175
+ 중복적으로 쓰인 댓글을 제거하기 위해 중복 댓글을 하나로 합쳤습니다.
176
+
177
+ 이를 통해 만든 최종 학습 데이터는 **12.5GB, 8.9천만개 문장**입니다.
178
+
179
+ 아래 명령어로 pip로 설치한 뒤, 아래 clean함수로 클리닝을 하면 Downstream task에서 보다 성능이 좋아집니다. (`[UNK]` 감소)
180
+
181
+ ```bash
182
+ pip install soynlp emoji
183
+ ```
184
+
185
+ 아래 `clean` 함수를 Text data에 사용해주세요.
186
+
187
+ ```python
188
+ import re
189
+ import emoji
190
+ from soynlp.normalizer import repeat_normalize
191
+
192
+ emojis = list({y for x in emoji.UNICODE_EMOJI.values() for y in x.keys()})
193
+ emojis = ''.join(emojis)
194
+ pattern = re.compile(f'[^ .,?!/@$%~%·∼()\x00-\x7Fㄱ-ㅣ가-힣{emojis}]+')
195
+ url_pattern = re.compile(
196
+ r'https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)')
197
+
198
+ def clean(x):
199
+ x = pattern.sub(' ', x)
200
+ x = url_pattern.sub('', x)
201
+ x = x.strip()
202
+ x = repeat_normalize(x, num_repeats=2)
203
+ return x
204
+ ```
205
+
206
+ ### Cleaned Data (Released on Kaggle)
207
+
208
+ 원본 데이터를 위 `clean`함수로 정제한 12GB분량의 txt 파일을 아래 Kaggle Dataset에서 다운받으실 수 있습니다 :)
209
+
210
+ https://www.kaggle.com/junbumlee/kcbert-pretraining-corpus-korean-news-comments
211
+
212
+
213
+ ## Tokenizer Train
214
+
215
+ Tokenizer는 Huggingface의 [Tokenizers](https://github.com/huggingface/tokenizers) 라이브러리를 통해 학습을 진행했습니다.
216
+
217
+ 그 중 `BertWordPieceTokenizer` 를 이용해 학습을 진행했고, Vocab Size는 `30000`으로 진행했습니다.
218
+
219
+ Tokenizer를 학습하는 것에는 `1/10`로 샘플링한 데이터로 학습을 진행했고, 보다 골고루 샘플링하기 위해 일자별로 stratify를 지정한 뒤 햑습을 진행했습니다.
220
+
221
+ ## BERT Model Pretrain
222
+
223
+ - KcBERT Base config
224
+
225
+ ```json
226
+ {
227
+ "max_position_embeddings": 300,
228
+ "hidden_dropout_prob": 0.1,
229
+ "hidden_act": "gelu",
230
+ "initializer_range": 0.02,
231
+ "num_hidden_layers": 12,
232
+ "type_vocab_size": 2,
233
+ "vocab_size": 30000,
234
+ "hidden_size": 768,
235
+ "attention_probs_dropout_prob": 0.1,
236
+ "directionality": "bidi",
237
+ "num_attention_heads": 12,
238
+ "intermediate_size": 3072,
239
+ "architectures": [
240
+ "BertForMaskedLM"
241
+ ],
242
+ "model_type": "bert"
243
+ }
244
+ ```
245
+
246
+ - KcBERT Large config
247
+
248
+ ```json
249
+ {
250
+ "type_vocab_size": 2,
251
+ "initializer_range": 0.02,
252
+ "max_position_embeddings": 300,
253
+ "vocab_size": 30000,
254
+ "hidden_size": 1024,
255
+ "hidden_dropout_prob": 0.1,
256
+ "model_type": "bert",
257
+ "directionality": "bidi",
258
+ "pad_token_id": 0,
259
+ "layer_norm_eps": 1e-12,
260
+ "hidden_act": "gelu",
261
+ "num_hidden_layers": 24,
262
+ "num_attention_heads": 16,
263
+ "attention_probs_dropout_prob": 0.1,
264
+ "intermediate_size": 4096,
265
+ "architectures": [
266
+ "BertForMaskedLM"
267
+ ]
268
+ }
269
+ ```
270
+
271
+ BERT Model Config는 Base, Large 기본 세팅값을 그대로 사용했습니다. (MLM 15% 등)
272
+
273
+ TPU `v3-8` 을 이용해 각각 3일, N일(Large는 학습 진행 중)을 진행했고, 현재 Huggingface에 공개된 모델은 1m(100만) step을 학습한 ckpt가 업로드 되어있습니다.
274
+
275
+ 모델 학습 Loss는 Step에 따라 초기 200k에 가장 빠르게 Loss가 줄어들다 400k이후로는 조금씩 감소하는 것을 볼 수 있습니다.
276
+
277
+ - Base Model Loss
278
+
279
+ ![KcBERT-Base Pretraining Loss](https://raw.githubusercontent.com/Beomi/KcBERT/master/img/image-20200719183852243.38b124.png)
280
+
281
+ - Large Model Loss
282
+
283
+ ![KcBERT-Large Pretraining Loss](https://raw.githubusercontent.com/Beomi/KcBERT/master/img/image-20200806160746694.d56fa1.png)
284
+
285
+ 학습은 GCP의 TPU v3-8을 이용해 학습을 진행했고, 학습 시간은 Base Model 기준 2.5일정도 진행했습니다. Large Model은 약 5일정도 진행한 뒤 가장 낮은 loss를 가진 체크포인트로 정했습니다.
286
+
287
+ ## Example
288
+
289
+ ### HuggingFace MASK LM
290
+
291
+ [HuggingFace kcbert-base 모델](https://huggingface.co/beomi/kcbert-base?text=오늘은+날씨가+[MASK]) 에서 아래와 같이 테스트 해 볼 수 있습니다.
292
+
293
+ ![오늘은 날씨가 "좋네요", KcBERT-Base](https://raw.githubusercontent.com/Beomi/KcBERT/master/img/image-20200719205919389.5670d6.png)
294
+
295
+ 물론 [kcbert-large 모델](https://huggingface.co/beomi/kcbert-large?text=오늘은+날씨가+[MASK]) 에서도 테스트 할 수 있습니다.
296
+
297
+ ![image-20200806160624340](https://raw.githubusercontent.com/Beomi/KcBERT/master/img/image-20200806160624340.58f9be.png)
298
+
299
+
300
+
301
+ ### NSMC Binary Classification
302
+
303
+ [네이버 영화평 코퍼스](https://github.com/e9t/nsmc) 데이터셋을 대상으로 Fine Tuning을 진행해 성능을 간단히 테스트해보았습니다.
304
+
305
+ Base Model을 Fine Tune하는 코드는 <a href="https://colab.research.google.com/drive/1fn4sVJ82BrrInjq6y5655CYPP-1UKCLb?usp=sharing">
306
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
307
+ </a> 에서 직접 실행해보실 수 있습니다.
308
+
309
+ Large Model을 Fine Tune하는 코드는 <a href="https://colab.research.google.com/drive/1dFC0FL-521m7CL_PSd8RLKq67jgTJVhL?usp=sharing">
310
+ <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
311
+ </a> 에서 직접 실행해볼 수 있습니다.
312
+
313
+ - GPU는 P100 x1대 기준 1epoch에 2-3시간, TPU는 1epoch에 1시간 내로 소요됩니다.
314
+ - GPU RTX Titan x4대 기준 30분/epoch 소요됩니다.
315
+ - 예시 코드는 [pytorch-lightning](https://github.com/PyTorchLightning/pytorch-lightning)으로 개발했습니다.
316
+
317
+ #### 실험결과
318
+
319
+ - KcBERT-Base Model 실험결과: Val acc `.8905`
320
+
321
+ ![KcBERT Base finetune on NSMC](https://raw.githubusercontent.com/Beomi/KcBERT/master/img/image-20200719201102895.ddbdfc.png)
322
+
323
+ - KcBERT-Large Model 실험 결과: Val acc `.9089`
324
+
325
+ ![image-20200806190242834](https://raw.githubusercontent.com/Beomi/KcBERT/master/img/image-20200806190242834.56d6ee.png)
326
+
327
+ > 더 다양한 Downstream Task에 대해 테스트를 진행하고 공개할 예정입니다.
328
+
329
+ ## 인용표기/Citation
330
+
331
+ KcBERT를 인용하실 때는 아래 양식을 통해 인용해주세요.
332
+
333
+ ```
334
+ @inproceedings{lee2020kcbert,
335
+ title={KcBERT: Korean Comments BERT},
336
+ author={Lee, Junbum},
337
+ booktitle={Proceedings of the 32nd Annual Conference on Human and Cognitive Language Technology},
338
+ pages={437--440},
339
+ year={2020}
340
+ }
341
+ ```
342
+
343
+ - 논문집 다운로드 링크: http://hclt.kr/dwn/?v=bG5iOmNvbmZlcmVuY2U7aWR4OjMy (*혹은 http://hclt.kr/symp/?lnb=conference )
344
+
345
+ ## Acknowledgement
346
+
347
+ KcBERT Model을 학습하는 GCP/TPU 환경은 [TFRC](https://www.tensorflow.org/tfrc?hl=ko) 프로그램의 지원을 받았습니다.
348
+
349
+ 모델 학습 과정에서 많은 조언을 주신 [Monologg](https://github.com/monologg/) 님 감사합니다 :)
350
+
351
+ ## Reference
352
+
353
+ ### Github Repos
354
+
355
+ - [BERT by Google](https://github.com/google-research/bert)
356
+ - [KoBERT by SKT](https://github.com/SKTBrain/KoBERT)
357
+ - [KoELECTRA by Monologg](https://github.com/monologg/KoELECTRA/)
358
+
359
+ - [Transformers by Huggingface](https://github.com/huggingface/transformers)
360
+ - [Tokenizers by Hugginface](https://github.com/huggingface/tokenizers)
361
+
362
+ ### Papers
363
+
364
+ - [BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding](https://arxiv.org/abs/1810.04805)
365
+
366
+ ### Blogs
367
+
368
+ - [Monologg님의 KoELECTRA 학습기](https://monologg.kr/categories/NLP/ELECTRA/)
369
+ - [Colab에서 TPU로 BERT 처음부터 학습시키기 - Tensorflow/Google ver.](https://beomi.github.io/2020/02/26/Train-BERT-from-scratch-on-colab-TPU-Tensorflow-ver/)
370
+
config.json ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "EncoderDecoderModel"
4
+ ],
5
+ "decoder": {
6
+ "_name_or_path": "./beomi/kcbert-base",
7
+ "add_cross_attention": true,
8
+ "architectures": [
9
+ "BertForMaskedLM"
10
+ ],
11
+ "attention_probs_dropout_prob": 0.1,
12
+ "bad_words_ids": null,
13
+ "bos_token_id": null,
14
+ "chunk_size_feed_forward": 0,
15
+ "decoder_start_token_id": null,
16
+ "directionality": "bidi",
17
+ "do_sample": false,
18
+ "early_stopping": false,
19
+ "eos_token_id": null,
20
+ "finetuning_task": null,
21
+ "gradient_checkpointing": false,
22
+ "hidden_act": "gelu",
23
+ "hidden_dropout_prob": 0.1,
24
+ "hidden_size": 768,
25
+ "id2label": {
26
+ "0": "LABEL_0",
27
+ "1": "LABEL_1"
28
+ },
29
+ "initializer_range": 0.02,
30
+ "intermediate_size": 3072,
31
+ "is_decoder": true,
32
+ "is_decoder2": false,
33
+ "is_encoder_decoder": false,
34
+ "label2id": {
35
+ "LABEL_0": 0,
36
+ "LABEL_1": 1
37
+ },
38
+ "layer_norm_eps": 1e-12,
39
+ "length_penalty": 1.0,
40
+ "max_length": 20,
41
+ "max_position_embeddings": 300,
42
+ "min_length": 0,
43
+ "model_type": "bert",
44
+ "no_repeat_ngram_size": 0,
45
+ "num_attention_heads": 12,
46
+ "num_beams": 1,
47
+ "num_hidden_layers": 12,
48
+ "num_return_sequences": 1,
49
+ "output_attentions": false,
50
+ "output_hidden_states": false,
51
+ "pad_token_id": 0,
52
+ "pooler_fc_size": 768,
53
+ "pooler_num_attention_heads": 12,
54
+ "pooler_num_fc_layers": 3,
55
+ "pooler_size_per_head": 128,
56
+ "pooler_type": "first_token_transform",
57
+ "prefix": null,
58
+ "pruned_heads": {},
59
+ "repetition_penalty": 1.0,
60
+ "return_dict": false,
61
+ "sep_token_id": null,
62
+ "task_specific_params": null,
63
+ "temperature": 1.0,
64
+ "tie_encoder_decoder": false,
65
+ "tie_word_embeddings": true,
66
+ "tokenizer_class": null,
67
+ "top_k": 50,
68
+ "top_p": 1.0,
69
+ "torchscript": false,
70
+ "type_vocab_size": 2,
71
+ "use_bfloat16": false,
72
+ "use_cache": true,
73
+ "vocab_size": 30000,
74
+ "xla_device": null
75
+ },
76
+ "decoder_start_token_id": 2,
77
+ "early_stopping": true,
78
+ "encoder": {
79
+ "_name_or_path": "./beomi/kcbert-base",
80
+ "add_cross_attention": false,
81
+ "architectures": [
82
+ "BertForMaskedLM"
83
+ ],
84
+ "attention_probs_dropout_prob": 0.1,
85
+ "bad_words_ids": null,
86
+ "bos_token_id": null,
87
+ "chunk_size_feed_forward": 0,
88
+ "decoder_start_token_id": null,
89
+ "directionality": "bidi",
90
+ "do_sample": false,
91
+ "early_stopping": false,
92
+ "eos_token_id": null,
93
+ "finetuning_task": null,
94
+ "gradient_checkpointing": false,
95
+ "hidden_act": "gelu",
96
+ "hidden_dropout_prob": 0.1,
97
+ "hidden_size": 768,
98
+ "id2label": {
99
+ "0": "LABEL_0",
100
+ "1": "LABEL_1"
101
+ },
102
+ "initializer_range": 0.02,
103
+ "intermediate_size": 3072,
104
+ "is_decoder": false,
105
+ "is_decoder2": false,
106
+ "is_encoder_decoder": false,
107
+ "label2id": {
108
+ "LABEL_0": 0,
109
+ "LABEL_1": 1
110
+ },
111
+ "layer_norm_eps": 1e-12,
112
+ "length_penalty": 1.0,
113
+ "max_length": 20,
114
+ "max_position_embeddings": 300,
115
+ "min_length": 0,
116
+ "model_type": "bert",
117
+ "no_repeat_ngram_size": 0,
118
+ "num_attention_heads": 12,
119
+ "num_beams": 1,
120
+ "num_hidden_layers": 12,
121
+ "num_return_sequences": 1,
122
+ "output_attentions": false,
123
+ "output_hidden_states": false,
124
+ "pad_token_id": 0,
125
+ "pooler_fc_size": 768,
126
+ "pooler_num_attention_heads": 12,
127
+ "pooler_num_fc_layers": 3,
128
+ "pooler_size_per_head": 128,
129
+ "pooler_type": "first_token_transform",
130
+ "prefix": null,
131
+ "pruned_heads": {},
132
+ "repetition_penalty": 1.0,
133
+ "return_dict": false,
134
+ "sep_token_id": null,
135
+ "task_specific_params": null,
136
+ "temperature": 1.0,
137
+ "tie_encoder_decoder": false,
138
+ "tie_word_embeddings": true,
139
+ "tokenizer_class": null,
140
+ "top_k": 50,
141
+ "top_p": 1.0,
142
+ "torchscript": false,
143
+ "type_vocab_size": 2,
144
+ "use_bfloat16": false,
145
+ "use_cache": true,
146
+ "vocab_size": 30000,
147
+ "xla_device": null
148
+ },
149
+ "force_bos_token_to_be_generated": true,
150
+ "is_encoder_decoder": true,
151
+ "max_length": 32,
152
+ "min_length": 3,
153
+ "model_type": "encoder-decoder"
154
+ }
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f9e4bf3e835047dbfa27fd8ff812d765a38debb8b68a659dcd59c4da3a611450
3
+ size 438192852
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5af3c1a006f7a7b8edd1b4e526f52c44e120bc14302aa216bc0b72be58906cb
3
+ size 1534576837
tokenizer_config.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"do_lower_case": false, "model_max_length": 300}
vocab.txt ADDED
The diff for this file is too large to render. See raw diff