{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Motivation\n", "\n", "이번 세션에서는 본 자료를 준비하게 된 동기에 대해 설명합니다." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Why Large Scale?\n", "\n", "최근 인류 역사상 최고의 언어모델이라는 평가를 받고 있는 GPT3를 필두로 딥러닝 언어모델의 크기가 점점 커지고 있는 추세입니다. 몇 년전까지만 해도 큰 모델이라고 평가받던 BERT가 이제는 아기자기한 사이즈의 모델이 되었죠. 그런데 한가지 궁금증이 생깁니다. 최근부터 왜 갑자기 모델의 크기가 점점 커지고 있는걸까요? \n", "\n", "\n", "![](../images/why_large_scale.png)\n", "\n", "
\n", "\n", "### 1) 모델의 아키텍처가 그다지 중요하지 않다?\n", "지금까지 많은 연구자들이 모델의 아키텍처에 매우 큰 관심을 기울여왔지만 최근 연구 결과에 따르면 그동안의 변화가 생각보다 큰 차이를 가져오지는 못하는 것으로 밝혀졌습니다. 물론 아키텍처의 개선에 의해 언어모델의 성능이 어느정도 향상된 것은 사실이지만 판을 깨는 수준으로 드라마틱한 성능 개선을 가져오지는 못했죠. \n", "\n", "![](../images/arch_is_not_important.png)\n", "\n", "
\n", "\n", "### 2) 결국 관건은 데이터와 모델의 크기, 그들이 곧 성능과 비례한다.\n", "이전에도 데이터와 모델의 크기가 커지면 성능이 개선되는 것은 알고 있었습니다. 그러나 이것을 극단적으로 키워보니 모델이 마법같은 일을 하기 시작했습니다. 예를 들면 언어모델이 fine-tuning 없이 번역, 요약, 분류 등의 태스크를 수행할 수 있었습니다. 단순히 수행만 하는게 아니라 성능도 fine-tuning한 모델과 비슷한 수준을 보여줬죠. 연구자들이 이러한 현상을 분석해보니 모델의 크기가 성능에 가장 큰 영향을 미치고 그 다음으로 데이터의 크기가 중요했다고 합니다. 아래 그래프의 Y축이 log scale인 것을 감안하면 모델의 크기가 성능에 미치는 영향은 엄청난 수준이죠.\n", "\n", "![](../images/scale_is_all_you_need.png)\n", "\n", "
\n", "\n", "### 이대로 간다면 아마 몇년 뒤...?\n", "\n", "![](../images/GPT-X.png)\n", "\n", "

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Large-scale의 시대에 우리는 무엇을 준비해야 할까?\n", "\n", "Large-scale transformer 모델은 기존과 아키텍처는 거의 동일한데, 모델의 모델과 데이터 사이즈를 엄청나게 키운 것입니다. 그래서 몇몇 사람들은 \"에이~ 예전이랑 똑같은데 크기만 키웠네\"와 같이 생각 하기도 하죠.\n", "\n", "![](../images/is_large_scale_easy.png)\n", "\n", "
\n", "\n", "### 하지만 현실은...\n", "\n", "하지만 Large-scale 모델을 잘 다루려면 아래와 같이 수 많은 하드코어 엔지니어링들이 병행되어야 합니다.
\n", "\n", "![](../images/hard_core_engineering.png)\n", "\n", "
\n", "\n", "즉 이러한 엔지니어링 테크닉을 사용할 줄 알아야 Large-scale 시대의 모델링을 수행 할 수 있습니다. 문제는 이러한 기술들은 전문적으로 공부하지 않은 사람들이 아니면 사용하기 어렵다는 것입니다. 일반적인 모델 사이언티스트들에게는 다소 난해하기도 한 개념들도 많고 한국어로 만들어진 자료는 더더욱 없죠.\n", "\n", "\n", "### So What?\n", "저는 이러한 이유 때문에 이 자료와 발표를 준비하게 되었습니다. 이 자료가 라지스케일 엔지니어링을 처음 배우는 분들에게 어느정도 길라잡이가 되어주길 바랍니다. :)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 4 }