NanoGPT Slowrun: 무한 컴퓨팅으로 10배 데이터 효율성 달성

NanoGPT Slowrun: 10x Data Efficiency with Infinite Compute

요약

NanoGPT Slowrun은 1.8B 파라미터 모델의 앙상블로 100M 토큰 학습 시 1B 토큰이 필요한 표준 모델과 동등한 성능을 달성하여 10배 데이터 효율성을 이뤘다. 이는 앙상블 학습, 체인 증류, 강화된 정규화, 루프 트랜스포머 등 여러 기법의 조합으로 가능했다.

핵심 포인트

  • 앙상블 학습이 데이터 효율성의 핵심 축으로, 여러 모델을 독립적으로 학습하고 예측을 결합하는 방식으로 고정된 데이터에서 더 많은 컴퓨팅 활용 가능
  • 표준 Chinchilla 스케일링 법칙과 달리 대규모 정규화(weight decay 1.6, dropout 0.1)와 루프 트랜스포머 같은 아키텍처 개선으로 기존 방식을 뛰어넘음
  • 신경 아키텍처 탐색이 데이터 효율성을 위해 중요하며, Exclusive Self Attention, EMA, U-Net 스킵 연결 등 다양한 기법들이 누적 효과 발휘

왜 중요한가

데이터 부족 환경에서 모델 성능을 향상시키는 실용적인 기법들을 제시하여 학습 데이터 수집이 어려운 상황에서 LLM 개발의 방향을 제시한다.

📄 전문 번역

NanoGPT Slowrun으로 데이터 효율을 10배 높이다

우리는 단 몇 주 만에 NanoGPT Slowrun으로 데이터 효율을 10배 높이는 데 성공했습니다. 1억 개 토큰으로 학습된 18억 개 파라미터 모델들의 앙상블(총 180억 파라미터)이, 표준 언어 모델 기준선으로는 10억 개 토큰이 필요한 성능을 내는 거죠.

왜 데이터 효율이 중요할까요? 계산량이 데이터보다 훨씬 빠르게 증가하기 때문입니다. 현재 스케일링 법칙은 둘 다 비례적으로 늘려야 하는데, 결국엔 데이터가 병목이 될 수밖에 없거든요. 이번 결과는 우리가 데이터를 늘리지 않고 계산량만 늘려서도 모델 성능을 개선할 수 있다는 뜻입니다.

기존 관점과의 충돌

여기서 주목할 점이 두 가지 있습니다.

첫째, 이건 현재의 스케일링 법칙과 완전히 다릅니다. Chinchilla 논문은 1억 개 토큰이 있으면 약 500만 개 파라미터 모델을 학습하라고 했는데, 우리는 그것과 3,600배 차이나는 규모로 작업하고 있거든요.

둘째, 데이터 효율 10배 개선은 상상하기 어려운 수준인데, 우리는 단 몇 주 만에 해냈습니다. 어떻게 그럴 수 있었을까요?

일부 개선은 특별한 원리 없이 아키텍처만 손댄 것들도 있습니다. 하지만 몇몇은 확실한 원리에 기반하고 있으며, 더 큰 스케일에도 적용될 거라 믿습니다. 바로 그런 것들이 근본적으로 중요합니다.

앙상블: 간과된 스케일링 축

앙상블링은 사전학습 스케일링 분야에서 아마도 가장 덜 연구된 부분입니다. 한 모델을 학습하는 대신 여러 모델을 어느 정도 독립적으로 학습한 뒤 추론 시점에 예측값들을 합치는 방식이죠. 이렇게 하면 고정된 데이터 양 하에서도 계산량을 계속 늘릴 수 있고, 일반화 성능도 계속 개선됩니다.

앙상블의 학습 역학은 단일 모델과 완전히 다릅니다. 이게 핵심 통찰입니다. Pandey 등의 연구는 앙상블 같은 사후 처리 기법이 일반적인 과적합 역학을 뒤집는다는 걸 보여줍니다. 즉, 개별 모델들은 더 오래 학습할수록 과적합되지만, 앙상블은 더 오래 학습된 기본 모델들을 선호한다는 뜻입니다. Kim 등도 독립적으로 앙상블이 단일 모델보다 훨씬 더 오래 학습할 수 있다는 걸 발견했습니다.

우리도 정확히 이 현상을 관찰했습니다. PR #26에서 학습 에포크를 12에서 18로 늘렸을 때, 개별 모델의 손실값은 3.295에서 3.310으로 악화되었습니다. 그런데 앙상블 손실값은 3.185에서 3.166으로 개선되었거든요. 모델들이 개별 최적점을 넘어설 때 서로 다른 것들을 학습하고, 그것이 앙상블을 도와주는 겁니다.

체인 디스틸레이션

우리는 체인 지식 디스틸레이션이 앙상블 학습을 극적으로 개선한다는 걸 발견했습니다(PR #31). Born-Again Neural Networks에서 영감을 받은 이 아이디어는 모델들을 순차적으로 학습하되, 각 새로운 모델이 바로 앞의 모델에서 지식을 전수받는 방식입니다.

주목할 점은 교사 역할을 하는 게 바로 앞 모델뿐이라는 겁니다. 그 이전의 모든 모델들을 사용하지 않죠. 이렇게 하면 메모리를 일정하게 유지하고 학습 속도도 빠르게 유지할 수 있습니다. 이 방식으로 8개 모델을 학습한 체인 디스틸레이션 PR에서, 개별 모델 손실값은 약 3.20 근처에서 평탄화되지만 앙상블 손실값은 3.126까지 떨어집니다. 데이터 효율이 7배에서 8배로 개선된 거죠.

앙상블을 더 큰 규모로 확장할 여지는 상당합니다.

정규화: 단순성에 대한 투자

우리는 일반화가 압축, 즉 단순성과 밀접하게 관련 있다고 봅니다. 정규화는 단순성의 프록시인데, 특히 우리가 유용하다고 판단한 기법들은 L2 가중치 감쇠와 드롭아웃입니다. 정규화가 일반화를 개선하는 건 당연해 보이지만, 정규화를 얼마나 강하게 적용할 수 있는지가 흥미로운 부분입니다.

우리는 가중치 감쇠를 1.6까지, 드롭아웃을 0.1로 사용합니다. 참고로 표준 관행은 가중치 감쇠가 약 0.1 수준입니다. 우리는 그것의 16배를 적용하고 있는 거죠. 이게 작동하는 이유는 우리가 엄청나게 과도하게 파라미터화했기 때문입니다. 1억 개 토큰에 28억 개 파라미터 모델을 학습했는데, Chinchilla는 그 데이터 양에는 약 500만 개 파라미터면 된다고 말했거든요. Kim 등의 연구에 따르면, 데이터가 제한적인 상황에서 최적 가중치 감쇠는 표준 관행보다 최대 30배까지 클 수 있으며, 우리도 이를 공격적으로 확인했습니다. 그리고 학습하는 모델이 클수록 정규화도 더 많이 필요합니다.

루프 트랜스포머

루프 트랜스포머는 표준 트랜스포머보다 더 나은 귀납적 편향을 가집니다. 왜냐하면 모델이 각 예측마다 더 많은 계산을 적용할 수 있기 때문이죠. 레이어를 한 번 통과하는 대신 모델이 반복하면서 표현을 계속 정교화합니다.

우리는 30개 레이어 트랜스포머를 먼저 루핑 없이 학습하다가, 학습 중반부터 레이어 15-24를 4번 반복하도록 루핑합니다. 즉, 레이어 0-24를 먼저 실행한 후 레이어 15-24를 4번 다시 실행하고, 마지막으로 레이어 25-29를 실행하는 방식입니다. 이 구성이 최적임을 발견했습니다. 마지막 몇 레이어는 루핑하지 않는 것이 중요합니다. 이 휴리스틱을 확장하고 정형화하는 작업은 아직 진행 중입니다.

아키텍처 개선의 메타 패턴

우리는 정말 좋은 아키텍처 변경들을 찾아냈는데, 그 공통 패턴은 신경망 아키텍처 탐색이 데이터 효율에 중요하다는 겁니다.

배타적 자기 어텐션(Exclusive Self Attention, XSA): 어텐션 출력에서 자기값 프로젝션을 제거합니다(PR #36).

지수이동평균(EMA): 모델 가중치의 지수이동평균을 가중치 감쇠 튜닝 및 다른 여러 변경과 함께 사용합니다. 반절 잘린 RoPE, 단일 레이어 유도 헤드를 위한 부분 키 오프셋, 튜닝된 잔차 람다 등이 포함됩니다(PR #29).

U-Net 스킵 연결: 미러링된 트랜스포머 레이어 간(레이어 0-14가 학습된 스칼라 가중치를 통해 레이어 29-15로 피드)의 U-Net 스킵 연결이 도움이 됩니다(PR #17).

SwiGLU 활성화: 제곱 ReLU를 SwiGLU로 대체합니다(PR #12).

이 모든 개선이 함께 작용하면서 우리가 달성한 데이터 효율 향상으로 이어졌습니다.