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){

Sources