HyperCLOVA의 한국어 모델(1)
한국어 모델을 만든 이유
Naver에서는 GPT-3같은 대규모의 데이터 베이스를 학습한 우수한 성능의 multilingual 모델을 두고 왜 독자적인 HyperCLOVA라는 모델을 개발했을까?
그 이유는 해외 공개된 모델들은 multilingual이긴 하지만 영어의 비중이 대부분을 차지하고, 특히 한국어의 비율은 엄청나게 작다. 즉 영어 특화 모델이란 소리다.
GPT를 통해 NLP(natural language processing)에서 모델의 크기가 커짐에 따라 매우 좋은 성능을 나타낸다는 것이 알려졌다. 따라서 모델 크기의 증가는 현재 딥러닝에서 매우 중요한 흐름이다.
이러한 상황에서 한국어에 특화된 Big model을 확보하지 못한다면 해외기술의 의존에 따라 기술 종속이 나타나고, 무엇보다 한국어에 대해 품질이 낮은 결과를 얻게 된다.
그렇다면 초거대 한국어 모델을 만드려면 어떠한 요소들이 필요할까?
데이터 처리 파이프라인
모델을 만드는데 가장 첫번째로 필요한 것은 학습할 데이터를 수집/정제하는 과정이다.
Navar에서는 이러한 학습에 필요할 데이터를 자체적으로 수집/정제하고있다.
데이터의 구성은 포털 내 검색이 허용된 문서, 신뢰할 수 있는 오픈된 리소스, 전문 지식 등으로 구성되어있다.
-
이렇게 수집된 데이터는 다음과 같은 기준으로 정제된 후 학습에 사용된다.
- 문서 내용이 유사한 경우에는 중복 제거 (학습이 한쪽으로 치우치지 않기 위함)
- 데이터의 비식별화 (공개 범위로 인해 수집된 개인정보를 비식별화 혹은 제거)
- 대화의 흐름 등을 파악하기 위해 메타정보 추가 (유저ID, 출처, 카테고리 정보 등)
- Naver의 특성 상 어떠한 글이 인기가많고, 신뢰성있는지 파악 가능한 점을 이용해 상위품질 정보 수집
- 의미없는 단어나열, 비속어나 유해정보, 홍보글 등 저품질 문서 필터링
이처럼 수많은 정제를 하여 모은 데이터의 규모가 앞선 글에서 말한 5600억 토큰이다. 더 자세한 내용은 Big Data 처리에 관한 내용은 해당영상 에서 확인할 수 있다.
해당 과정을 거친 데이터들을 다음과 같은 일련의 과정을 거치게 된다.
전처리를 효율적으로
데이터를 가지고 모델을 학습할 때, 편중된 분야의 데이터나 품질이 낮은 데이터는 모델의 성능에 직접적으로 영향을 준다.
따라서 이러한 부분을 처리하기 위해 데이터를 Systematic하게 조절하기 위해 코퍼스 믹서(Corpus Mixer) 를 사용하였다.
그리고 데이터를 모델이 읽을 수 있는 binary 형태로 변화하는 Serializing 과정을 거친다. 하지만 데이터의 규모가 워낙 방대해서 기존 모델이 사용했던 코드를 썼을 때 약 1주일의 시간이 걸렸다. 이 부분을 하둡 스트리밍을 사용하여 약 170배(1시간) 단축시켰다.
초대형 언어 모델로 얻고자 하는 것
이렇게 학습한 모델로 하고자 하는것은 다양한 형태의 글을 이해하고 생성 하는 것이다. 따라서 HyperCLOVA에서는 문장 생성에 특화된 모델을 아키텍쳐로 선택했다.
최근 모델 크기의 증가 속도는 GPU의 발전 속도를 크게 능가한다. 불과 3-4년 전만해도 수백 M(million)을 넘는 모델도 몇 없었으나, 현재 HyperCLOVA만 봐도 1000배이상 증가한 크기를 가진다.
하지만, 같은 시간동안 GPU메모리는 대략 4-5배 정도의 증가에 그쳤다. 따라서 급속도로 커지는 모델을 학습하기 위해서는 여러개의 GPU를 병렬처리하여 학습하는 방법이 필요하다. 이를위해 최근 널리 사용되는 3중 병렬화 기법을 사용하였다.
학습시 데이터를 Batch, Attention, Layer 측면으로 나눠 각 GPU에서 계산한 뒤, 최종적으로 Gradient를 계산하고 파라미터를 업데이트 할 때에는 연산 결과를 합쳐 계산한다.
(ex: batch size=1024, data parallel=8 -> 한 GPU당 128개씩 8개의 GPU 사용)
모델이 커질수록 학습시간이 늘어나고, 이슈가 많이 발생하며 실패했을 때의 기회비용또한 증가한다. 따라서 병렬화 등 학습 시간 가속화는 매우 중요한 task라고 할 수 있다.
모델 크기에 따른 성능 비교
모델의 크기가 작으면 학습할 representation space의 복잡도가 낮고 상대적으로 큰 Learning Rate를 사용한 영향으로 Loss가 초반엔 빠르게 떨어진다. 하지만 capacity limit에 금방 도달하게되고, 더 이상의 진전이 없다
반면 모델의 크기가 커질수록 초반 학습 속도는 느리지만 이후 waterfall구간에서 loss 감소 속도가 매우 빨라지며 학습이 진행될수록 결국은 성능이 더 뛰어나진다.
다운스트림 태스크:NSMC
GPT-3의경우, 모델의 크기가 커져도 전체 모델 파라미터들을 업데이트하는 Fine-Tuning을 하지 않아도 몇몇 예시만 이용한 In-context러닝으로 downstream task에서 경쟁력있는 성능 확보가능하다.
HyperCLOVA 또한 여러가지 실험과 검증으로 해당 경향성을 보이는것을 확인하였다.