LLaMA: 공개 · 효율적인 기반 언어 모델
공개 데이터로 작은 모델을 오래 학습해 GPT-3를 이긴 오픈 기반 언어 모델 LLaMA
먼저 알아야 할 것
다루는 내용
LLaMA는 공개 데이터만으로 만든 약 1.4조 토큰으로 70억~650억 파라미터 트랜스포머 디코더를 학습한 모델 모음입니다. 추론 비용을 생각해 Chinchilla 권장보다 훨씬 많은 토큰으로 작은 모델을 학습했고, RMSNorm 사전 정규화 · SwiGLU · 회전 위치 임베딩을 썼습니다. LLaMA-13B는 대부분 벤치마크에서 GPT-3를, LLaMA-65B는 상식 추론 · 질의응답에서 Chinchilla-70B · PaLM-540B와 견줬지만 MMLU에서는 다소 뒤졌고, 모델을 연구 커뮤니티에 공개했습니다.
초록
70억에서 650억 파라미터에 이르는 기반 언어 모델 모음 LLaMA를 소개합니다. 수조 개의 토큰으로 모델을 학습하며, 독점적이고 접근할 수 없는 데이터에 기대지 않고 공개된 데이터만으로도 최고 수준의 모델을 학습할 수 있음을 보입니다. 특히 LLaMA-13B는 대부분의 벤치마크에서 GPT-3(1,750억)를 앞서고, LLaMA-65B는 최고 모델인 Chinchilla-70B · PaLM-540B와 견줄 만합니다. 모든 모델을 연구 커뮤니티에 공개합니다.
해설
LLaMA: 공개 · 효율적인 기반 언어 모델
공개된 데이터만으로 70억~650억 파라미터 언어 모델을 1조~1.4조 토큰까지 오래 학습해, 130억 모델이 GPT-3(1,750억)를 대부분 벤치마크에서 이기게 만든 Meta의 논문입니다. "학습 비용이 아니라 추론 비용 기준으로 작은 모델을 더 오래 학습하라"는 방향을 보였고, 모델을 연구자에게 공개해 오픈소스 LLM 생태계의 출발점이 됐습니다.
| 항목 | 내용 |
|---|---|
| 원제 | LLaMA: Open and Efficient Foundation Language Models |
| 저자 | Hugo Touvron 외 13명 (Meta AI) |
| 발표 | 2023 · arXiv 2302.13971 |
| 트랙 · 수준 | 스케일링·효율 · 중급 |
| 먼저 알면 좋은 것 | 트랜스포머 디코더(GPT 구조), 스케일링 법칙 · Chinchilla, BPE 토큰화, 제로샷 · 퓨샷 평가, 레이어 정규화 |
들어가기 전에
이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.
- 연산 최적 대형 언어 모델 학습 (Chinchilla) — 같은 연산이면 모델과 학습 토큰을 같은 비율로 늘려야 함을 보이고 Chinchilla로 증명한 논문
- 어텐션만 있으면 된다 (트랜스포머) — 순환 없이 어텐션만으로 번역 모델을 만든 트랜스포머 — 스케일드 닷-프로덕트 · 멀티헤드 어텐션 · 위치 인코딩의 수식과 의미
한눈에 보기
- Chinchilla의 "학습 연산 최적" 기준과 달리, 추론 비용을 생각하면 작은 모델을 훨씬 오래 학습하는 편이 낫다는 논리를 알게 됩니다.
- 공개 데이터만으로 만든 1.4조 토큰 학습 데이터의 구성을 알게 됩니다.
- 원래 트랜스포머에서 바꾼 세 가지(RMSNorm 사전 정규화 · SwiGLU · 회전 위치 임베딩)를 작은 숫자로 따라가 보게 됩니다.
- LLaMA-13B · 65B가 GPT-3 · Chinchilla · PaLM과 비교해 어디서 이기고 어디서 졌는지 알게 됩니다.
초록 (번역)
70억에서 650억 파라미터에 이르는 기반 언어 모델 모음 LLaMA를 소개합니다. 수조 개의 토큰으로 모델을 학습하며, 독점적이고 접근할 수 없는 데이터에 기대지 않고 공개된 데이터만으로도 최고 수준의 모델을 학습할 수 있음을 보입니다. 특히 LLaMA-13B는 대부분의 벤치마크에서 GPT-3(1,750억)를 앞서고, LLaMA-65B는 최고 모델인 Chinchilla-70B · PaLM-540B와 견줄 만합니다. 모든 모델을 연구 커뮤니티에 공개합니다.
무엇을 풀었나
Chinchilla 연구는 "정해진 학습 연산으로 가장 좋은 모델"을 찾는 법을 보였습니다. 예를 들어 100억 모델은 2,000억 토큰으로 학습하라고 권합니다. 하지만 저자들은 이 기준이 추론 비용을 고려하지 않는다고 지적합니다.
- 모델을 서비스하면 학습은 한 번이지만 추론은 수없이 반복됩니다.
- 같은 성능이라면 학습이 빠른 모델보다 추론이 빠른 모델(곧 작은 모델)이 낫습니다.
- 큰 모델을 학습하는 쪽이 특정 성능에 더 싸게 닿을 수는 있어도, 작은 모델을 더 오래 학습한 쪽이 결국 추론에서 더 쌉니다.
- 실제로 70억 모델은 1조 토큰을 넘게 학습해도 계속 좋아졌습니다.
또 하나의 문제는 데이터 공개성이었습니다. Chinchilla · PaLM · GPT-3는 공개되지 않았거나 문서화가 부족한 데이터("Books – 2TB", "소셜 미디어 대화" 등)를 썼습니다. OPT · GPT-NeoX · BLOOM · GLM 같은 공개 모델은 PaLM-62B나 Chinchilla에 견줄 만하지 못했습니다.
전체 흐름
flowchart LR
A[공개 데이터만 수집<br/>CommonCrawl · C4 · GitHub · 위키백과<br/>책 · arXiv · StackExchange] --> B[정제 · 중복 제거<br/>약 1.4조 토큰]
B --> C[BPE 토큰화<br/>숫자는 한 자리씩 · 모르는 문자는 바이트로]
C --> D[트랜스포머 디코더<br/>RMSNorm 사전 정규화 · SwiGLU · RoPE]
D --> E[AdamW · 코사인 학습률<br/>배치 400만 토큰]
E --> F[7B · 13B: 1조 토큰<br/>33B · 65B: 1.4조 토큰]
F --> G[제로샷 · 퓨샷 20개 벤치마크 평가]
G --> H[연구 커뮤니티에 모델 공개]핵심 아이디어
1. 추론 예산 기준 — 작은 모델을 더 오래
한 문장 직관: 공장을 지을 때 "짓는 비용"만 보지 말고 "평생 돌리는 전기료"까지 보면, 조금 더 공들여 지은 작은 공장이 이득입니다.
단계별 설명
- 학습 연산은 대략 (: 파라미터, : 토큰)입니다. 추론 비용은 토큰당 대략 에 비례합니다.
- 같은 학습 연산이라면 Chinchilla 기준 최적점이 있습니다.
- 그러나 추론을 많이 할수록, 을 줄이고 를 늘려 같은 성능에 도달하는 편이 전체 비용을 낮춥니다.
- 그래서 LLaMA는 Chinchilla 권장보다 훨씬 많은 토큰으로 학습합니다.
| 모델 | 파라미터 | 학습 토큰 | 파라미터당 토큰(해설용 계산) |
|---|---|---|---|
| LLaMA-7B | 67억 | 1.0조 | 약 149 |
| LLaMA-13B | 130억 | 1.0조 | 약 77 |
| LLaMA-33B | 325억 | 1.4조 | 약 43 |
| LLaMA-65B | 652억 | 1.4조 | 약 21 |
숫자로 해 보기 (해설용 계산): Chinchilla 표의 어림(파라미터당 약 20토큰)이라면 67억 모델은 약 1,340억 토큰이면 "학습 연산 최적"입니다. LLaMA-7B는 그 7배가 넘는 1조 토큰을 학습했고, 논문 그림에서 학습 손실은 끝까지 계속 내려갔습니다.
2. 공개 데이터만으로 만든 1.4조 토큰
한 문장 직관: 누구나 구할 수 있는 재료만으로 요리해야 레시피를 공개할 수 있습니다.
| 데이터 | 샘플링 비율 | 1.4조 토큰 학습 시 에폭 | 디스크 크기 | 처리 |
|---|---|---|---|---|
| 영어 CommonCrawl | 67.0% | 1.10 | 3.3TB | CCNet 파이프라인(줄 단위 중복 제거 · 언어 판별 · n-그램 품질 필터) + 위키백과 참조 페이지 분류기 |
| C4 | 15.0% | 1.06 | 783GB | 문장부호 · 단어 수 같은 휴리스틱 필터 |
| GitHub | 4.5% | 0.64 | 328GB | Apache · BSD · MIT 라이선스만, 파일 단위 완전 중복 제거 |
| 위키백과 | 4.5% | 2.45 | 83GB | 2022년 6~8월, 라틴 · 키릴 문자 20개 언어 |
| Gutenberg · Books3 | 4.5% | 2.23 | 85GB | 내용 90% 넘게 겹치는 책 제거 |
| arXiv | 2.5% | 1.06 | 92GB | 첫 절 이전 · 참고문헌 · 주석 제거, 매크로 펼치기 |
| Stack Exchange | 2.0% | 1.03 | 78GB | 상위 28개 사이트, 답변을 점수 순 정렬 |
대부분의 토큰은 학습 중 한 번만 쓰였고, 위키백과와 책은 약 두 번 봤습니다.
토크나이저: SentencePiece 구현의 BPE를 썼고, 두 가지를 특별히 했습니다. ① 모든 숫자를 한 자리씩 쪼갭니다. ② 모르는 UTF-8 문자는 바이트로 분해합니다.
숫자로 해 보기 (해설용): "2023년 매출 12345원"이라면 숫자 부분은 2 0 2 3, 1 2 3 4 5처럼 자리별 토큰이 됩니다. "12345"가 통째로 하나의 토큰이 되거나 "123 · 45"처럼 제멋대로 잘리지 않으니, 자릿수 구조가 일정하게 유지됩니다.
3. 구조 바꿈 ① — RMSNorm 사전 정규화
한 문장 직관: 각 층에 들어가기 전에 값의 크기를 맞춰 주면 깊은 모델도 안정적으로 학습됩니다.
단계별 설명
- 원래 트랜스포머는 하위 층의 출력을 정규화했습니다.
- LLaMA는 GPT-3처럼 하위 층의 입력을 정규화합니다(사전 정규화).
- 정규화 함수로 평균을 빼지 않고 제곱 평균의 제곱근(RMS)으로만 나누는 RMSNorm을 씁니다.
(논문은 RMSNorm을 썼다고만 밝힙니다. 위 식은 RMSNorm의 표준 정의를 설명용으로 적은 것입니다.)
| 기호 | 뜻 |
|---|---|
| 정규화할 벡터(길이 ) | |
| 원소 제곱 평균의 제곱근(RMS) | |
| 학습되는 크기 조절 벡터 | |
| 원소별 곱 |
숫자로 해 보기 (해설용): 이면 제곱 평균은 , RMS는 입니다. 정규화하면 이 됩니다(일 때).
4. 구조 바꿈 ② — SwiGLU 활성화
한 문장 직관: 피드포워드 층에서 값을 그냥 통과 · 차단(ReLU)하는 대신, 다른 경로가 계산한 "문지기 값"을 곱해 얼마나 통과시킬지 부드럽게 정합니다.
단계별 설명
- 피드포워드 층의 ReLU를 PaLM처럼 SwiGLU로 바꿨습니다.
- SwiGLU는 입력을 두 갈래로 투영해, 한쪽에 Swish 활성화를 걸고 다른 쪽과 원소별로 곱합니다.
- 가중치 행렬이 하나 더 생기므로, 파라미터 수를 맞추려고 중간 차원을 PaLM의 대신 로 둡니다.
(논문은 SwiGLU를 썼고 중간 차원을 로 했다고만 밝힙니다. 위 식은 SwiGLU의 표준 형태를 설명용으로 적은 것입니다.)
| 기호 | 뜻 |
|---|---|
| 입력을 중간 차원으로 보내는 두 투영 행렬 | |
| 다시 원래 차원으로 돌리는 행렬 | |
| 시그모이드 함수 | |
| 원소별 곱 — "문지기" 역할 |
숫자로 해 보기 (해설용 계산): 이면 중간 차원은 입니다. 행렬이 3개라 으로, ReLU 방식 와 거의 같은 파라미터 수가 됩니다.
5. 구조 바꿈 ③ — 회전 위치 임베딩(RoPE)
한 문장 직관: 단어 벡터를 "자리 번호만큼 돌려" 놓으면, 두 단어의 내적이 두 자리의 차이에만 의존하게 되어 상대적 위치를 자연스럽게 담습니다.
단계별 설명
- 입력에 절대 위치 임베딩을 더하는 방식을 없앴습니다.
- 대신 GPT-Neo처럼 네트워크의 매 층에서 질의 · 키 벡터에 회전 위치 임베딩(RoPE)을 적용합니다.
- 벡터를 두 성분씩 짝지어, 위치 에 비례하는 각도 만큼 회전시킵니다.
(논문은 RoPE를 썼다고만 밝힙니다. 위 식은 2차원 경우의 표준 정의를 설명용으로 적은 것입니다.)
| 기호 | 뜻 |
|---|---|
| 질의 · 키 토큰의 위치 | |
| 성분 쌍마다 정해진 회전 속도 | |
| 2차원 회전 행렬 | |
| 내적 — 어텐션 점수 |
숫자로 해 보기 (해설용, ): 이라 하고, 질의는 위치 1, 키는 위치 3에 있다면 질의는 0.5라디안, 키는 1.5라디안 돌아갑니다. 내적은 입니다. 두 토큰을 위치 11과 13으로 옮겨도 차이가 2라 내적은 그대로 0.540입니다.
6. 학습 설정과 효율적인 구현
- 모델 크기: 7B(차원 4,096, 헤드 32, 층 32) · 13B(5,120, 40, 40) · 33B(6,656, 52, 60) · 65B(8,192, 64, 80)
- 옵티마이저: AdamW(, ), 코사인 학습률(최종값 = 최대의 10%), 가중치 감쇠 0.1, 기울기 자르기 1.0, 워밍업 2,000단계, 배치 400만 토큰. 최대 학습률 7B · 13B , 33B · 65B
- 어텐션 구현: xformers 라이브러리의 효율적인 인과 어텐션(플래시어텐션의 역전파를 사용). 어텐션 가중치를 저장하지 않고, 인과 마스크로 가려지는 점수는 계산하지 않습니다.
- 체크포인팅: 선형층 출력처럼 계산이 비싼 활성값은 저장해 두고, 역전파를 직접 구현해 다시 계산할 양을 줄였습니다. 모델 · 시퀀스 병렬화와 GPU 간 통신 겹치기도 썼습니다.
- 속도: 65B 모델은 A100(80GB) 2,048장에서 GPU당 초당 약 380토큰을 처리해, 1.4조 토큰 학습에 약 21일 걸렸습니다.
숫자로 해 보기 (해설용 계산): 만 토큰/초이므로 초, 곧 약 20.8일로 논문의 "약 21일"과 맞습니다.
결과
상식 추론(제로샷 정확도 %)
| 모델 | BoolQ | PIQA | HellaSwag | WinoGrande | ARC-e | ARC-c | OBQA |
|---|---|---|---|---|---|---|---|
| GPT-3 175B | 60.5 | 81.0 | 78.9 | 70.2 | 68.8 | 51.4 | 57.6 |
| Chinchilla 70B | 83.7 | 81.8 | 80.8 | 74.9 | - | - | - |
| PaLM 540B | 88.0 | 82.3 | 83.4 | 81.1 | 76.6 | 53.0 | 53.4 |
| LLaMA-13B | 78.1 | 80.1 | 79.2 | 73.0 | 74.8 | 52.7 | 56.4 |
| LLaMA-65B | 85.3 | 82.8 | 84.2 | 77.0 | 78.9 | 56.0 | 60.2 |
LLaMA-65B는 BoolQ를 뺀 모든 항목에서 Chinchilla-70B를, BoolQ · WinoGrande를 뺀 모든 항목에서 PaLM-540B를 앞섰습니다. LLaMA-13B는 10배 작은데도 대부분 항목에서 GPT-3를 앞섰습니다.
클로즈드북 질의응답(정확 일치 %)
| 모델 | NaturalQuestions 0-샷 | NaturalQuestions 64-샷 | TriviaQA 0-샷 | TriviaQA 64-샷 |
|---|---|---|---|---|
| GPT-3 175B | 14.6 | 29.9 | - | - |
| Chinchilla 70B | 16.6 | 35.5 | 55.4 | 64.6 |
| PaLM 540B | 21.2 | 39.6 | - | - |
| LLaMA-13B | 20.1 | 31.9 | 56.6 | 64.0 |
| LLaMA-65B | 23.8 | 39.9 | 68.2 | 73.0 |
LLaMA-13B는 추론 때 V100 GPU 한 장에서 돌아가면서도 GPT-3 · Chinchilla와 겨룰 만했습니다.
그 밖의 결과
- 읽기 이해(RACE 제로샷): LLaMA-65B 고등 51.6 · 중등 67.9로 PaLM-540B(49.1 · 68.1)와 비슷했습니다.
- 수학: GSM8k에서 LLaMA-65B는 50.9%(다수결 maj1@k 69.7%)로, 수학 데이터로 미세조정하지 않았는데도 Minerva-62B(52.4%, 68.5%)를 다수결 기준으로 앞섰습니다.
- 코드(pass@1): HumanEval 23.7%, MBPP 37.7%로 PaLM-62B(15.9%, 21.4%)보다 높았고, 13B 이상은 LaMDA-137B를 두 과제 모두에서 앞섰습니다.
- MMLU(5-샷): LLaMA-65B 63.4%로 Chinchilla-70B(67.5%) · PaLM-540B(69.3%)보다 낮았습니다. 저자들은 책 · 학술 데이터가 177GB뿐이라 최대 2TB의 책을 쓴 모델들보다 불리했을 것이라고 봅니다.
- 지시 미세조정: 간단한 지시 미세조정(LLaMA-I)만으로 MMLU가 68.9%까지 올랐습니다.
- 탄소 배출(같은 데이터센터 기준 추정): LLaMA-65B 학습에 GPU 약 102만 시간 · 449MWh · 173tCO2eq가 들었습니다(OPT-175B 137, BLOOM-175B 183tCO2eq).
왜 중요한가 · 이후 영향
- 오픈소스 LLM의 출발점: 연구자들에게 가중치를 공개해, 이후 수많은 공개 모델 · 미세조정 모델(LoRA · QLoRA 적용 포함)의 기반이 됐습니다.
- "작게 · 오래"의 정착: 추론 비용 기준으로 작은 모델을 Chinchilla 권장보다 훨씬 오래 학습하는 방식이 이후 공개 모델들의 표준 전략이 됐습니다.
- 공개 데이터로도 가능: 독점 데이터 없이 최고 수준에 근접할 수 있음을 보여, 재현 가능한 LLM 연구의 길을 열었습니다.
- 표준 구조 정착: RMSNorm 사전 정규화 + SwiGLU + RoPE 조합은 이후 많은 LLM이 그대로 따르는 기본 설계가 됐습니다.
한계 · 주의할 점
- 지식 · 전문 과목에서 약함: MMLU에서 Chinchilla · PaLM보다 몇 %p 낮았고, 책 · 학술 데이터 부족이 이유로 추정됩니다.
- 영어 중심: CommonCrawl은 영어만, 위키백과는 라틴 · 키릴 문자 20개 언어만 썼습니다. 한국어 등 다른 문자의 언어 성능은 이 논문이 다루지 않습니다.
- 편향 · 유해성: 웹 데이터 비중이 커서 편향 · 유해 출력 위험이 있으며, 논문도 측정한 벤치마크만으로 위험을 다 이해하기에는 부족하다고 밝힙니다.
- 기반 모델일 뿐: 지시 따르기 · 대화용으로 정렬된 모델이 아니며, 지시 미세조정은 한 번의 간단한 실험만 했습니다.
- 평가 일부의 신뢰성: SIQA는 학습 중 성능 변동이 커서 신뢰하기 어려운 벤치마크일 수 있다고 저자들이 적습니다.
이어서 읽을 것
- 앞: 연산 최적 대형 언어 모델 학습 (Chinchilla) · 언어 모델은 퓨샷 학습자다 (GPT-3) · 플래시어텐션
- 뒤: QLoRA: 양자화한 LLM 효율적으로 미세조정 · Mixtral: 전문가 혼합 모델 · PagedAttention (vLLM)
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 기반 모델(foundation model) | 다양한 과제에 맞춰 쓸 수 있도록 넓게 사전학습한 모델 |
| 추론 예산 | 모델을 서비스하며 답을 만드는 데 드는 계산 비용 |
| CCNet | CommonCrawl 웹 데이터를 정제하는 공개 파이프라인 |
| 사전 정규화(pre-normalization) | 하위 층의 입력을 정규화하는 방식 |
| RMSNorm | 평균을 빼지 않고 제곱 평균의 제곱근으로만 나누는 정규화 |
| SwiGLU | 두 투영 중 한쪽에 Swish를 걸어 다른 쪽과 곱하는 활성화 |
| 회전 위치 임베딩(RoPE) | 질의 · 키를 위치에 비례하는 각도로 회전시켜 상대 위치를 담는 방법 |
| AdamW | 가중치 감쇠를 분리한 Adam 옵티마이저 |
| 기울기 자르기 | 기울기 크기가 문턱을 넘으면 줄이는 기법 |
| 체크포인팅 | 역전파용 활성값 일부만 저장하고 나머지는 다시 계산하는 메모리 절약 기법 |
| maj1@k | 답을 번 생성해 다수결로 정하는 평가 방식 |
| pass@1 | 코드를 한 번 생성해 테스트를 통과하는 비율 |
스스로 점검
- LLaMA가 Chinchilla 권장보다 훨씬 많은 토큰으로 학습한 이유는 무엇인가요?
Chinchilla 기준은 학습 연산만 따지지만, 실제 서비스에서는 추론 비용이 중요하기 때문입니다. 같은 성능이면 작은 모델을 오래 학습하는 편이 추론에서 더 싸고, 70억 모델도 1조 토큰 넘게 계속 좋아졌습니다.
- 원래 트랜스포머에서 바꾼 세 가지 구조는 무엇인가요?
RMSNorm을 쓴 사전 정규화, ReLU 대신 SwiGLU 활성화(중간 차원 ), 절대 위치 임베딩 대신 매 층 회전 위치 임베딩(RoPE)입니다.
- LLaMA-13B와 LLaMA-65B의 대표 결과를 하나씩 말해 보세요.
LLaMA-13B는 10배 작은데도 대부분 벤치마크에서 GPT-3(1,750억)를 앞섰고, LLaMA-65B는 상식 추론에서 BoolQ를 뺀 모든 항목에서 Chinchilla-70B를 앞섰습니다(MMLU에서는 63.4%로 뒤짐).
다음에 볼 것
이 글을 이해했다면 이어서 보면 좋은 항목입니다.
- 수치 형식 · 혼합 정밀도 · 양자화 — 큰 모델을 적은 비트로 학습 · 실행하는 방법
- Mixtral: 전문가 혼합 모델 — 전문가 8명 중 2명만 쓰는 MoE로 활성 130억 파라미터에 Llama 2 70B급 성능을 낸 Mixtral
- LoRA: 저차원 적응으로 대형 모델 미세조정 — 가중치를 얼리고 저랭크 행렬 BA만 학습해 큰 모델을 싸게 미세조정하는 LoRA
출처
- 원문: https://arxiv.org/abs/2302.13971 (2023 · Hugo Touvron 외)
AI 원리부터 이해하기 · 스케일링·효율 모듈
스케일링·효율 모듈 학습
이 글은 스케일링·효율 모듈의 학습 자료입니다. 전체 19개 자료 중 4번째입니다.
출처·원문
원문 보기요약만