오늘은 현재 "Large" language model의 핵심 이론적 토대가 된, LLM의 Scaling Law에 대해서 간단히 짚고 넘어가보려고 한다. 이전까지는 LLM이라기보다는 LM 수준이었고, 이 Scaling law 원칙을 바탕으로 GPT-3등 본격적인 거대 언어 모델의 시대로 넘어간다고 해도 과언이 아닐 것이다.
N, D, C and Power Laws

위의 차트는 LM task에서 performance를 결정짓는 변수들에 대한 것이며, 각 변수를 증가시킬 때마다 test loss가 어떻게 반응하는 지를 보여주는 그래프이다.
파라미터 수 (N): 성능은 비임베딩 파라미터(non-embedding parameters) 수에 가장 깨끗하게 반응한다.
데이터셋 크기 (D): 충분한 모델 크기가 뒷받침될 때, 데이터가 늘어날수록 성능은 일정하게 향상된다.
연산량 (C): 총 연산량이 늘어날수록 성능은 증가한다.
Scale than Shape
이는 모델의 너비나 깊이보다, scale이 성능에 더 영향을 준다는 것을 말한다. 사실상 이 논문이 얘기하고자 하는 바가 여기에 있다.

이렇게 다양한 factor들을 구분하고 각각에 대한 실험을 수행한 것이다.

여기를 보면, figure 5에서는 shape에 대한 mild한 변화를 보여주는 반면, figure 6에서는 non-embedding parameter의 수에 따라 굉장히 strict한 상관관계 trend를 보이는 것을 알 수 있다. 참고로 non-embedding param이란,
all model parameters except the vocabulary embedding and positional embedding parameters.
를 뜻하는 것이다.
Allocating Computational Resources
그래서, 우리가 가지고 있는 computational resource들을 어떤 방식으로 분배하면 가장 효율적인 모델의 성능 향상을 이끌어낼 수 있을까?
연산량이 충분하다면 학습을 오래 시키는 것보다 모델을 훨씬 더 크게 만드는 것이 성능 향상에 훨씬 유리하다는 것을 보여준다. 위의 차트를 보면 모델 사이즈에 해당하는 파란색 부분이 제일 많이 필요하다는 것을 볼 수 있다. 또한 모델이 커질수록 더 큰 배치 사이즈를 감당할 수 있게 되어, 전체 학습 시간(Serial time)을 크게 늘리지 않고도 막대한 연산량을 효과적으로 소화할 수 있게 되는 것이다.

x axis: Compute (PF-days)
- 오른쪽으로 갈수록 쓸 수 있는 총 연산량의 증가
y axis: Multiplicative Contribution
- “baseline 대비 몇 배 늘어났나”를 곱셈 요인으로 누적해 보여줌
- 즉 compute가 커질 때, C ≈ N×B×S 같은 곱 구조에서 각 항이 얼마나 커져야 하는지, “몇 배 기여”하는지를 층(layer)으로 쌓아 보여주는 것
1. 모델 크기(Model Size)의 압도적인 증가
연산량이10억 배(Billion-fold) 증가할 때, 가장 많은 자원은 모델 크기를 키우는 데 투입되어야 한다. 그래프에서 가장 넓은 면적(파란색)을 차지하는 부분으로, 연산 효율을 최적화하려면 모델 크기는 1,000,000배 이상 증가해야 함을 보여준다.
2. 데이터 요구량과 배치 크기(Batch Size)
연산 자원이 증가함에 따라 필요한 데이터 양도 늘어나지만, 모델 크기 증가 폭에 비하면 상대적으로 완만하게 증가한다. 증가한 데이터는 주로 배치 크기(Batch Size)를 키우는 데 사용되는데, (약 100배 증가) 이는 더 많은 데이터를 동시에 처리함으로써 병렬성을 높여 학습 효율을 개선하기 위함이다.
3. 최소한의 시리얼 단계(Serial Steps) 증가
가장 놀라운 점은 학습 시간과 직결되는 학습 스텝은 거의 늘어날 필요가 없다는 것이다. 그래프의 가장 윗부분(녹색)을 보면, 연산량이 10억 배 늘어나는 동안 시리얼 단계는 10배 미만으로 매우 무시할 만한 수준으로만 증가하는 것을 볼 수 있다.
Main Contribution of the Paper
이 연구의 결론은 자본(연산량)이 충분하다면 "학습을 오래 시키는 것보다 모델을 훨씬 더 크게 만드는 것"이 성능 향상에 훨씬 유리하다는 것이다. 또한 모델이 커질수록 더 큰 배치 사이즈를 감당할 수 있게 되어, 전체 학습 시간(Serial time)을 크게 늘리지 않고도 막대한 연산량을 효과적으로 소화할 수 있게 된다는 것이다.