Huggingface Transformers ๋ชจ๋ธ ๋ง๋ค๊ธฐ
Huggingface Transformers๋ NLP ๋ถ์ผ์์ ์ง์ง ์ต๊ณ ์ ํจํค์ง ์ค ํ๋๋ค. Transformers ๋์ BERT, ๊ทธ๋ฆฌ๊ณ BERTology๊ฐ ๋ฌด์ฒ ๋ง์ด ๋ฐ์ ํ๊ณ , ๊ทธ ๋์ KcBERT๋ KcELECTRA๊ฐ์ ๋ชจ๋ธ๋ ์ฝ๊ฒ ํ์ฐ๋ ์ ์์๋ค.
ํํธ, KcBERT๋ KcELECTRA, KcGPT ๋ชจ๋ ์ด๋ฏธ Transformers ํจํค์ง์ ๊ตฌํ๋ BERT,ELECTRA,GPT-2 ๋ชจ๋ธ์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ๊ฒ์ด๋ผ model ๊ตฌ์กฐ์์ ์ ํ ์ฐจ์ด๊ฐ ์๊ธฐ๋ ํ๊ณ , ์ด๋ก ์ธํด ๋ด๋ถ config ์์ ํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง ๊ทธ ์ด์์ ์์ ์ ํ๋ ๊ฒ์ ์ด๋ ต๋ค.
์๋ก์ด ๋
ผ๋ฌธ์ด ๋์์ ๊ทธ๊ฑธ ๊ตฌํํ๋ค๊ฑฐ๋, ํน์ ์๋ก์ด ์์ด๋์ด์ ๋ฐ์์ด ๋ ์ฌ๋ผ ์๋ก์ด ๋ชจ๋ธ ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด ์ด๊ฒ์ ์ง๋ ๊ฒ ๋ถํฐ๊ฐ ๋ฌธ์ ๋ค.
Transformers + CookieCutter ๐ช
Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณด๋ค ์ฌ์ด ๋ชจ๋ธ ์ถ๊ฐ๋ฅผ ์ํด template์ ์ ๊ณตํ๊ณ ์๋ค. ์ฟ ํค์ปคํฐ๋ผ๋, ํ
ํ๋ฆฟ ๊ธฐ๋ฐ Code generation ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ด์ ์์ฃผ ์ฝ๊ฒ Boilerplate๋ฅผ ๊ฐ๋ค ์ธ ์ ์๋ค.
ํ๊ฒฝ ์ก๊ธฐ
conda env, ํน์ python venv ๋ฑ์ผ๋ก ๊ฐ์ํ๊ฒฝ์ ๋ง๋ ๋ค ์งํํ๋๊ฒ ์ข๋ค.
์ฐ์ Transformers ๊ฐ๋ฐ์ ํ์ํ ํจํค์ง๋ฅผ ๋ชจ๋ ์ค์นํด ์ค๋ค.
git clone https://github.com/huggingface/transformers cd transformers pip install -e ".[dev]"
๊ทธ๋ฆฌ๊ณ ์๋ ์ปค๋งจ๋๋ก ์ ๋ชจ๋ธ ์์ฑ์ ์์ํ์.
transformers-cli add-new-model
์ ๋ช
๋ น์ด ์
๋ ฅ์ ์๋์ ๊ฐ์ด ๋ชจ๋ธ ๋ช
์ ์
๋ ฅํ๊ฒ ํ๋๋ฐ, ์ ๋นํ convention์ ๋ง๊ฒ ๋ง์ถฐ์ฃผ๋ฉด ๋๋ค.
modelname [<ModelNAME>]: uppercase_modelname [<MODEL_NAME>]: lowercase_modelname [<model_name>]: camelcase_modelname [<ModelName>]: authors [The HuggingFace Team]: checkpoint_identifier [organisation/<model_name>-base-cased]:
๊ทธ๋ฆฌ๊ณ Tokenizer๊ฐ BERT์ฒ๋ผ ๋์ํ๋์ง ๋
์ ๊ท๊ฒฉ์ ์ฌ์ฉํ๋์ง ์ ํํ๋ฉด..
Select tokenizer_type: 1 - Based on BERT 2 - Standalone Choose from 1, 2 [1]:
์ง , ๋ชจ๋ธ ์ค๋ช
์ ์ํ .rst ํ์ผ์ ๋น๋กฏํด ๋ชจ๋ธ config, modeling py ํ์ผ, Tokenization ํ์ผ๊น์ง ๋ชจ๋ ์๊ธด๋ค.
docs/source/model_doc/<model_name>.rst src/transformers/models/<model_name>/configuration_<model_name>.py src/transformers/models/<model_name>/modeling_<model_name>.py src/transformers/models/<model_name>/modeling_tf_<model_name>.py src/transformers/models/<model_name>/tokenization_<model_name>.py tests/test_modeling_<model_name>.py tests/test_modeling_tf_<model_name>.py
๊ทธ๋ฟ๋ง ์๋๋ผ,
AutoModel, AutoTokenizer
๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ชจ๋ธ __init__
์ ์๋ก์ด ๋ชจ๋ธ์ด ์๋์ผ๋ก ์ถ๊ฐ๋๋ค.์ด๋๋ฅผ ์์ ํ ๊น?
๋ง์ฝ ๋ชจ๋ธ์ Position embedding๋ถ๋ถ๋ง ์์ ํ๊ณ ์ถ๋ค๋ฉด ์๋ ๋ถ๋ถ์์ (์ด๋ฆ์ด ํฐ๋ชจ์ธ ์ด์ ๋ ํ
์คํธ ๋ชจ๋ธ ์ด๋ฆ์ ํฐ๋ชจ๋ก ํ๊ธฐ ๋๋ฌธ์ด๋ค.)
TiMoBERTEmbeddings
๋ฅผ ์์ ํด์ฃผ๋ฉด ๋๋ค. ์ธ๋ถ ์ฝ๋๋ค ์ญ์ BERT ๋ฑ๊ณผ ๋์ผํ๊ฒ ๊ตฌํ๋์ด์๊ธฐ ๋๋ฌธ์, ํ์ํ ๋ถ๋ถ๋ง ์์ ํด์ ์๋ก์ด ์์ด๋์ด๋ฅผ ๋ฐ๋ก๋ฐ๋ก ํ
์คํธ ํด๋ณผ ์ ์๋ค!
ย