/nanoChatGPT

OpenAI ChatGPT from scratch ๐Ÿš€

Primary LanguageJupyter NotebookApache License 2.0Apache-2.0

nanoChatGPT

Built a sLLM based on GPT and inspired by LLAMA.

TODOS

  • Crawling Good Web Source and Construct Dataset
  • Pretrain GPT with Korean Dataset (NAVER, NAMU, WIKIPEDIA...)
  • Model Improvement (RoFormer, ALBERT, SiLU, GELU, etc)
  • Prepare Prompt for prompt engineering
  • Prompt Translation for Korean Data.
  • Fine-tuning GPT with custom prompt.
  • Evaluation with Various Performance Dataset
  • Simple RLHF.
  • Custom RLHF website.
  • Customize GPT for adversarial training.
  • Evaluation.
  • Make things work!
  • Deploy Custom ChatGPT.

GPT-3์˜ ์„ฑ๊ณผ๋Š” ๋ฐ”๋กœ ๊ฑฐ๋Œ€ํ•œ ์–ธ์–ด ๋ง๋ญ‰์น˜๋ฅผ ์‹ ๊ฒฝ๋ง์ด ํ•™์Šตํ•˜๋ฉด ์ธ๊ฐ„์ด ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๊ทธ๋Ÿด๋“ฏํ•œ ๋ง์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์–ธ์–ด๋ž€ ์–ด๋–ค ๊ฐœ๋…์„ ์„ค๋ช…ํ•˜๊ณ  ์ธ๊ฐ„์˜ ์ƒ๊ฐ๊ณผ ์•„์ด๋””์–ด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์ˆ˜๋‹จ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ธ๊ณต์ง€๋Šฅ์ด ์ด๋Ÿฌํ•œ ์–ธ์–ด๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์Šต๋“ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ธ๊ฐ„๊ณผ ์ธ๊ณต์ง€๋Šฅ์˜ ๋งค๋„๋Ÿฌ์šด ์˜์‚ฌ์†Œํ†ต์ด ๊ฐ€๋Šฅํ•ด์งˆ ๊ฒƒ์ด๋‹ค.

AGI์˜ ์‹œ๋Œ€๋Š” ๊ณผ์—ฐ ๋„๋ž˜ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋‹จ์ง€ ๋‹จ์–ด๋ฅผ ์ธ๊ฐ„๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๊ทธ๋Ÿด๋“ฏํ•˜๊ฒŒ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ทธ๊ฒƒ์ด ์ธ๊ณต์ง€๋Šฅ์ด ์ง€๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ๋ณด๊ธฐ๋Š” ์–ด๋ ต๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์–ธ์–ด๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ณผ์ •์„ ๋ณด๋ฉด ์ƒ๊ฐ์ด ์‚ด์ง ๋‹ฌ๋ผ์ง„๋‹ค. ํƒœ์–ด๋‚˜์„œ๋ถ€ํ„ฐ ๋ถ€๋ชจ๋‹˜์ด ํ•˜๋Š” ๋ง์„ ๋“ฃ๊ณ  ๋”ฐ๋ผํ•˜๋ฉด์„œ ์–ธ์–ด์— ๋Œ€ํ•œ ํ•™์Šต์„ ๊ฑฐ๋“ญํ•˜์—ฌ ์–ธ์–ด๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ์‚ฌํ•˜๋Š” ์šฐ๋ฆฌ์ฒ˜๋Ÿผ GPT์˜ ๋ฐฉ๋ฒ•์ด AGI๋กœ ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ผ ์ˆ˜๋„ ์žˆ๋‹ค. GPT๋ชจ๋ธ์ด ์ ์  ๊ฑฐ๋Œ€ํ•ด์ ธ์„œ 4, 5, 6๊นŒ์ง€ ์ง„ํ™”ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ฒฐ๊ตญ ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ•ด๋‹ต์„ ์–ป์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

GPT-3์€ ์—„์ฒญ๋‚˜๊ฒŒ ํฐ ํŒŒ๋ผ๋ฏธํ„ฐ์ˆ˜๋กœ ์••๋„์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์˜€๋‹ค. ํ•˜์ง€๋งŒ ์˜ณ์ง€ ์•Š๊ฑฐ๋‚˜ ํŽธํ–ฅ์ ์ธ ๊ธ€์„ ์•„๋ฌด๋ ‡์ง€ ์•Š๊ฒŒ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋กœ ๋Œ€๋‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ InstructGPT๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

Instruct GPT

์šฐ์„  ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์ค€๋น„ํ•œ๋‹ค. ๋Œ€๋Ÿ‰์˜ ์–ธ์–ด ์ฝ”ํผ์Šค๋กœ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ๊ณ ์ •ํ•œ ์ฑ„ <์ธํ’‹ ํ”„๋กฌํ”„ํŠธ>์— ์ถ”๋ก ํ•˜๊ณ ์ž ํ•˜๋Š” ์ž์—ฐ์–ด์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

์˜ˆ) <"๋„ˆ๋Š” ๊ต‰์žฅํ•˜๊ตฌ๋‚˜"๋ผ๋Š” ๋ฌธ์žฅ์˜ ๊ฐ์ •์€?> => <๊ธ์ •>

์ด ๋ฐฉ๋ฒ•์€ ๊ธฐ์กด์˜ fine-tuning๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ํƒœ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ์…‹์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์ด๋ฅผ ํ•™์Šต์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋ธ์—๊ฒŒ ์งˆ๋ฌธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์–ธ์–ด ๋ชจ๋ธ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋„˜์–ด๊ฐ€๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ๋ชจ๋ธ์—๊ฒŒ ์งˆ๋ฌธํ•˜๋Š” ๋ฐฉ๋ฒ•, ์ฆ‰ "ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•"์— ๋”ฐ๋ผ์„œ ๋ชจ๋ธ์˜ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์ขŒ์šฐ๋˜๊ธฐ์— ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์˜ ์ค‘์š”์„ฑ์ด ๊ต‰์žฅํžˆ ๋Œ€๋‘๋˜๊ณ  ์žˆ๋‹ค. ๊ฑฐ๋Œ€ํ•œ ์ฝ”ํผ์Šค๋กœ ์‚ฌ์ „ ํ•™์Šต๋œ ์–ธ์–ด ๋ชจ๋ธ์„ ํŠน์ •ํƒœ์Šคํฌ๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ธฐ์กด์˜ GPT ๋ชจ๋ธ์€ ๊ฐ„์ ‘์ ์œผ๋กœ ์ง€์‹œํ•œ ํ”„๋กฌํ”„ํŠธ์— ๋Œ€ํ•ด์„œ ๊ทธ๋Ÿด๋“ฏํ•œ ๊ธ€์„ ์จ๋‚ด๋ ค๊ฐ”๋‹ค. ํ•˜์ง€๋งŒ InstructGPT๋Š” ์ง์ ‘์ ์œผ๋กœ ๋ชจ๋ธ์—๊ฒŒ ์ง€์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

RLHF (reinforcement learning with human feedback)

  • Step 1: ์˜ˆ์ œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํ›„ supervised policy๋ฅผ ํ•™์Šต

    : GPT ๋ชจ๋ธ์ด ์ฃผ์–ด์ง„ ์ง€์‹œ๋ฌธ๋Œ€๋กœ ํ–‰๋™ํ•˜๋„๋ก ๊ฐ€๋ฅด์น˜๊ธฐ ์œ„ํ•ด์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์…‹์„ ๋งŒ๋“ค์–ด์„œ fine tuning์„ ์‹ค์‹œ

    ์ง€์‹œ ํ”„๋กฌํ”„ํŠธ์™€ ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฌผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์…‹์„ ์ •์˜. ๊ฒฐ๊ณผ๋ฌผ์€ ๋ผ๋ฒจ๋Ÿฌ์— ์˜ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • Step 2: ๊ฒฐ๊ณผ๋ฌผ์— ๋Œ€ํ•œ ์‚ฌ๋žŒ์˜ ์„ ํ˜ธ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šต => Reward Model ํ™•๋ณด

    : Comparison dataset์„ ์‚ฌ์šฉํ•ด Reward Model ํ•™์Šต

    Comparison dataset์€ ํ”„๋กฌํ”„ํŠธ์™€ ๊ทธ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฌผ๋“ค (4-9๊ฐœ), ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์„ ํ˜ธ๋„ ์ˆœ์œ„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

    Reward Model์€ ๊ฒฐ๊ณผ๋ฌผ๋“ค์— ๋Œ€ํ•œ ์‚ฌ๋žŒ์˜ ์„ ํ˜ธ๋„๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ์‹์„ํ˜ธ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  • Step 3. ๊ฐ•ํ™” ํ•™์Šต์„ ์‚ฌ์šฉํ•ด Reward Model์— ๋Œ€ํ•ด policy๋ฅผ ์ตœ์ ํ™” => InstructGPT

    : Proximal policy optimization algorithm(PPO)๋ฅผ ์‚ฌ์šฉ - Reward Model์„ ๋ณด์ƒํ•จ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ •์ฑ…์„ ์ตœ์ ํ™”์‹œํ‚ค๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•™์Šต์„ ์ง„ํ–‰ํ•œ๋‹ค.

      - 1) InstructGPT๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ณด๊ณ , ๊ทธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถ”๋ก ํ•œ๋‹ค.
      - 2) ์ด ๊ฒฐ๊ณผ๋ฌผ์„ Reward Model์ด ํ‰๊ฐ€ํ•˜์—ฌ reward๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
      - 3) ๋ณด์ƒ ๊ฐ’์ด InstructGPT์—๊ฒŒ ์ฃผ์–ด์ง€๊ณ , ๋ชจ๋ธ์€ ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์‚ฌ๋žŒ์ด ์›ํ•˜๋Š” ์•„์›ƒํ’‹์— ๋”์šฑ ๊ฐ€๊นŒ์šด ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๊ฒŒ ๋œ๋‹ค.