Porting fairseq WMT19 translation system to ๐ค Transformers
TL;DR
ํ๊น ํ์ด์ค๋ fairseq WMT19 ๋ฒ์ญ ์์คํ ์ Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด์ํ์ฌ, AutoTokenizer์ AutoModelForSeq2SeqLM์ผ๋ก ๋ก๋ํ ์ ์๋ ์์ดโ๋ฌ์์์ด ๋ฐ ์์ดโ๋ ์ผ์ด ๋ฒ์ญ์ฉ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ์ ์ ๊ณตํ์ต๋๋ค.
์ค๋น ๋ฐ ํ์ผ ๊ตฌ์กฐ
์ด์ ์์ ์ ์์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ค์ ํ๊ณ ํ์ํ ์ ์ฅ์๋ค์ ์ค์นํจ์ผ๋ก์จ ์์๋์์ต๋๋ค: fairseq, mosesdecoder, fastBPE, ๊ทธ๋ฆฌ๊ณ dev extras๊ฐ ํฌํจ๋ transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ. ์ ์๋ ~/porting ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ฐ ์ ์ฅ์๋ฅผ ํด๋ก ํ ํ ํธ์ง ๊ฐ๋ฅํ ๋ชจ๋๋ก ์ค์นํ์ต๋๋ค. fairseq WMT19 ๋ชจ๋ธ์ ๋ค ๊ฐ์ ์ฒดํฌํฌ์ธํธ(model1.ptโmodel4.pt), ์์ค ๋ฐ ๋์ ์ฌ์ (dict.en.txt, dict.ru.txt), ๊ทธ๋ฆฌ๊ณ BPE ์ฝ๋ ํ์ผ(bpecodes)์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ํ์ผ๋ค์ ๊ฒํ ํ์ฌ ๋ชจ๋ธ์ ์ฒดํฌํฌ์ธํธ, ์ดํ, ํ ํฐํ ์ํฐํฉํธ๋ฅผ ์ดํดํ์ต๋๋ค.
ํ ํฌ๋์ด์ ์ด์
ํ ํฌ๋์ด์ ์ธ์ฝ๋๋ ๊ธฐ์กด tokenization_xlm.py ํ์ผ์ ์ ์์์ผ ์ด์๋์์ต๋๋ค. ์ ์๋ tokenization_xlm.py๋ฅผ ๋ณต์ฌํ์ฌ tokenization_fsmt.py๋ก ๋ง๋ค๊ณ , ํด๋์ค ์ด๋ฆ์ XLM์์ FSMT๋ก ๋ฐ๊พธ๋ฉฐ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. WMT19 ๋ชจ๋ธ์ ๋ณ๋์ ์์ค ๋ฐ ๋์ ์ดํ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก, ํ ํฌ๋์ด์ ์ get_vocab๊ณผ vocab_size ์์ฑ์ ์์ค ์ดํ๋ฅผ ๋ฐํํ๋๋ก ์ค๋ฒ๋ผ์ด๋ํ์ต๋๋ค. BPE ์ฒ๋ฆฌ๋ fastBPE ์คํ์ผ(@@์ด ๋น์ต์ข ์๋ธ์๋์ ์ฌ์ฉ)์์ Transformers ์คํ์ผ(์ด ์ต์ข ์๋ธ์๋์ ์ฌ์ฉ)์ผ๋ก ๋ณ๊ฒฝ๋์๊ณ , ์ดํ ๋งคํ์ fairseq.data.dictionary.Dictionary.load๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฐ๋ฅธ ID ๋งคํ์ ์ป๊ธฐ ์ํด ์ํ๋์์ต๋๋ค. ๋์ฝ๋๋ ๋์ค์ ์ถ๋ ฅ ID๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๊ณ , BPE ๋ง์ปค๋ฅผ ์ ๊ฑฐํ๊ณ , Moses ๋ํ ํฐํ๋ฅผ ์ ์ฉํ์ฌ ์์ฑ๋์์ต๋๋ค.
๋ชจ๋ธ ๋ณํ ๋ฐ ์ํคํ ์ฒ
๋ณํ ์คํฌ๋ฆฝํธ convert_fsmt_original_pytorch_checkpoint_to_pytorch.py๋ BART ๋ณํ ์คํฌ๋ฆฝํธ์์ ์์ํ์ฌ ํ์ํ ๋ถ๋ถ์ ์ ์ง์ ์ผ๋ก ์ถ๊ฐํ์ฌ ๋ง๋ค์ด์ก์ต๋๋ค. ๋ชจ๋ธ ๊ฐ์ค์น๋ fairseq ํ๋ธ API๋ฅผ ์ฌ์ฉํ์ฌ fairseq ์ฒดํฌํฌ์ธํธ์์ ์ถ์ถ๋์์ผ๋ฉฐ, ์ด๋ ์ด์ ์ ๊ฒฐํฉ๋ in_proj ๊ฐ์ค์น๋ฅผ ๋ณ๋์ k/q/v ํฌ์์ผ๋ก ๋ณํํ๋ ์์ ๋ ์ฒ๋ฆฌํฉ๋๋ค. ๊ตฌ์ฑ ์ธ์๋ fairseq ์ธ์์์ Transformers FSMTConfig๋ก ๋งคํ๋์์ผ๋ฉฐ, ์ฌ๊ธฐ์๋ activation_dropout, attention_dropout, d_model, dropout, max_position_embeddings, num_hidden_layers, src_vocab_size, tgt_vocab_size, ๊ทธ๋ฆฌ๊ณ bos, pad, eos ํ ํฐ ID๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ชจ๋ธ ์ํคํ ์ฒ๋ modeling_bart.py์์ ํ์๋์์ผ๋ฉฐ, fairseq์ TransformerEncoder์ TransformerDecoder์ ๋ง๊ฒ ๋ ์ด์ด๋ฅผ ์กฐ์ ํ์ต๋๋ค(์: ์ฌ์ฉํ์ง ์๋ ๋ ์ด์ด ์ ๊ฑฐ, ๋๋ฝ๋ ๋ ์ด์ด ์ถ๊ฐ, ์์ค ๋ฐ ๋์ ์ดํ ํฌ๊ธฐ์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ ๋ณด์ฅ). ์ฌ์ธusoidal ์์น ์๋ฒ ๋ฉ์ TorchScript ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑ์ํค๋ฉด์ ๊ฒฐ์ ์ ๊ฐ์ค์น๊ฐ ์ ์ฅ๋์ง ์๋๋ก ์ผ๋ฐ nn.Embedding ์๋ธํด๋์ค๋ก ์ฌ๊ตฌํ๋์์ต๋๋ค.
ํ ์คํธ ๋ฐ ํ๊ฐ
ํ ํฌ๋์ด์ ์ ๋ชจ๋ธ๋ง ๊ตฌ์ฑ ์์์ ๋ํ ๋จ์ ํ ์คํธ๊ฐ ์ถ๊ฐ๋์์ผ๋ฉฐ, ๊ธฐ์กด BART ํ ์คํธ ์ค์ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ง๋ง ๋์ผ ์ดํ ์ค์ ์ ๋ง๊ฒ ์กฐ์ ๋์์ต๋๋ค. ๋น ๋ฅธ CI ํ ์คํธ๋ฅผ ์ํด ๋ฌด์์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง ์์ ๋ชจ๋ธ์ด ์์ฑ๋์์ต๋๋ค. ์๋ ๊ฒ์ฆ ์คํฌ๋ฆฝํธ๋ ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ฉด์ fairseq์ Transformers ๊ตฌํ์ ์ถ๋ ฅ์ ํ ํฐ๋ณ ๋ฐ ๋ฌธ์ฅ๋ณ๋ก ๋น๊ตํ์ต๋๋ค. ๋น ํ์ ๋์์ด ์กฐ์ ๋์์ต๋๋ค: ์ด์๋ ๋ชจ๋ธ์ early_stopping=False๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋น ํฌ๊ธฐ 5๋ฅผ ์ฌ์ฉํ ๋ fairseq์ ๊ธฐ๋ณธ๊ฐ์ธ early_stopping=True๋ณด๋ค ๋์ BLEU ์ ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค. WMT19 ํ ์คํธ ์ธํธ์์ sacrebleu๋ฅผ ์ฌ์ฉํ ํ๊ฐ์์ ๋น ํฌ๊ธฐ 5์ ๊ธธ์ด ํจ๋ํฐ 1.1์ ์ ์ฉํ ruโen ๋ฐฉํฅ์ ๋ํด BLEU ์ ์ 39.0498์ ์ป์์ต๋๋ค. ์ ์๋ ์๋ fairseq ๋ ผ๋ฌธ์ด ๋ค ๊ฐ์ ์ฒดํฌํฌ์ธํธ ์์๋ธ๊ณผ ์ฌ์์ ์ง์ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ๋์ ์ ์๋ฅผ ๋ณด๊ณ ํ๋ค๊ณ ์ธ๊ธํ๋๋ฐ, ์ด๋ ์ด์์์ ์ฌํ๋์ง ์์์ต๋๋ค.
์ ๋ก๋, ํตํฉ ๋ฐ ์๋ํ
๋ณํ ํ ๋ชจ๋ธ ํ์ผ์ ์ ์์ ๊ณ์ ํ์ Hugging Face S3์ ์ ๋ก๋๋์๊ณ , posteriormente facebook ๋ฐ allenai ์กฐ์ง์ผ๋ก ์ด๋๋์์ต๋๋ค. ๋ชจ๋ธ์ ํ์ค API๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๋ํ ์ ์์ผ๋ฉฐ, ์๋ฅผ ๋ค์ด FSMTTokenizer.from_pretrained("facebook/wmt19-en-ru))์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. AutoConfig, AutoTokenizer, ๋ฐ AutoModelWithLMHead๋ fsmt ๋ชจ๋ธ ์ ํ์ ์ธ์ํ๋๋ก ์ ๋ฐ์ดํธ๋์ด ํ์ดํ๋ผ์ธ ์คํ์ผ ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ๊ฐ ๋ณํ์ ๋ํ ๋ชจ๋ธ ์นด๋๊ฐ ์์ฑ๋์ด ์ธ์ด ์, ๋ผ์ด์ ์ค, ๋ฐ์ดํฐ์ , ํ๊ฐ ๋ฉํธ๋ฆญ์ ์์ธํ ์ค๋ช ํ์ต๋๋ค. ๋ฌธ์๋ ๊ธฐ์กด BART ๋ฌธ์๋ฅผ FSMT์ ๋ง๊ฒ ์ ์์์ผ ์ถ๊ฐ๋์์ผ๋ฉฐ, make docs๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ํ๋ก์ธ์ค๊ฐ ๊ฒ์ฆ๋์์ต๋๋ค.
์์ฌ์ ๋ฐ ๋ง๋ฌด๋ฆฌ ์๊ฐ
WMT19 ์์คํ ์ Transformers๋ก ์ด์ํจ์ผ๋ก์จ ๋ค์ด๋ก๋ ํฌ๊ธฐ๊ฐ ์ฝ 13 GB(์ตํฐ๋ง์ด์ ์ํ ํฌํจ)์์ ๋ชจ๋ธ๋น ์ฝ 1.1 GB๋ก ์ค์ด๋ค์ด, ๋ค์ด์คํธ๋ฆผ ์ฌ์ฉ์ ์ํ ๋ฒ์ญ๊ธฐ์ ์ ๊ทผ์ฑ์ด ๋์์ก์ต๋๋ค. ์ด์์ ์๋์ ๋ค ๊ฐ ์ฒดํฌํฌ์ธํธ ์์๋ธ์ ์ง์ํ์ง ์์ง๋ง, ๋จ์ผ ์ฒดํฌํฌ์ธํธ ๋ชจ๋ธ์ ์ฌ์ ํ ๊ฐ๋ ฅํ ๋ฒ์ญ ํ์ง์ ๋ฌ์ฑํฉ๋๋ค. ์ด ์์ ์ ๊ธฐ์กด Transformers ๊ตฌ์ฑ ์์(BART ๊ธฐ๋ฐ ๋ชจ๋ธ๋ง, XLM ๊ธฐ๋ฐ ํ ํฐํ, ๋ณํ ์ ํธ๋ฆฌํฐ)๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ์ ์์์ผ ๊ณ ํ์ง fairseq ๋ชจ๋ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ธ์ฌ ์ ์์์ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ ์๋ PR ๊ฒํ ๊ณผ์ ์์ Sam Shleifer์ ๋ฉํ ๋ง๊ณผ Lysandre Debut ๋ฐ Sylvain Gugger์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋ฅผ ํํ์ต๋๋ค.}
{"summary": "ํ๊น ํ์ด์ค๋ fairseq WMT19 ๋ฒ์ญ ๋ชจ๋ธ(enโru, ruโen, deโen, enโde)๋ฅผ ๐ค Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ด์ํ์ฌ, ์ฌ์ฉ์๊ฐ ํ์ค Transformers API๋ฅผ ํตํด ์ด๋ฌํ ๊ณ ํ์ง ๋ฒ์ญ๊ธฐ๋ฅผ ๋ก๋ํ๊ณ ์คํํ ์ ์๋๋ก ํ์ต๋๋ค."}
{"title": "fairseq WMT19 ๋ฒ์ญ ์์คํ ์ ๐ค Transformers๋ก ์ด์"}]}null){