GPT-Neo: 오픈소스 LLM 생태계의 시발점

개요

GPT-Neo는 2021년 3월 EleutherAI가 공개한 오픈소스 자기회귀 언어 모델 시리즈다. 이 모델의 탄생 배경을 이해하려면 당시의 시대적 맥락을 알아야 한다: 2020년 GPT-3가 발표된 후, 175B 파라미터의 강력한 모델은 OpenAI API를 통해서만 제한적으로 접근 가능했다. **“왜 가장 중요한 AI 기술이 한 회사에 의해 독점되어야 하는가?”**라는 질문에 답하기 위해, 전 세계 자원봉사 연구자들이 모여 EleutherAI를 결성하고 GPT-Neo를 만들었다.

125M, 1.3B, 2.7B 세 가지 크기로 공개된 GPT-Neo는 성능보다는 **“오픈소스로도 대규모 언어 모델을 만들 수 있다”**는 증명 자체가 목적이었다.

  • 코드: GitHub
  • 라이선스: Apache 2.0

아키텍처 상세

모델 규모

구성 요소GPT-Neo 125MGPT-Neo 1.3BGPT-Neo 2.7B
파라미터 수125M1.3B2.7B
레이어 수122432
Hidden Dim7682,0482,560
Attention Heads121620
Head Dim64128128
Context Length2,0482,0482,048

공통 설정:

  • Vocab Size: 50,257 (GPT-2 BPE)
  • 정규화: Pre-LayerNorm
  • 활성화 함수: GELU
  • 위치 인코딩: Learned Absolute

핵심 혁신: Local + Global Attention 교대 패턴

GPT-Neo의 가장 중요한 아키텍처 혁신은 Sparse Transformer(Child et al., 2019)에서 영감을 받은 Local과 Global Attention의 교대 적용이다:

짝수 레이어 - Local Attention:

각 토큰이 좌측 256개 토큰만 참조하며, 복잡도는 (w=256)이다.

홀수 레이어 - Global Attention: 표준 causal mask를 적용한 전체 어텐션으로, 복잡도는 이다.

이 교대 패턴의 이점:

  • 로컬 레이어: 인접 토큰 간 세밀한 구문적 관계 포착
  • 글로벌 레이어: 문서 수준의 장거리 의존성과 전역적 문맥 통합
  • 메모리 효율: GPT-2/3의 순수 글로벌 어텐션 대비 메모리 절감
  • 성능 유지: Longformer처럼 완전 로컬만 사용하는 것보다 장거리 의존성을 잘 포착
import torch
import torch.nn as nn
import torch.nn.functional as F
 
class LocalAttention(nn.Module):
    """GPT-Neo의 Local Attention (window_size=256)"""
    def __init__(self, d_model, n_heads, window_size=256):
        super().__init__()
        self.n_heads = n_heads
        self.window_size = window_size
        self.d_k = d_model // n_heads
        self.qkv = nn.Linear(d_model, 3 * d_model)
        self.proj = nn.Linear(d_model, d_model)
    
    def forward(self, x):
        B, T, C = x.shape
        qkv = self.qkv(x).reshape(B, T, 3, self.n_heads, self.d_k)
        q, k, v = qkv.unbind(dim=2)
        
        # Local windowed attention mask
        # 각 토큰은 좌측 window_size 토큰만 참조
        mask = torch.ones(T, T, device=x.device).triu(diagonal=1).bool()
        local_mask = torch.ones(T, T, device=x.device).tril(
            diagonal=-(self.window_size + 1)
        ).bool()
        mask = mask | local_mask  # causal + local window
        
        attn = torch.einsum('bthd,bshd->bhts', q, k) / (self.d_k ** 0.5)
        attn = attn.masked_fill(mask.unsqueeze(0).unsqueeze(0), float('-inf'))
        attn = F.softmax(attn, dim=-1)
        
        out = torch.einsum('bhts,bshd->bthd', attn, v)
        out = out.reshape(B, T, C)
        return self.proj(out)

벤치마크/성능

벤치마크GPT-Neo 125MGPT-Neo 1.3BGPT-Neo 2.7B
Pile BPB0.7527-0.7165
Pile PPL6.159-5.646
LAMBADA (acc)-57.2%62.2%
LAMBADA (PPL)-7.505.63
WikiText PPL13.10-11.39

GPT-3와의 비교 (유사 규모)

모델파라미터LAMBADA (acc)HellaSwag
GPT-3 125M125M42.7%33.7%
GPT-Neo 125M125M~43%~34%
GPT-3 2.7B2.7B67.1%55.8%
GPT-Neo 2.7B2.7B62.2%55.8%

GPT-Neo는 동일 규모의 GPT-3와 비교했을 때 근접한 성능을 보여주었으나, LAMBADA에서 약간의 차이가 있었다.

관련 모델 비교

특성GPT-2GPT-NeoGPT-JGPT-NeoX
파라미터1.5B2.7B6B20B
어텐션GlobalLocal+GlobalGlobalGlobal
위치 인코딩LearnedLearnedRoPERoPE
학습 데이터WebTextThe PileThe PileThe Pile
프레임워크TFJAXJAXPyTorch
출시20192021.032021.062022.04

학습 상세

The Pile 데이터셋

EleutherAI가 자체 구축한 825GB (약 300B 토큰) 코퍼스:

  • Wikipedia, arXiv, GitHub, PubMed, StackExchange 등 22개 도메인
  • 단일 도메인 편향을 줄이기 위한 다양한 소스 혼합

학습 설정

  • 토크나이저: GPT-2 BPE (50,257 vocab) 재사용
  • 인프라: Google TPU Research Cloud (TRC) 프로그램
  • TPU v3-256 Pod
  • 프레임워크: JAX 기반 Mesh Transformer
  • 학습 토큰:
    • 2.7B: ~420B 토큰 (The Pile 1.4 에폭)
    • 1.3B: ~380B 토큰
    • 125M: ~300B 토큰

실무 활용

1. 오픈소스 NLP 연구 기반

GPT-Neo는 오픈소스 LLM 연구의 초기 기반으로, 수많은 파인튜닝 연구에 활용되었다.

2. 텍스트 생성

Hugging Face를 통해 쉽게 접근 가능하며, 간단한 텍스트 생성 태스크에 활용 가능하다.

3. 스케일링 법칙 연구

125M/1.3B/2.7B 세 가지 크기로 제공되어 스케일링 효과를 연구하기에 적합하다.

4. 아키텍처 비교 연구

Local+Global Attention 패턴의 효과를 실증적으로 비교할 수 있는 모델이다.

한계 및 전망

한계

  1. 제한된 규모: 2.7B가 최대로, 대형 모델의 emergent abilities를 관찰하기 어렵다
  2. 성능 격차: 동일 규모 GPT-3 대비 일부 태스크에서 성능 차이가 존재한다
  3. 영어 전용: 다국어 지원이 없다
  4. 아키텍처 한계: Learned position embedding으로 길이 외삽이 제한적이다

전망

GPT-Neo의 진정한 유산은 성능이 아닌 **운동(movement)**에 있다. “오픈소스로도 대형 언어 모델을 만들 수 있다”는 것을 증명함으로써, GPT-J(6B), GPT-NeoX(20B), Pythia 시리즈 등 EleutherAI 후속 모델의 아키텍처적 기반이 되었고, 더 나아가 LLaMA, Falcon, Mistral 등 오픈소스 LLM 생태계 전체의 시발점이 되었다. The Pile 데이터셋과 Apache 2.0 라이선스로의 완전 공개는 이후 오픈소스 모델 공개 트렌드에 직접적인 영향을 미쳤다.


참고 문헌

  • Black, S., et al. (2021). “GPT-Neo: Large Scale Autoregressive Language Modeling with Mesh-Tensorflow.” EleutherAI.
  • Gao, L., et al. (2020). “The Pile: An 800GB Dataset of Diverse Text for Language Modeling.”
  • Child, R., et al. (2019). “Generating Long Sequences with Sparse Transformers.”

관련 문서