๋ถ๊ทน์ฑ ์๋น์ค ์ ๋ณด ๋ฐ๋ก๊ฐ๊ธฐ
PolarStar_AIInfra ์ ์ฒด ๋ค์ด์ด๊ทธ๋จ
๋ฐฑ์๋ ๊ฐ๋ฐ์์ ์๋ฒ์ค โ IDC โ ํด๋ผ์ฐ๋ ์๋น์ค๋ก ๋์ด์ค๋ฉด์
๊ฐ๋ฐ์๋ค์ ๋ถ์์ ์ธ ๊ฒ์ ๊ด๋ฆฌํ๋ ์๊ฐ์ ์ค์ด๊ณ
์ค๋ก์ง, ๊ฐ๋ฐ๊ณผ ์๋น์ค์ ์ง์คํ ์ ์๋ ํ๊ฒฝ์ ๋ง๋ค์ด์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํฐ ์์ฐ์ฑ๊ณผ ํจ์จ์ฑ์ ์ฆ๋๋ก ์ด์ด์ก์ต๋๋ค.
์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ์์๋, ์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ์๊ฐ ์๋น์ค์ ์ ํฉํ ๋ชจ๋ธ์ ์ ์ ํ๊ณ
์ด๋ฅผ ๋น๊ต ํ๊ฐ ๋ฐ ๋ถ์ํ๊ณ ์ธ์ฌ์ดํธ๋ฅผ ์ป๋๋ฐ์ ์ง์คํ ์ ์๋ ๊ฐ๋ฐ ํ๊ฒฝ ๋ฐ ์ธํ๋ผ๊ฐ ๊ฐ์ถ์ด์ ธ ์์ผ๋ฉด
์ฐธ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ์์ต๋๋ค.
์ฝ๋์์ ๋ฐ์ํ๋ ๋ถ์์ ์ธ ๋ฌธ์ ์ ์ ๊ฒฝ์ฐ๋ ์๊ฐ์ ์ต์ํํ๊ณ
์๊ฐ์ ์ฆ๊ฐ์ ์ผ๋ก ์ฝ๋๋ก ๊ตฌํํ๊ณ ์ฆ๊ฐ์ ์ผ๋ก ํ์ธ ๋ฐ ๋ถ์ํ์
๋น ๋ฅด๊ณ ํจ๊ณผ์ ์ธ ์ธ๊ณต์ง๋ฅ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ค์ด ๋ผ ์ ์๋๋ก ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ์์ต๋๋ค.
์ด ๋ ํฌ์งํ ๋ฆฌ์์๋ ์์ ๊ฐ์ ์คํ Infra ์ฝ๋์ ์ด๋ฅผ ๋ถ๊ทน์ฑ ํ๋ก์ ํธ์ ์ ์ฉํ ์ฝ๋๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
Infra Repository๋ ์๋์ ๊ฐ์ ๊ฐ๋ฐํ๊ฒฝ์ ๋ชฉํ๋ก ๊ฐ๋ฐ๋์์ต๋๋ค.
- ์ฝ๋ ์์ฑ ๋ฐฉ์์ ์ผ๊ดํํ์ฌ, ์ฒ์ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฝ๋๋ก ์ค๊ณํฉ๋๋ค.
- ๊ท๊ฒฉํ๋ ์ฝ๋๋ฅผ ์ด์ฉํด ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ ๋๋ค.
- ์ฝ๋๊ฐ ๊ท๊ฒฉํ๋์ด ์๋ค๋ ์ ์ ์ด์ฉํด ์คํ์ ์์ํ ๋ ์๋์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ์ค๊ณํฉ๋๋ค.
- ๋ชจ๋ธ ์คํ ์ ์ฝ๋ ์์ ์ ์ต์ํํ๋๋ก ํ์ฌ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ต์ํํฉ๋๋ค.
- ๋ชจ๋ธ ์คํ ์ฝ๋์ ์คํ Configuration์ ์์ ํ ๋ถ๋ฆฌํ์ฌ ์คํ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ๋ชจ๋ธ ์คํ ์ ํด๋น ์คํ์ด ์ด๋ค Configuration์์ ์ํ๋์๋์ง๋ฅผ ์๋์ผ๋ก ๊ธฐ๋กํ ์ ์๊ฒ ์ฝ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์คํ์ด ์งํ๋๋ ๋์, ์คํ์ด ์ข ๋ฃ๋์์ ๋ ์คํ ๊ฒฐ๊ณผ ๋ฐ ํํฉ์ ์ฆ๊ฐ ์๊ฐํํ์ฌ ์ธ์ฌ์ดํธ๋ฅผ ์ป์ ์ ์๋๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ๊ฐ ์์ ๋จ์๋ณ๋ก ๋ชจ๋ํํ๊ณ ์ฝ๋ ๊ฐ ์ํธ ์ข ์์ฑ์ ์ต์ํ ์ํค๋๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์ฌ Test ๋ฐ Refactoring, ์ฝ๋์ ์ผ๋ถ ๋ณํ์ด ์ฉ์ดํ๋๋ก ํฉ๋๋ค.
- ์ฌ๊ฑด์ด ํ๋ฝํ๋ค๋ฉด TDD๋ฅผ ์ ์ฉํ์ฌ ๊ฐ ๋ชจ๋๋ณ๋ก ๋ ๋ฆฝ์ ์ธ TestCase๋ฅผ ํต๊ณผํ๋์ง ์ฌ๋ถ๋ฅผ ํ ์คํธํ์ฌ ์ฝ๋ ํ ์คํธ๋ฅผ ์ฉ์ดํ๊ฒ ํฉ๋๋ค. (์ถํ ๊ณํ ์ค)
- ๋ชจ๋์ ๋ง์น ๋ ๊ณ ์กฐ๋ฆฝํ๋ฏ์ด ์กฐ๋ฆฝํ์ฌ ํ์ฉํ ์ ์๊ฒ ๊ตฌ์ฑํ์ฌ ์คํ ์ ์ฝ๋๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๋๋ก ์ค๊ณํฉ๋๋ค.
- ํ์ ์ ์ฉ์ดํ ์ ์๋๋ก ๋ชจ๋ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํฉ๋๋ค.
- ํ์ ํ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ๋น๊ต๋ถ์ํ ์ ์๋๋ก ์ฝ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- Pytorch์ device Setting ํ๋ ๋ถ๋ถ ๋ฑ ๋ถ์์ ์ธ ๊ฒ์ ์๋ํ๋์ด ๋์๊ฐ ์ ์๋๋ก ์ค๊ณํฉ๋๋ค.
- Sweeping ์๋ํ ๋ฐ ์๊ฐํ ๋ฑ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ฐ์ํฉ๋๋ค.
์์ ๊ฐ์ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด
์ ํฌ๋ ์๋์ ๊ฐ์ ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์์ต๋๋ค.
Pytorch Lightning์ AI Model ์ฝ๋๋ฅผ ๊ท๊ฒฉํํ๊ณ , ์ด๋ฅผ ํ์ฉํ ๋ค์ํ ํธ์ ๊ธฐ๋ฅ๊ณผ Model Lifecycle ๊ด๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ ์ ์ด์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
- ์ฝ๋๋ฅผ ๊ท๊ฒฉํ ํ ์ ์๋ค๋ 1๋ฒ ๋ชฉํ, 7๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
- ์คํ ๊ฒฐ๊ณผ๋ฅผ Wandb์ ์ฐ๋ ์ wandblogger๋ฅผ ์ง์ํ๋ค๋ ์ ์์ 3๋ฒ ๋ชฉํ, 5๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
- Data Module, Model Module, Task Module, Training Module, Inference Module๋ก ๋ถ๋ฆฌํ๊ธฐ ์ฉ์ดํ๋ค๋ ์ ์์ 4๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
- Device๋ฅผ ์๋์ผ๋ก Settingํ๋ ๊ธฐ๋ฅ ๋ฑ ๋ค์ํ ํธ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค๋ ์ ์์ 6๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ํด์ง ์ด๋ฆ์ ํจ์๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๊ท๊ฒฉํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
Hydra๋ ์คํ์ ๊ด๋ จ๋ Configutration ํ์ผ์ ์ฝ๋๋ก๋ถํฐ ๋ถ๋ฆฌํ ์ ์๊ณ pyํ์ผ์์ ์์ ์์๋ ๋ค์ํ plugin๋ ํ์ฉํ ์ ์๋๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ ์ ์ด์ ๋ ์๋์ ๊ฐ์ต๋๋ค.
- Configuration ํ์ผ์ ๋ถ๋ฆฌํ์ฌ ์คํ ์ ์ฝ๋ ์์ ์ ์ต์ํํ ์ ์๋ค๋ ์ ์์ 2๋ฒ ๋ชฉํ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
- Configuration ํ์ผ๋ก ์คํ ๋ด์ญ์ด ์๋ ์ ์ฅ๋๋๋ก ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ ์์ 3๋ฒ ๋ชฉํ์ ๋ถํฉํ๊ณ ํ์ผ ํํ์ด๋ฏ๋ก ๊ณต์ ๊ฐ ์ฉ์ดํ๋ค๋ ์ ์์ 5๋ฒ ๋ชฉํ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด Config.yaml ํ์ผ์์ ์คํ์ ๊ด๋ จ๋ ์ฌ๋ฌ ์ค์ ์ ์ธํ
ํ ์ ์์ต๋๋ค.
์ฆ ์ฝ๋๋ฅผ ์ ํ ๋ง์ง ํ์์์ด ์ด ํ์ผ๋ง ๊ฑด๋๋ฆฌ๋ฉด ๋ฉ๋๋ค.
Wandb๋ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ์ฌ ํด๋ผ์ฐ๋์ ์ ์ฅํ๊ณ ๋์๋ณด๋๋ก ์ฝ๊ฒ ํ์ธํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํ๋ฉฐ, ํ์ ์ ์๋ก ๋ค๋ฅธ ์คํ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ๋น๊ต ๋ฐ ์๊ฐํํ ์ ์๋ ํด์ ๋๋ค. ๋๋ถ์ด ์๋ Sweeping ๊ธฐ๋ฅ๋ ์ ๊ณตํ๊ณ ๊ฒฐ๊ณผ๋ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
- ์คํ ๊ฒฐ๊ณผ๊ฐ ํด๋ผ์ฐ๋์ ์๋์ผ๋ก ์ ์ฅ๋๊ณ ์๊ฐํ๋ ์ฉ์ดํ๋ค๋ ์ ์์ 3๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
- ์๋ก ๋ค๋ฅธ ์ปดํจํฐ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ ๋์๋ณด๋์์ ๋น๊ต ๋ถ์ํ๊ธฐ ๋งค์ฐ ์ฌ์ด ํ๊ฒฝ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ 5๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
- Sweeping ์๋ํ๋ฅผ ์ง์ํ๋ฉฐ ์ด ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํ๊น์ง ํด์ค๋ค๋ ์ ์์ 6๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด WandB Dashboard๋ฅผ ์ด์ฉํด ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํํ ์ ์๊ณ
์ด ๊ฒฐ๊ณผ๋ฅผ ํ์๊ณผ ๊ณต์ ํ ์ ์์ต๋๋ค.
Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ HuggingFace Repository์ ์ฌ๋ผ์ ์๋ ๋ชจ๋ธ์ ์ฝ๊ฒ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๊ณ finetuning ๋ฑ์ ์์ ๋ ์ฉ์ดํ๊ฒ ํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- ์ฃผ์ํ ๋ชจ๋ธ์ ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๊ณ HuggingFace์ ์ฌ๋ผ์์๋ ์ฃผ์ pretrained ๋ชจ๋ธ์ ํ์ฉํ๊ธฐ ์ํด ์ ์ ํ์ต๋๋ค.
- Repository๋ฅผ ํ์ฉํ๋ฉด ์๋ก ๋ค๋ฅธ ์ปดํจํฐ์์์ ๋ชจ๋ธ ๊ฒฐ๊ณผ ๊ฐ์ ์ฝ๊ฒ ๋ถ๋ฌ์ฌ ์ ์๋ค๋ ์ ์์ 5๋ฒ ๋ชฉํ์ ์ ๋ถํฉํ์ฌ ์ ์ ํ์์ต๋๋ค.
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ชจ๋ธ Config์ Weight๊ฐ์ HuggingFace Repository์ ์ ์ฅํ๊ณ
์ด๊ฒ์ ์ฝ๋ ํ ์ค๋ก ์ฝ๊ฒ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค.
Infra Model์ ๊ตฌ์ฒด์ ์ธ ๊ตฌ์กฐ์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ Wiki ๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์.
Infra ์ ์ฅ์๋ ๋ถ๊ทน์ฑ ํ๋ก์ ํธ๋ฅผ ์ํ ๋ชจ๋ธ์ ๊ฐ๋ฐํ๊ณ ํ ์คํธํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ํจ์จ์ ์ธ ์ธ๊ณต์ง๋ฅ ๋ชจ๋ธ ๊ฐ๋ฐ์ ์ํด ๊ฐ๋ฐ ์ฝ๋๋ฅผ ๊ท๊ฒฉํํ์์ผ๋ฉฐ, ํ์๋ค์ด ๊ฐ๊ฐ ์๋ก์ด ๋ชจ๋ธ์ด๋ ํ์ต ๋ฐฉ์์ ๋์ ํ์์ ๊ฒฝ์ฐ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ ๋ฐ ๋ชจ์ ๋น๊ตํ ์ ์๋๋ก ์๊ฐํํ์์ต๋๋ค.
์ ํฌ AiVENGERS Team์ ์ด๋ ๊ฒ ๊ตฌํํ Infra๋ฅผ ๋ฐํ์ผ๋ก ๋ถ๊ทน์ฑ ํ๋ก์ ํธ์ ์ฌ์ฉ๋ ์ธ๊ณต์ง๋ฅ ๋ชจ๋ธ์ ์คํํ๊ณ ํ๋ํ๊ณ ์ธ์ฌ์ดํธ๋ฅผ ์ป์ด ์ต์ ํ๋ ์ต์ข ๋ชจ๋ธ์ ์ป์ด๋ด๋ ๊ณผ์ ์์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ต๋๋ค.
Infra๋ฅผ ๋ถ๊ทน์ฑ Project์ ์ ์ฉํ ๊ณผ์ ์ ์๋์ ๊ฐ์ต๋๋ค.
๋ณธ๊ฒฉ์ ์ผ๋ก ์ ํฌ ํ๋ก์ ํธ์ ์ ์ฉํ Infra Code๋ฅผ ์์ฑํ๋ ๋จ๊ณ์ ๋๋ค.
-
๋จผ์ ๊ฐ๋จํ MNIST ๋ฌธ์ ๋ฅผ CNN์ผ๋ก ํธ๋ ๋ชจ๋ธ์ ์ด์ฉํด์ ์๊ธฐ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๋ Infra Code๋ฅผ ์์ฑํฉ๋๋ค. MNIST ๋ฌธ์ ๋ ๊ฐ์ฅ ์ ๋ช ํ ์์์ด๊ณ ์ฝ๋ ์์ฒด๊ฐ ๋๋ฆฌ ์๋ ค์ ธ ์๊ณ ์ ๋ฌธ ์ฝ๋์ด๋, ์ด๋ฅผ ํ์ฉํ์ฌ ์ด์ Infra Code๋ฅผ ์์ฑํ์์ต๋๋ค.
infra_init/mnist_baseline.ipynb
infra_init/config.yaml
infra_init/global.yaml
-
๊ทธ ๋ค์, Hugging Face Module์ ์ ์ฉํด๋ณด๊ธฐ ์ํด ์์์ ์์ฑํ ์ฝ๋์ CNN ๋ชจ๋ธ ๋ถ๋ถ์ Hugging Face ViT ๋ชจ๋ธ๋ก ๋์ฒดํฉ๋๋ค.
infra_init/mnist_vit_baseline.ipynb
-
๊ทธ ๋ค์, ์ด Infra Code๋ฅผ ์์ฐ์ด ์ฒ๋ฆฌ ๋ฌธ์ ์ ์ ์ฉํ ์ ์๋๋ก, ๊ธฐ์กด์ ํด๊ฒฐํ๋ ์์ฐ์ด ์ฒ๋ฆฌ Task ์ฝ๋๋ฅผ ๊ฐ์ ธ์ ์ผ๋ถ ๋ฆฌํฉํ ๋งํฉ๋๋ค.
infra_init/nlp_baseline.ipynb
๋ถ๊ทน์ฑ ํ๋ก์ ํธ์ ์๋น์ค ์ค ๊ณต๊ณ ์ถ์ฒ ์๋น์ค์ ๊ตฌํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด๋ณด์์ต๋๋ค. ์ ํฌ๊ฐ ๊ฒฐ์ ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์์๊ฒ QnA๋ฅผ ํตํด ์ป์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํด ๊ฐ์์ Job Description์ธ Mock JD๋ฅผ ๋ง๋ ๋ค, ์ด Mock JD๋ฅผ ๋ฐํ์ผ๋ก ์๋ฒ ๋ฉ ๋ฒกํฐ๋ฅผ ๋ฝ์๋ด์ด, ์ด Mock JD์ ๊ฐ์ฅ ์ ์ฌํ ์๋ฒ ๋ฉ ๋ฒกํฐ ๊ฐ์ ๊ฐ์ง JD๋ฅผ ์ฐพ์ ์ถ๋ ฅํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์๋ ๋ฐฉ์์ ๊ฒฐ์ ํ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์์ฐ์ด ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ๊ฒฐ์ ํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ ๋ คํด๋ณด์๊ณ ์ต์ข ์ ์ผ๋ก๋ BERT ๊ณ์ด์ ๋ชจ๋ธ์ ์ฌ์ฉํ๊ธฐ๋ก ํ์์ต๋๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ด๋ฏธ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ํตํด ๋ฌธ์ฅ์ ๋งฅ๋ฝ๊ณผ ์ฃผ์ ๋จ์ด์ ์๋ฏธ๋ฅผ ์ ์ดํดํ๊ณ ์๋ ๋ชจ๋ธ์ด Pretrained Model๋ก์ ์ ๊ณต๋ฉ๋๋ค.
- Transformer์ Encoder ๋ถ๋ถ์ ํ์ฉํ๋ฏ๋ก Model ์ ํํ๊ฐ Embedding Vector๋ฅผ ์ถ์ถํด ๋ด๋ ๊ฒ์ ํนํ๋์ด ์์ต๋๋ค.
- ์ ํฌ๊ฐ Target์ธต์ผ๋ก ์ ํ ๊ฐ๋ฐ ๋ถ์ผ์ Job Description์ ๋ํ์ฌ LLM์ Domain Adaptation์ ์์ผ์ผ ํ๋๋ฐ, BERT์ ๊ฒฝ์ฐ ์ ์ ๋ฐ์ดํฐ๋ง์ ์ด์ฉํด์ ์ด๋ฌํ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ์ ์ฉ์ดํฉ๋๋ค.
- ํ์ต ๋ฐฉ์์ด MLM ๋ฐฉ์์ด๋ฏ๋ก labeling ์์ ์ด ํ์์น ์์, ์๋ก์ด JD ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ธ์ ์ ์ฉํ๋๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ ๋ฆฌํ๋ฉด BERT ๋ชจ๋ธ์ ํ์ฉํ์ฌ ๋ฌธ์ฅ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ๋ฒกํฐ๋ก ๋ณํํ๊ณ , ๊ณต๊ณ ์ ๋ฌธ์ฅ๊ณผ ์ฌ์ฉ์ ์ง์์๋ต์ ๋ฌธ์ฅ์ผ๋ก๋ถํฐ ๋ณํ๋ ๋ฒกํฐ๋ผ๋ฆฌ์ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ์ฌ ์ถ์ฒ ๊ณต๊ณ ๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ ์ฑํํ์์ผ๋ฉฐ ์ด๋ Transformer Encoder ์ ๊ตฌ์กฐ๋ก ํ๋ จ๋ BERT ๋ชจ๋ธ์ ์๋ฒ ๋ฉ ๋ ์ด์ด์ ํ๋ ๋ ์ด์ด๊ฐ ์ถ๋ ฅ์ผ๋ก ๋ด๋์ ๋ฒกํฐ๊ฐ ๋ฌธ์ฅ์ ๋งฅ๋ฝ๊ณผ ์ฃผ์ ๋จ์ด์ ์๋ฏธ๋ฅผ ์ ๋ดํฌํ๊ณ ์์ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ ๋ฐํ์ผ๋ก ํ๋ฉฐ, ๊ธฐ ํ๋ จ๋ ๋ชจ๋ธ์ ํ์ฉํ๋ ๋งํผ Domain Adaptation์ ๋ํ Cost๊ฐ ๋ฎ๊ณ ๋ผ๋ฒจ๋ง ๋ ๋ฐ์ดํฐ๊ฐ ์์ด ์ด๋ฅผ ์ ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค๋ ์ ์ ์ด์ ๋ก ํฉ๋๋ค.
BERT ๋ชจ๋ธ์ Hugging face ๋ฅผ ํตํด ๋งค์ฐ ํธ๋ฆฌํ๊ฒ ํ์ฉ ๊ฐ๋ฅํฉ๋๋ค. Hugging face ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ import ํ ํ, ์๋์ ๊ฐ์ด tokenizer ์ model ์ ๋ถ๋ฌ์ค๊ธฐ ํ์ฌ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
tokenizer = AutoTokenizer.from_pretrained('bert-base-multilingual-cased')
model = BertForMaskedLM.from_pretrained('bert-base-multilingual-cased')
๋ชจ๋ธ์ fine-tuning ์ ํ์์์ง๋ง, ๋ณธ ํ๋ก์ ํธ์์ ์ฃผ๋ก ๋ค๋ฃฐ ๋ฌธ์ฅ์ ๊ณต๊ณ ์ ์ฌ์ฉ์ ์ง์, ๊ตฌ์ง ๊ด๋ จ ํค์๋์ ํ์ ๋์ด ์์ผ๋ฏ๋ก, ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด์๋ domain-adaptation ๊ณผ์ ์ด ํ์ํ๋ค๋ ์๊ฒฌ์ด ์ ๊ธฐ๋์์ต๋๋ค. Domain-adaptation ์ ์ํด์๋ BERT ๋ชจ๋ธ์ ํ๋ จ ๋ฐฉ๋ฒ์ผ๋ก ์๋ ค์ ธ ์๋ Masked language modeling(MLM) ๋ฐฉ์๊ณผ Next sentence prediction(NSP) ๋ฐฉ์์ ํ๋ จ์ด ํ์ํ๋ฉฐ, ํ๋ จ์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ์์งํ ๊ณต๊ณ ๋ฌธ์ฅ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ํ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก ๋ณ๋์ ๋ผ๋ฒจ๋ง ์์ ์ ํ์ํ์ง ์์ต๋๋ค.
- Hugging Face ์์ MLM ์ฉ ๋ชจ๋ธ์ ๋ถ๋ฌ์, ๋ณด์ ํ ๋ฐ์ดํฐ๋ก MLM ํ์ต์ํค๋ ์ฝ๋์ ํ์ตํ ๋ชจ๋ธ์ ํ์ฉํ์ฌ ์ฃผ์ด์ง ๋ฌธ์ฅ์ผ๋ก๋ถํฐ encoded vector ๋ฅผ ์ถ์ถํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
model_analysis/Bert_embedding.ipynb
- BERT ๊ณ์ด์ ๋ค์ํ ๋ชจ๋ธ์ Hugging Face์์ ๋ถ๋ฌ์ค๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
model_analysis/Bert_various.ipynb
- BERT ๋ชจ๋ธ์์ ๋์จ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก Cosine Similarity๋ฅผ ๊ณ์ฐํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
model_analysis/Bert_cosine_cal.ipynb
- ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํด 2๊ฐ์ง ์งํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ ์งํ๋ model ํ์ต๊ณผ์ ์์์ loss ๊ฐ์ ๋๋ค. ์ด ๊ฐ์ ์์์๋ก ์ข์ ๋ชจ๋ธ๋ก ํ๋ณํฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ ์งํ๋ wandb ๋์๋ณด๋์์ ์๊ฐํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ์ฝ๊ฒ ๋น๊ต๋ถ์ํ ์ ์์ต๋๋ค.
- ๋ ๋ฒ์งธ ์งํ๋ TestSheet Score์ ๋๋ค. ์ ์ฌ๋๊ฐ ๋๊ฒ ์ธก์ ๋์ด์ผ ํ๋ ์์ Set์ ์ ์ฌ๋๊ฐ ๋ฎ๊ฒ ์ธก์ ๋์ด์ผ ํ๋ ์์ Set๋ฅผ ๋ชจ๋ธ์ ์ ๋ ฅํ์ฌ ์ฐ๋ฆฌ๊ฐ ์์ํ ์ ์ฌ๋๋๋ก ์ ๋์ค๋์ง ํ๋ณํ๋ ์งํ์ ๋๋ค.
- ๋ ๋ฒ์งธ ์งํ๋ TestSheet Score๋ฅผ ๊ณ์ฐํด์ฃผ๋ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ต๋ถ์ํ ์ ์์ต๋๋ค.
- ์์์ ๋ถ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ต์ข Baseline Model์ ์์ฑํฉ๋๋ค.
- Pretrained๋ ๋ชจ๋ธ์ ์ค์ ์๋น์ค์ ์ ์ฉ๋๋ ๋ชจ๋ธ ๊ตฌ์กฐ๋ก ์ด์ํ ๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ ๊ณ ์ํ์ต๋๋ค.
new_prediction_layer_deletion ๋ฐฉ์
new_prediction_from_pretrained ๋ฐฉ์
์์ธํ ์ค๋ช ๋ณด๊ธฐ (์ ๊ธฐ ์ด์ฉ, ์๋์ ์์ธ ์ค๋ช )
- ๊ตฌ์ฑ๋ Baseline Model ์ฝ๋ ํ์ผ๋ค์ ๊ตฌ์ฑ์ ์๋์ ๊ฐ์ต๋๋ค.
train_from_pretrained.ipynb
๋๋train_layer_deletion.ipynb
(์ต์ข ๋ชจ๋ธ ํ์ต ์ฝ๋)config.yaml
(์คํ ์ค์ )global.yaml
(Versioning์ ์ํ ํ์ผ)test_from_pretrained.ipynb
๋๋test_layer_deletion.ipynb
(2๋ฒ์งธ ์งํ๋ฅผ ์ป์ด๋ด๊ธฐ ์ํ ์ฝ๋)test_case.csv
(2๋ฒ์งธ ์งํ๋ฅผ ํ๋ณํ๋๋ฐ ์ฌ์ฉ๋๋ test case๊ฐ ๋ค์ด์๋ csv์ ๋๋ค.)
- ํ์ ๊ฐ๊ฐ์ด ์ด๋ค ์คํ์ ์งํํ ์ง ์คํ ๊ณํ Sheet๋ฅผ ์์ฑํฉ๋๋ค.
- ์์ฑ๋ ๊ณํ Sheet๋ฅผ ๋ฐํ์ผ๋ก ์คํ์ ์งํํฉ๋๋ค.
- ์คํ์ experiment ํด๋ ๋ด์ ์์ฑ๋ ๊ฐ ํ์ ํด๋์์ ์คํ์ด ์งํ๋ฉ๋๋ค.
- baseline ํด๋์ ์๋ ๋ชจ๋ธ์ ๊ทธ๋๋ก ๊ฐ์ ธ์จ ๋ค, ์คํ ๊ณํ Sheet์ ๋์จ๋๋ก configํ์ผ์ ์์ ํ ๋ค ๋ชจ๋ธ ํ์ต์ ์ํํฉ๋๋ค.
๋ถ๊ทน์ฑ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๋ก์ง์ ์๋์ ๊ฐ์ต๋๋ค.
- ์ฌ์ฉ์์ Q&A ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์ฌ์ฉ์์ ๋ํ ์ ๋ณด๋ฅผ ์์งํฉ๋๋ค.
- ์ป์ด์ง Q&A๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์์ Mock JD๋ฅผ ์ป์ด๋ ๋๋ค.
- Mock JD๋ฅผ BERT ๋ชจ๋ธ์ ํ์ฉํ์ฌ Embedding Vector๋ก ๋ณํํฉ๋๋ค.
- ์ด Embedding Vector์ Cosine ์ ์ฌ๋๊ฐ ๋์ JD ๋ชฉ๋ก์ ์ป์ด๋ ๋๋ค.
- ์ด ์ค ํ๋์ JD๋ฅผ ์ ํํ์ฌ ๊ฐ์ ์ถ์ฒ์ ์์ฒญํ๋ฉด ํด๋น JD๋ฅผ ๋ฐํ์ผ๋ก ๊ฒน์น๋ ํค์๋๋ฅผ ์ด์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด ์ ์ ํ ๊ฐ์๋ฅผ ์ถ์ฒํฉ๋๋ค.
Data Processing ํด๋ ๋ด์ ์๋ ํด๋ ์ค JD_feature ํด๋๋ 2๋ฒ ๊ณผ์ , Lec_recommendlogic ํด๋๋ 5๋ฒ ๊ณผ์ ์ ๊ตฌํํ ์ฝ๋์ ๋๋ค.
- QnA ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ JD๋ฅผ ์์ฑํ๋ ์ฝ๋๊ฐ ๊ตฌํ๋์ด ์์ต๋๋ค.
- ๋๋ถ์ด TestSheet๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ฝ๋๋ ์ฌ๊ธฐ์ ๊ตฌํ๋์ด ์์ต๋๋ค.
- ์ฆ Sample JD์ ์ ์ฌ๋๋ฅผ ๋น๊ตํ๋ ์ฝ๋๊ฐ ๊ตฌํ๋์ด ์์ต๋๋ค.
- JD๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ฉด ์ด์ ๊ด๋ จ๋๊ฐ ๋์ ๊ฐ์๋ฅผ ์ถ์ฒํด์ฃผ๋ ์ฝ๋๊ฐ ๊ตฌํ๋์ด ์์ต๋๋ค.
- ํค์๋๊ฐ ๋งค์นญ๋๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ์ต๋๋ค.
Data Processing์ ๋ํ ์์ธํ ์ค๋ช ์ ํ์ธํ๋ ค๋ฉด ์ฌ๊ธฐ๋ฅผ ๋๋ฌ์ฃผ์ธ์.
- ์ธ๊ณต์ง๋ฅ ๋ชจ๋ธ ์ฝ๋๋ ๋์ฒด์ ์ผ๋ก ๋น์ทํ ํํ๋ฅผ ๋ฐ๋ฅธ๋ค. ์ค์ ๋ก Kaggle ๋ฑ์ ์งํํ ๋ ์ด์ ์ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ๊ธฐํด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ์ผ์ด ์ฆ์ ์ ๋๋ก ๊ต์ฅํ ๊ทธ ํ์์ด ์ ์ฌํ๋ค. ์ฆ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ผ๋ฏ๋ก ์ด๋ฅผ ๋ชจ๋ํํ ์ ์์ ๊ฒ์ด๋ผ๋ ์๊ฐ์ ํ์๊ณ ๊ทธ๊ฒ์ ํ๋ก์ ํธ์ ์ ์ฉํ์ฌ ๊ฝค ๋ง์กฑ์ค๋ฌ์ด ์ฑ๊ณผ๋ฅผ ๊ฐ์ ธ์๋ค๋ ๊ฒ์ด ์ธ์ ๊น์๋ค.
- kaggle ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ ๋ฒ์ ์ผ๋ก ํ ์คํธ๋ฅผ ํด๋ณด์ง ๋ชปํ๋ค. ์ฌ์ค ๋น ๋ฅด๊ฒ ๋ชจ๋ธ baseline์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํ ์คํธํด ๋ณผ ๋ GPU๊ฐ ์๋ค๋ฉด Kaggle ํ๊ฒฝ์ ๋ํ ํธํ์ฑ์ด ํ์ํ๋ฐ ์์ง ์ด ๋ถ๋ถ์ ์ ์ํด๋ณด์ง ๋ชปํ ๊ฒ์ด ์์ฝ๋ค.
- ๋ชจ๋ํ๊ฐ ๋์์ผ๋ฏ๋ก ์ฝ๋ ์๋ ์์ฑ ์ฝ๋๋ ๋ง๋ค์ด๋ณด๊ณ ์ถ์์ผ๋, ํ๋ก์ ํธ ๊ธฐ๊ฐ ๋์์๋ ์์ฑํ์ง ๋ชปํ๋ค. ๊ทธ๋ฌ๋ ์ด๋ ํฅํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ด ๋์ ์ฝ๋์ด๋ฏ๋ก ์ฝ๋ ์๋ ์์ฑ ์ฝ๋๋ ๊ตฌํํด๋ณด๊ณ ์ ํ๋ค.