paust-team/pko-t5

bpe based korean t5 model for text-to-text unified framework

63

stars

22

commits

Python

primary language

Apr 17, 2024

updated

README

ENGLISH

pko-t5

Blog

pko-t5 는 한국어 전용 데이터로 학습한 T5 v1.1입니다.

한국어를 tokenize 하기 위해서 sentencepiece 대신 OOV 가 없는 BBPE 를 사용했으며 한국어 데이터 (나무위키, 위키피디아, 모두의말뭉치 등..) 를 T5 의 span corruption task 를 사용해서 unsupervised learning 만 적용하여 학습을 진행했습니다.

pko-t5 를 사용하실 때는 실제 task 에 파인튜닝하여 사용하시기 바랍니다.

Download Model

Modeltransformers
pko-t5-smalltransformers
pko-t5-basetransformers
pko-t5-largetransformers

Usage

transformers 의 API 를 사용하여 접근 가능합니다. tokenizer 를 사용할때는 T5Tokenizer 가 아니라 T5TokenizerFast 를 사용해주십시오. model 은 T5ForConditionalGeneration 를 그대로 활용하시면 됩니다.

Pre-training Example

  • Single-node pre-training
python3 -m torch.distributed.launch \
  --use_env \
  --nproc_per_node 8
  --logidr {specific log directory}
  -m pkot5.pretraining \
  --grpc_endpoint <grpc_endpoint>
  --model_size <model_size>  # ex: small, base, large
  --resume_checkpoint <ckpt_step>  # ex: 200000
  • multi-node pre-training
python3 -m torch.distributed.launch \
  --use_env \
  --nproc_per_node 8
  --nnode <num nodes>
  --node_rank <node_rank>
  --master_addr <master_addr>  # ex: node 0
  --logidr {specific log directory}
  -m pkot5.pretraining \
  --grpc_endpoint <grpc_endpoint>
  --model_size <model_size>  # ex: small, base, large
  --resume_checkpoint <ckpt_step>  # ex: 200000

Fine-tuning Example

from transformers import T5TokenizerFast, T5ForConditionalGeneration

tokenizer = T5TokenizerFast.from_pretrained('paust/pko-t5-base')
model = T5ForConditionalGeneration.from_pretrained('paust/pko-t5-base')

input_ids = tokenizer(["qa question: 당신의 이름은 무엇인가요?"]).input_ids
labels = tokenizer(["T5 입니다."]).input_ids
outputs = model(input_ids=input_ids, labels=labels)

print(f"loss={outputs.loss} logits={outputs.logits}")

Klue 평가 (dev)

Modelynat (macro F1)sts (pearsonr/F1)nli (acc)ner (entity-level F1)re (micro F1)dp (LAS)mrc (EM/F1)
Baseline87.3093.20/86.1389.5086.0671.0687.9375.26/-
FTpko-t5-small (77M)86.2177.99/77.0169.2082.6066.4693.1543.81/46.58
FTpko-t5-base (250M)87.2990.25/83.4379.7387.8067.2397.2861.53/64.74
FTpko-t5-large (800M)87.1292.05/85.2484.9688.1875.1797.6068.01/71.44
MTpko-t5-small84.5468.50/72/0251.1674.6966.1180.4043.60/46.28
MTpko-t5-base86.8983.96/80.3072.0385.2766.5995.0561.11/63.94
MTpko-t5-large87.5791.93/86.2983.6387.4171.3496.9970.70/73.72
  • FT: 싱글태스크 파인튜닝 / MT: 멀티태스크 파인튜닝
  • Baseline: KLUE 논문에서 소개된 dev set 에 대한 SOTA 점수

위의 klue 평가는 input_ids 의 max length를 1300 으로 하여 학습했습니다. 이렇게 하면 encoding 된 context 가 train=98.4% / dev=100% 로 커버가 됩니다.

MRC에 대한 추가 실험 평가

  1. max length를 512 로 하여 context 를 슬라이딩해서 학습
  2. context 이외에 title 을 포함하여 학습
(1) EM / F1(2) EM / F1
small42.20/45.0346.85/50.46
base57.06/60.2063.12/67.38
large61.53/64.9470.15/74.20

title 을 포함했을 때 성능이 좀 더 좋지만 그에 따라 sequence length 가 늘어났습니다.

License

PAUST에서 만든 pko-t5는 MIT license 하에 공개되어 있습니다.

References

Citation

@software{paust_pkot5_v1,
  author = {Dennis Park},
  month = {5},
  title = {pko-t5: PAUST Korean T5 for text-to-text unified framework},
  url = {https://github.com/paust-team/pko-t5},
  version = {1.0},
  year = {2022}
}

Contributors

1dennispark

19 commits

HwiyeolJo

2 commits

edel-cheon

1 commits

paust-team/pko-t5

bpe based korean t5 model for text-to-text unified framework

63

stars

22

commits

Python

primary language

Apr 17, 2024

updated

README

ENGLISH

pko-t5

Blog

pko-t5 는 한국어 전용 데이터로 학습한 T5 v1.1입니다.

한국어를 tokenize 하기 위해서 sentencepiece 대신 OOV 가 없는 BBPE 를 사용했으며 한국어 데이터 (나무위키, 위키피디아, 모두의말뭉치 등..) 를 T5 의 span corruption task 를 사용해서 unsupervised learning 만 적용하여 학습을 진행했습니다.

pko-t5 를 사용하실 때는 실제 task 에 파인튜닝하여 사용하시기 바랍니다.

Download Model

Modeltransformers
pko-t5-smalltransformers
pko-t5-basetransformers
pko-t5-largetransformers

Usage

transformers 의 API 를 사용하여 접근 가능합니다. tokenizer 를 사용할때는 T5Tokenizer 가 아니라 T5TokenizerFast 를 사용해주십시오. model 은 T5ForConditionalGeneration 를 그대로 활용하시면 됩니다.

Pre-training Example

  • Single-node pre-training
python3 -m torch.distributed.launch \
  --use_env \
  --nproc_per_node 8
  --logidr {specific log directory}
  -m pkot5.pretraining \
  --grpc_endpoint <grpc_endpoint>
  --model_size <model_size>  # ex: small, base, large
  --resume_checkpoint <ckpt_step>  # ex: 200000
  • multi-node pre-training
python3 -m torch.distributed.launch \
  --use_env \
  --nproc_per_node 8
  --nnode <num nodes>
  --node_rank <node_rank>
  --master_addr <master_addr>  # ex: node 0
  --logidr {specific log directory}
  -m pkot5.pretraining \
  --grpc_endpoint <grpc_endpoint>
  --model_size <model_size>  # ex: small, base, large
  --resume_checkpoint <ckpt_step>  # ex: 200000

Fine-tuning Example

from transformers import T5TokenizerFast, T5ForConditionalGeneration

tokenizer = T5TokenizerFast.from_pretrained('paust/pko-t5-base')
model = T5ForConditionalGeneration.from_pretrained('paust/pko-t5-base')

input_ids = tokenizer(["qa question: 당신의 이름은 무엇인가요?"]).input_ids
labels = tokenizer(["T5 입니다."]).input_ids
outputs = model(input_ids=input_ids, labels=labels)

print(f"loss={outputs.loss} logits={outputs.logits}")

Klue 평가 (dev)

Modelynat (macro F1)sts (pearsonr/F1)nli (acc)ner (entity-level F1)re (micro F1)dp (LAS)mrc (EM/F1)
Baseline87.3093.20/86.1389.5086.0671.0687.9375.26/-
FTpko-t5-small (77M)86.2177.99/77.0169.2082.6066.4693.1543.81/46.58
FTpko-t5-base (250M)87.2990.25/83.4379.7387.8067.2397.2861.53/64.74
FTpko-t5-large (800M)87.1292.05/85.2484.9688.1875.1797.6068.01/71.44
MTpko-t5-small84.5468.50/72/0251.1674.6966.1180.4043.60/46.28
MTpko-t5-base86.8983.96/80.3072.0385.2766.5995.0561.11/63.94
MTpko-t5-large87.5791.93/86.2983.6387.4171.3496.9970.70/73.72
  • FT: 싱글태스크 파인튜닝 / MT: 멀티태스크 파인튜닝
  • Baseline: KLUE 논문에서 소개된 dev set 에 대한 SOTA 점수

위의 klue 평가는 input_ids 의 max length를 1300 으로 하여 학습했습니다. 이렇게 하면 encoding 된 context 가 train=98.4% / dev=100% 로 커버가 됩니다.

MRC에 대한 추가 실험 평가

  1. max length를 512 로 하여 context 를 슬라이딩해서 학습
  2. context 이외에 title 을 포함하여 학습
(1) EM / F1(2) EM / F1
small42.20/45.0346.85/50.46
base57.06/60.2063.12/67.38
large61.53/64.9470.15/74.20

title 을 포함했을 때 성능이 좀 더 좋지만 그에 따라 sequence length 가 늘어났습니다.

License

PAUST에서 만든 pko-t5는 MIT license 하에 공개되어 있습니다.

References

Citation

@software{paust_pkot5_v1,
  author = {Dennis Park},
  month = {5},
  title = {pko-t5: PAUST Korean T5 for text-to-text unified framework},
  url = {https://github.com/paust-team/pko-t5},
  version = {1.0},
  year = {2022}
}

Contributors

1dennispark

19 commits

HwiyeolJo

2 commits

edel-cheon

1 commits

Languages

Python

97.7%

Shell

2.3%