OpenAI GPT [[openai-gpt]]
๊ฐ์ [[overview]]
OpenAI GPT ๋ชจ๋ธ์ Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever๊ฐ ์์ฑํ Improving Language Understanding by Generative Pre-Training ๋ ผ๋ฌธ์์ ์ ์๋์์ต๋๋ค. ์ด๋ Toronto Book Corpus์ ๊ฐ์ ์ฅ๊ธฐ ์์กด์ฑ์ ๊ฐ์ง ๋๊ท๋ชจ ๋ง๋ญ์น๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ด ๋ชจ๋ธ๋ง์ผ๋ก ์ฌ์ ํ์ต๋ ์ธ๊ณผ์ (๋จ๋ฐฉํฅ) ํธ๋์คํฌ๋จธ์ ๋๋ค.
๋ ผ๋ฌธ์ ์ด๋ก์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์์ฐ์ด ์ดํด๋ ํ ์คํธ ํจ์, ์ง๋ฌธ ์๋ต, ์๋ฏธ ์ ์ฌ์ฑ ํ๊ฐ, ๋ฌธ์ ๋ถ๋ฅ์ ๊ฐ์ ๋ค์ํ ์์ ์ ํฌํจํฉ๋๋ค. ๋น๋ก ๋๊ท๋ชจ์ ๋ ์ด๋ธ์ด ์๋ ํ ์คํธ ๋ง๋ญ์น๊ฐ ํ๋ถํ๊ธฐ๋ ํ์ง๋ง, ์ด๋ฌํ ํน์ ์์ ์ ๋ํ ํ์ต์ ์ํ ๋ ์ด๋ธ๋ ๋ฐ์ดํฐ๋ ๋ถ์กฑํ์ฌ ํ๋ณ์ ์ผ๋ก ํ์ต๋ ๋ชจ๋ธ์ด ์ ์ ํ๊ฒ ์ฑ๋ฅ์ ๋ฐํํ๊ธฐ ์ด๋ ต์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ค์ํ ๋ ์ด๋ธ์ด ์๋ ํ ์คํธ ๋ง๋ญ์น์ ๋ํ ์ธ์ด ๋ชจ๋ธ์ ์์ฑ์ ์ฌ์ ํ์ต์ ์ํํ๊ณ , ๊ฐ ํน์ ๊ณผ์ ์ ๋ํ ํ๋ณ์ ๋ฏธ์ธ ์กฐ์ ์ ์ํํจ์ผ๋ก์จ ์ด๋ฌํ ๊ณผ์ ์์ ํฐ ์ฑ๊ณผ๋ฅผ ๋ฌ์ฑํ ์ ์์์ ๋ณด์ฌ์ค๋๋ค. ์ด์ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ, ์ฐ๋ฆฌ๋ ๋ชจ๋ธ ์ํคํ ์ฒ์ ์ต์ํ์ ๋ณํ๋ฅผ ์๊ตฌํ๋ฉด์ ํจ๊ณผ์ ์ธ ์ ์ด๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ฏธ์ธ ์กฐ์ ์ค์ ๊ณผ์ ์ธ์ ์ ๋ ฅ ๋ณํ(task-aware input transformation)์ ์ฌ์ฉํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์์ฐ์ด ์ดํด๋ฅผ ์ํ ๋ค์ํ ๋ฒค์น๋งํฌ์์ ์ฐ๋ฆฌ์ ์ ๊ทผ ๋ฐฉ์์ ํจ๊ณผ๋ฅผ ์ ์ฆํฉ๋๋ค. ์ฐ๋ฆฌ์ general task-agnostic ๋ชจ๋ธ์ ๊ฐ ๊ณผ์ ์ ํน๋ณํ ์ค๊ณ๋ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ ํ๋ณ์ ์ผ๋ก ํ์ต๋ ๋ชจ๋ธ๋ณด๋ค ๋ฐ์ด๋๋ฉฐ, ์ฐ๊ตฌ๋ 12๊ฐ ๊ณผ์ ์ค 9๊ฐ ๋ถ๋ฌธ์์ ์ต์ฒจ๋จ ์ฑ๋ฅ(state of the art)์ ํฌ๊ฒ ํฅ์์ํต๋๋ค.
Write With Transformer๋ Hugging Face๊ฐ ๋ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ์ฌ๋ฌ ๋ชจ๋ธ์ ์์ฑ ๋ฅ๋ ฅ์ ๋ณด์ฌ์ฃผ๋ฉฐ ๊ทธ ์ค์๋ GPT๋ ํฌํจ๋์ด ์์ต๋๋ค.
์ด ๋ชจ๋ธ์ thomwolf์ ์ํด ๊ธฐ์ฌ๋์์ผ๋ฉฐ, ์๋ณธ ์ฝ๋๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
์ฌ์ฉ ํ [[usage-tips]]
- GPT๋ ์ ๋ ์์น ์๋ฒ ๋ฉ์ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ด๋ฏ๋ก ์ ๋ ฅ์ ์ผ๋ฐ์ ์ผ๋ก ์ผ์ชฝ๋ณด๋ค๋ ์ค๋ฅธ์ชฝ์ ํจ๋ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
- GPT๋ ์ธ๊ณผ ์ธ์ด ๋ชจ๋ธ๋ง(Causal Language Modeling, CLM) ๋ชฉํ๋ก ํ์ต๋์๊ธฐ ๋๋ฌธ์ ์ํ์ค์์ ๋ค์ ํ ํฐ์ ์์ธกํ๋ ๋ฐ ๊ฐ๋ ฅํ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด run_generation.py ์์ ์คํฌ๋ฆฝํธ์์ ๋ณผ ์ ์๋ฏ์ด GPT-2๋ ๊ตฌ๋ฌธ์ ์ผ๋ก ์ผ๊ด๋ ํ ์คํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ฐธ๊ณ :
OpenAI GPT ๋
ผ๋ฌธ์ ์๋ ํ ํฐํ ๊ณผ์ ์ ์ฌํํ๋ ค๋ฉด ftfy์ SpaCy๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค:
pip install spacy ftfy==4.4.3
python -m spacy download en
ftfy์ SpaCy๋ฅผ ์ค์นํ์ง ์์ผ๋ฉด [OpenAIGPTTokenizer]๋ ๊ธฐ๋ณธ์ ์ผ๋ก BERT์ BasicTokenizer๋ฅผ ์ฌ์ฉํ ํ Byte-Pair Encoding์ ํตํด ํ ํฐํํฉ๋๋ค(๋๋ถ๋ถ์ ์ฌ์ฉ์ ๋ฌธ์ ๊ฐ ์์ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์).
๋ฆฌ์์ค [[resources]]
OpenAI GPT๋ฅผ ์์ํ๋ ๋ฐ ๋์์ด ๋๋ ๊ณต์ Hugging Face ๋ฐ ์ปค๋ฎค๋ํฐ(๐ ํ์) ๋ฆฌ์์ค ๋ชฉ๋ก์ ๋๋ค. ์ฌ๊ธฐ์ ๋ฆฌ์์ค๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด, Pull Request๋ฅผ ์ด์ด์ฃผ์๋ฉด ๊ฒํ ํ๊ฒ ์ต๋๋ค! ๋ฆฌ์์ค๋ ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ ๋ณต์ ํ์ง ์๊ณ ์๋ก์ด ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- SetFit์ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ถ๋ฅ์์ OpenAI GPT-3์ ๋ฅ๊ฐํ๋ ๋ฐฉ๋ฒ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ.
- ์ถ๊ฐ ์๋ฃ: ํ ์คํธ ๋ถ๋ฅ ๊ณผ์ ๊ฐ์ด๋
- Hugging Face์ ํจ๊ป ๋น์์ด GPT-2 ๋ชจ๋ธ์ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ ๋ธ๋ก๊ทธ.
- GPT-2์ ํจ๊ป Transformers๋ฅผ ์ฌ์ฉํ ์ธ์ด ์์ฑ์ ๋ค์ํ ๋์ฝ๋ฉ ๋ฐฉ๋ฒ์ ๋ํ ๋ธ๋ก๊ทธ.
- Scratch์์ CodeParrot ๐ฆ์ ํ๋ จํ๋ ๋ฐฉ๋ฒ, ๋๊ท๋ชจ GPT-2 ๋ชจ๋ธ์ ๋ํ ๋ธ๋ก๊ทธ.
- GPT-2์ ํจ๊ป TensorFlow ๋ฐ XLA๋ฅผ ์ฌ์ฉํ ๋ ๋น ๋ฅธ ํ ์คํธ ์์ฑ์ ๋ํ ๋ธ๋ก๊ทธ.
- Megatron-LM์ผ๋ก ์ธ์ด ๋ชจ๋ธ์ ํ๋ จํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ธ๋ก๊ทธ.
- ์ข์ํ๋ ์ํฐ์คํธ์ ์คํ์ผ๋ก ๊ฐ์ฌ๋ฅผ ์์ฑํ๋๋ก GPT2๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ ธํธ๋ถ. ๐
- ์ข์ํ๋ ํธ์ํฐ ์ฌ์ฉ์์ ์คํ์ผ๋ก ํธ์์ ์์ฑํ๋๋ก GPT2๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ ธํธ๋ถ. ๐
- ๐ค Hugging Face ์ฝ์ค์ ์ธ๊ณผ ์ธ์ด ๋ชจ๋ธ๋ง ์ฅ.
- [
OpenAIGPTLMHeadModel]์ ์ธ๊ณผ ์ธ์ด ๋ชจ๋ธ๋ง ์์ ์คํฌ๋ฆฝํธ, ํ ์คํธ ์์ฑ ์์ ์คํฌ๋ฆฝํธ ๋ฐ ๋ ธํธ๋ถ์ ์ํด ์ง์๋ฉ๋๋ค. - [
TFOpenAIGPTLMHeadModel]์ ์ธ๊ณผ ์ธ์ด ๋ชจ๋ธ๋ง ์์ ์คํฌ๋ฆฝํธ ๋ฐ ๋ ธํธ๋ถ์ ์ํด ์ง์๋ฉ๋๋ค. - ์ถ๊ฐ ์๋ฃ: ์ธ๊ณผ ์ธ์ด ๋ชจ๋ธ๋ง ๊ณผ์ ๊ฐ์ด๋
- Byte-Pair Encoding ํ ํฐํ์ ๋ํ ๊ฐ์ ์๋ฃ.
OpenAIGPTConfig [[transformers.OpenAIGPTConfig]]
[[autodoc]] OpenAIGPTConfig
OpenAIGPTTokenizer [[transformers.OpenAIGPTTokenizer]]
[[autodoc]] OpenAIGPTTokenizer - save_vocabulary
OpenAIGPTTokenizerFast [[transformers.OpenAIGPTTokenizerFast]]
[[autodoc]] OpenAIGPTTokenizerFast
OpenAI specific outputs [[transformers.models.openai.modeling_openai.OpenAIGPTDoubleHeadsModelOutput]]
[[autodoc]] models.openai.modeling_openai.OpenAIGPTDoubleHeadsModelOutput
[[autodoc]] models.openai.modeling_tf_openai.TFOpenAIGPTDoubleHeadsModelOutput
OpenAIGPTModel [[transformers.OpenAIGPTModel]]
[[autodoc]] OpenAIGPTModel - forward
OpenAIGPTLMHeadModel [[transformers.OpenAIGPTLMHeadModel]]
[[autodoc]] OpenAIGPTLMHeadModel - forward
OpenAIGPTDoubleHeadsModel [[transformers.OpenAIGPTDoubleHeadsModel]]
[[autodoc]] OpenAIGPTDoubleHeadsModel - forward
OpenAIGPTForSequenceClassification [[transformers.OpenAIGPTForSequenceClassification]]
[[autodoc]] OpenAIGPTForSequenceClassification - forward
TFOpenAIGPTModel [[transformers.TFOpenAIGPTModel]]
[[autodoc]] TFOpenAIGPTModel - call
TFOpenAIGPTLMHeadModel [[transformers.TFOpenAIGPTLMHeadModel]]
[[autodoc]] TFOpenAIGPTLMHeadModel - call
TFOpenAIGPTDoubleHeadsModel [[transformers.TFOpenAIGPTDoubleHeadsModel]]
[[autodoc]] TFOpenAIGPTDoubleHeadsModel - call
TFOpenAIGPTForSequenceClassification [[transformers.TFOpenAIGPTForSequenceClassification]]
[[autodoc]] TFOpenAIGPTForSequenceClassification - call