ModernBERT 릴리스 노트
ModernBERT는 BERT와 같은 모델을 대체하기 위해 설계된 새로운 인코더 전용(encoder-only) 모델 제품군입니다. 이 모델은 속도와 정확도 모두에서 이전 인코더보다 파레토 개선(Pareto improvement)을 이루었으며, 8,192 토큰의 시퀀스 길이를 특징으로 하고 학습 데이터에 상당한 양의 코드를 포함하고 있습니다.
모델 변체 및 가용성
ModernBERT는 두 가지 크기로 제공됩니다:
- Base: 14억 9천만 매개변수
- Large: 3억 9천 5백만 매개변수
이 모델들은 transformers v4.48.0에 통합되었습니다. 최대 효율을 위해 개발자들은 ModernBERT를 Flash Attention 2와 함께 사용할 것을 권장합니다. 이전 BERT 모델들과 달리 ModernBERT는 token type IDs를 사용하지 않습니다.
성능 및 효율성
ModernBERT는 검색, 자연어 이해 및 코드 검색 작업에서 이전 인코더 모델들을 능가합니다.
주요 벤치마크
- 정확도: ModernBERT는 DeBERTa의 5분의 1 미만의 메모리를 사용하면서 GLUE에서 DeBERTaV3를 이긴 최초의 base-size 모델입니다.
- 속도: 혼합 길이 입력에 대해 DeBERTa보다 최대 4배 빠르며, 긴 문맥 추론에 대해 NomicBERT 및 GTE-en-MLM과 같은 고품질 모델보다 거의 3배 빠릅니다.
- 문맥 길이: 8,192 토큰의 문맥 창을 가진 ModernBERT의 용량은 기존 대부분의 인코더보다 16배 이상 커서, RAG 파이프라인 및 긴 문맥 검색 성능을 크게 향상시킵니다.
- 코드 검색: ModernBERT는 대규모 코드 데이터로 학습된 최초의 인코더 모델로, StackOverflow-QA (SQA) 데이터셋에서 80점 이상을 기록했습니다.
하드웨어 효율성
NVIDIA RTX 4090 GPU에서 테스트된 ModernBERT는 가변 길이 입력에 대해 탁월한 효율성을 보여줍니다. 무거운 xformers 의존성을 피하고 Flash Attention만 필요로 합니다. 이 설계는 더 큰 배치 크기를 가능하게 하여, 더 작고 저렴한 GPU나 브라우저 및 휴대폰에서 직접 배포하는 것을 가능하게 합니다.
기술 아키텍처
ModernBERT는 최근 대규모 언어 모델(LLM) 연구의 진보를 통합하여 클래식 Transformer 아키텍처를 업데이트했으며, 특히 Transformer++에서 영감을 얻었습니다.
아키텍처 개선 사항
- Rotary Positional Embeddings (RoPE): 기존의 positional encoding을 대체하여 상대적 단어 이해도를 높이고 더 긴 시퀀스로의 확장을 가능하게 합니다.
- GeGLU Layers: 표준 MLP 레이어를 대체하여 기존 GeLU 활성화 함수를 개선했습니다.
- 대칭성 및 안정성: 아키텍처에서 불필요한 bias 항을 제거하고 임베딩 뒤에 추가적인 정규화 레이어를 추가하여 학습을 안정화했습니다.
효율성 메커니즘
- Alternating Attention: 계산 복잡도를 줄이기 위해 ModernBERT는 3개 레이어마다 한 번씩만 global attention(전체 입력에 주의)을 사용하며, 나머지 레이어는 128 토큰의 슬라이딩 윈도우를 가진 local attention을 사용합니다.
- Unpadding 및 Sequence Packing: ModernBERT는 padding 토큰을 제거하고 시퀀스를 미니 배치로 연결하여 낭비되는 계산을 제거합니다. 이 구현은 Flash Attention의 RoPE 지원을 활용하여 이전의 unpadding 방식보다 10-20%의 속도 향상을 제공합니다.
- 하드웨어 인식 설계: 모델 차원은 일반적인 추론용 GPU(RTX 3090/4090, A10, T4, L4)와 일치하도록 그리드 탐색을 통해 최적화되었으며, BERT 호환 임베딩 크기(base는 768, large는 1024)를 유지합니다.
학습 프로세스
ModernBERT는 웹 문서, 과학 논문, 코드를 포함한 다양한 영어 소스에서 추출된 2조 개의 토큰으로 학습되어, 기존 인코더에서 흔히 나타나는 데이터 반복 의존성을 줄였습니다.
학습 단계
- 초기 단계: 시퀀스 길이 1,024로 1.7조 개의 토큰으로 학습.
- 긴 문맥 적응: 시퀀스 길이 8,192로 2,500억 개의 토큰으로 학습.
- Annealing: ProLong를 기반으로 샘플링된 혼합물을 사용하는 500억 개의 토큰을 이용한 최종 단계.
학습 최적화
- Masking Rate: 15%에서 30%로 증가.
- 목적 함수: 오버헤드를 줄이기 위해 Next-Sentence Prediction (NSP) 목적 함수를 제거.
- Batch-Size Warmup: 초기 학습을 가속화하기 위해 배치 크기를 점진적으로 증가.
- Weight Tiling: ModernBERT-Large는 무작위 초기화 대신 ModernBERT-Base의 가중치를 타일링하여 초기화되었으며, 이는 학습 속도와 성능을 향상시켰습니다.