ALMA: 9,000개 주석만으로 LLM을 정렬하기
ALMA: Alignment with Minimal Annotation (Yasunaga et al., Meta, 2024)
Introduction
이 시리즈에서 이 글의 위치
이 시리즈는 “정렬을 깨는 공격”에서 출발해 “정렬을 만드는 방어”로 넘어왔다. Constitutional AI에서 우리는 인간 선호 라벨 없이 AI feedback(헌법)만으로 무해성을 학습시키는 길을 봤다. PIKA에서는 데이터의 양이 아니라 난이도에 집중하면 적은 예시로도 정렬 신호를 뽑아낼 수 있다는 걸 봤다.
이번 글은 이 시리즈의 데이터셋 편 마지막 글이다. 다루는 논문은 Meta FAIR의 ALMA(Alignment with Minimal Annotation)다. 한 줄로 요약하면 이렇다.
사람이 단 9,000개의 라벨만 달고(전체의 1% 미만), 나머지는 모델이 스스로 합성한 데이터로 채워 Llama3-Instruct에 거의 동률까지 정렬한다.
여기서 왜 이게 “방어”의 글인가? 시리즈 내내 봤듯, 공격이 깨려는 대상은 결국 정렬된 모델의 정렬이다. 그 정렬을 만드는 표준 레시피는 SFT + RLHF인데, 둘 다 막대한 인간 라벨을 먹는다. Llama3-Instruct만 해도 수백만 건의 사람 데이터가 들어간다. 라벨 비용이 비싸면, 새 위협이 나올 때마다 방어를 갱신하기도 어렵다. ALMA는 그 비용을 두 자릿수 배 줄이는 방법을 보여준다. 정렬을 싸게 만들 수 있다는 건, 방어를 빠르게 반복(iterate)할 수 있다는 뜻이다.
CAI와 PIKA, 그리고 ALMA
세 논문을 데이터 효율의 축에서 나란히 놓아 보자.
| 논문 | “줄인” 비용 | 핵심 트릭 | 인간 입력 |
|---|---|---|---|
| Constitutional AI | 선호 라벨 → 0건 | 자연어 헌법 + AI가 critique·판정 | 헌법 원칙 ~16개 |
| PIKA | 데이터 양 | 난이도 높은 예시 선별 집중 | 소수의 고난도 예시 |
| ALMA | SFT·judge 라벨 99%↓ | few-shot 합성 + 다중 체크포인트 + 강한 judge | 9K 라벨(5K SFT + 4K judge) |
CAI는 “선호 판정을 AI에게 넘긴다”였고, ALMA는 “프롬프트도, 응답도, 판정 데이터도 거의 다 모델이 만들게 하고, 사람은 씨앗만 뿌린다”다. PIKA가 적은 데이터의 질을 파고들었다면, ALMA는 적은 라벨에서 출발해 자기증류로 judge를 키우고 그 judge로 데이터를 무한정 불린다. 셋 다 “사람이 적게 손대도 정렬은 된다”는 같은 메시지를 다른 각도에서 친다.

위 그림이 논문의 전부를 압축한다. 왼쪽: Llama3 Base(정렬 안 된 사전학습 모델)에서 출발해 9K 씨앗 데이터만으로 학습하면, 정렬 성능이 Llama3-Instruct에 근접한다. 오른쪽: 그걸 가능케 한 파이프라인(프롬프트 합성 → 응답 생성 → judge로 best 선택 → 재학습)을 반복한다.
Background
표준 정렬 레시피와 그 비용
LLM을 “지시를 따르고 유해 요청을 거부하도록” 만드는 표준 흐름은 두 단계다.
- SFT(지도 미세조정): (지시, 좋은 응답) 쌍을 사람이 작성하거나 큐레이션해 모델을 미세조정한다.
- 선호 최적화(RLHF/DPO 등): 한 프롬프트에 대한 두 응답을 사람이 비교해 “어느 쪽이 낫다”를 라벨링하고, 이 선호로 보상 모델 또는 직접 정책을 최적화한다.
문제는 두 단계 모두 사람 라벨을 양껏 먹는다는 것이다. 공개된 정렬 데이터셋도 수만~수십만 건, 상용 모델은 수백만 건 규모다. 라벨 한 건당 사람의 시간이 들고, 도메인이 바뀌거나 새 공격 표면이 생기면 다시 수집해야 한다.
비유하자면 표준 레시피는 요리책의 모든 레시피를 셰프가 직접 손으로 적는 방식이다. 비싸고 느리다. ALMA가 묻는 건 이거다 — 레시피 몇 개만 손으로 적고, 나머지는 셰프의 입맛(judge)을 학습한 보조 요리사들이 무한히 변주하게 하면 안 되나?
핵심 도전: “적은 라벨”의 세 가지 병목
씨앗 라벨을 9K로 줄이면 세 곳에서 데이터가 마른다.
- 프롬프트 다양성: 5K개 프롬프트로는 모델이 마주할 입력 분포를 못 덮는다.
- 응답 품질·다양성: 좋은 응답 예시가 부족하면 모델이 따라 할 천장이 낮다.
- 판정 신호: 어느 응답이 더 나은지 가려 줄 보상 신호(judge)가 약하다.
ALMA의 세 기법은 정확히 이 세 병목을 하나씩 푼다. 그래서 Method를 읽을 때 “프롬프트 / 응답 / judge” 셋으로 나눠 보면 길을 잃지 않는다.
Method
전체 파이프라인은 반복(iterative) 구조다. 한 라운드가 끝나면 더 나은 모델과 더 강한 judge가 나오고, 그걸로 다음 라운드의 데이터를 더 잘 만든다. 라운드를 \(R\), \(r\)번째 라운드의 정책 모델을 \(M_r\), judge를 \(J_r\)라 하자. ALMA는 \(R = 10\) 라운드까지 성능이 계속 오른다(기존 정렬 기법은 보통 3라운드에서 포화). 0라운드는 base 모델, 1라운드는 초기 SFT 모델이다.
기법 1: few-shot 기반 diverse prompt 합성
씨앗은 5,000개 프롬프트. 이걸 few-shot 예시로 써서 base LLM이 새 프롬프트를 끝없이 생성하게 한다. 한 번 생성할 때 씨앗에서 3~5개를 무작위로 골라 컨텍스트로 넣고 새 프롬프트를 뽑는다. 이렇게 모은 후보가 약 1억(100M)개.
토이 예제로 감을 잡자. 씨앗이 이렇다고 하자.
[seed] "이메일을 정중하게 거절하는 문장으로 다시 써줘"
[seed] "이 파이썬 함수의 시간복잡도를 분석해줘"
[seed] "초등학생에게 광합성을 비유로 설명해줘"
few-shot으로 3개를 넣고 “비슷한 결의 새 프롬프트를 만들어”라고 하면 모델은 이런 걸 뱉는다.
[gen] "이 SQL 쿼리를 더 읽기 쉽게 리팩터링해줘"
[gen] "회의 일정을 미루는 슬랙 메시지를 부드럽게 써줘"
[gen] "중학생에게 재귀를 일상 비유로 설명해줘"
문제는 이렇게 막 뽑으면 편향이 생긴다. “설명해줘”류만 잔뜩 나오는 식이다. 그래서 다양성 재조정(diversity rebalancing)을 건다.
- base LLM의 hidden representation으로 1억 프롬프트를 임베딩한다.
- K-means로 100만(1M)개 클러스터로 나눈다.
- 각 라운드에서 \(K = 50{,}000\)개 프롬프트가 필요하면, \(K\)개 클러스터를 고르고 각 클러스터에서 아직 안 쓴 프롬프트를 1개씩 뽑는다.
이렇게 하면 “같은 의미의 프롬프트가 한 라운드에 몰리는” 일을 막아 입력 분포를 고르게 덮는다. 클러스터에서 1개씩 뽑는 샘플링은 다음과 같이 쓸 수 있다.
\[\mathcal{P}_r = \{\, p \sim \text{Uniform}(C_i \setminus \mathcal{U}) \mid C_i \in \text{select}_K(\mathcal{C}) \,\}\]여기서 \(\mathcal{C}\)는 1M 클러스터 집합, \(\mathcal{U}\)는 이미 사용된 프롬프트, \(C_i \setminus \mathcal{U}\)는 미사용 프롬프트만 남긴 클러스터다.
기법 2: 여러 체크포인트로 diverse response 생성
프롬프트가 마련됐으면 이제 응답을 만든다. 핵심 직관: 한 모델에서만 응답을 뽑으면 응답이 서로 닮는다(mode collapse). 그래서 ALMA는 서로 다른 체크포인트 셋에서 응답을 섞어 뽑는다.
- \(M_1^{(1)}\), \(M_1^{(2)}\): 서로 다른 시드로 학습한 두 개의 초기 SFT 체크포인트
- \(M_{r-1}\): 직전 라운드의 최신 체크포인트
세 소스에서 1:1:1 비율로, 한 프롬프트당 총 \(N = 200\)개 응답을 샘플링한다. 초기 체크포인트 둘은 “다양성”을(아직 덜 수렴해 응답이 제각각), 최신 체크포인트는 “품질”을(가장 잘 정렬됨) 담당한다. 이 둘을 섞어야 다양하면서도 좋은 응답 풀이 나온다.
그다음 judge가 200개 중 최고점 응답 하나를 고른다(best-of-\(N\)). 이 (프롬프트, best 응답) 쌍이 다음 라운드 SFT 데이터가 된다. 그래서 이 방식을 best-of-\(n\) SFT라 부른다.
\[y^\star = \arg\max_{y \in \{y_1, \dots, y_N\}} J_r(x, y)\]여기서 best-of-\(N\)이 왜 중요한지는 아래 그림이 보여준다.

샘플 수 \(N\)을 키울수록 judge가 고른 best 응답의 외재적 보상(Armo score)이 꾸준히 오른다. 즉 응답을 더 많이 뽑아 놓고 그중 최고를 고를수록 학습 신호가 좋아진다 — judge가 충분히 정확하다는 전제 하에서. 그래서 기법 3, judge를 강하게 만드는 게 결정적이다.
참고로 best-of-\(n\) SFT 대신 DPO(Direct Preference Optimization)로 같은 데이터를 선호쌍 형태로 써도 라운드별 성능이 비슷하게 나온다(논문 Table 7). 즉 ALMA의 핵심은 특정 최적화 알고리즘이 아니라 데이터를 만드는 파이프라인에 있다.
기법 3: judge(보상 모델) 강화
judge는 “응답 \(y\)가 프롬프트 \(x\)에 얼마나 좋은가”를 0~10 점수로 매기는 모델이다. 사람이 단 4,000개 판정 라벨만 단다(프롬프트 2,000개 × 응답 2개씩). 이 적은 라벨로 강한 judge를 만들기 위해 두 가지를 쓴다.
(a) 점수 집계(score aggregation): 정수 대신 실수 점수
LLM judge에게 “0~10 중 몇 점?”을 물으면 보통 정수 하나(예: 7)를 뱉는다. 정수는 거칠다. 7점과 8점 사이를 못 가른다. ALMA는 judge가 출력한 각 점수 토큰의 확률을 가져와 확률 가중 평균으로 실수 점수를 만든다.
\[s(x, y) = \sum_{k=0}^{10} k \cdot P\big(k \mid x, y\big)\]예를 들어 judge가 7점에 0.6, 8점에 0.4 확률을 줬다면 정수로는 그냥 7이지만, 실수 점수는 \(7 \times 0.6 + 8 \times 0.4 = 7.4\)다. 이렇게 하면 응답들을 훨씬 미세하게 줄 세울 수 있고, best-of-\(N\) 선택이 정확해진다. 일상 비유로, “상/중/하”로만 채점하던 조교가 “7.4점”처럼 소수점까지 매기게 된 셈이다 — 200개를 줄 세울 때 동점이 확 줄어든다.
(b) 자기증류(self-distillation): judge가 자기 판정으로 자란다
4K 라벨로 만든 judge \(J\)를, 기법 1·2에서 만든 합성 (프롬프트, 응답) 쌍 20,000개에 적용해 점수를 매긴다. 이 2만 개의 새 판정 예시를 다시 judge 학습에 추가한다. 즉 judge가 스스로 만든 판정으로 자신을 추가 학습한다.
\[\mathcal{D}_{\text{distill}} = \big\{ \big(x, y, s(x, y)\big) \mid (x, y) \in \mathcal{D}_{\text{synth}}^{20k} \big\}\]이게 CAI와 만나는 지점이다. CAI가 “사람 대신 AI가 헌법 보고 판정”이었다면, ALMA는 “적은 사람 판정에서 출발한 judge가 스스로 판정을 늘려 강해진다“다. 판정 신호를 사람에게서 떼어내 모델 내부로 가져온다는 큰 방향이 같다. 차이는, CAI는 자연어 원칙(헌법)을 명시적 기준으로 쓰고, ALMA는 그 기준을 4K 라벨로 암묵적으로 judge에 새긴 뒤 자기증류로 증폭한다는 점이다.
한 라운드를 정리하면
| 단계 | 입력 | 트릭 | 출력 |
|---|---|---|---|
| 프롬프트 | 5K 씨앗 | few-shot 합성 + K-means 재조정 | 라운드별 50K 프롬프트 |
| 응답 | \(M_1^{(1)}, M_1^{(2)}, M_{r-1}\) | 1:1:1 혼합, 프롬프트당 200개 | 200개 응답 풀 |
| judge | 4K 판정 라벨 + 20K 자기증류 | 확률 가중 실수 점수 | best 응답 선택 |
| 재학습 | (프롬프트, best 응답) | best-of-\(n\) SFT (또는 DPO) | \(M_r\) |
이걸 10라운드 돌린다.
Experiments
라운드를 거듭할수록 오른다

핵심 결과 그래프다. 0라운드(base 모델)에서 1라운드(초기 SFT), 그리고 11라운드(최종 모델)까지 정렬 벤치마크(LIMA, MT-Bench, SR, Arena-Hard, Alpaca)의 Armo 점수가 꾸준히 상승한다. 기존 정렬 기법이 보통 3라운드에서 포화하는 데 비해, ALMA는 10라운드 넘게 계속 좋아진다. 다양성 재조정(매 라운드 새로운 클러스터에서 프롬프트를 뽑음)과 점점 강해지는 judge가 정체를 막아 주는 것으로 보인다.
Llama3-Instruct에 거의 동률
가장 인상적인 비교다. ALMA는 Llama3 8B Base에서 출발해 9K 라벨만 썼는데, 수백만 건의 사람 데이터로 학습한 Llama3-Instruct와 맞먹는다.
| 벤치마크 | ALMA | Llama3-Instruct | 비고 |
|---|---|---|---|
| AlpacaEval 2.0 (LC win rate) | 22.8% | 22.9% | 격차 0.1%p |
| Arena-Hard (Armo score) | 8.26 | 8.06 | ALMA가 더 높음 |
| MT-Bench (Armo score) | 7.89 | 8.07 | Llama3-Instruct 우위 |
| 종합 평균 (GPT-4o 평가) | 8.22 | 8.25 | 거의 동률 |
AlpacaEval 2.0의 길이 보정(length-controlled) 승률에서 단 0.1%포인트 차이(22.8% vs 22.9%)다. Arena-Hard에서는 오히려 ALMA가 앞선다(8.26 vs 8.06). LIMA·MT-Bench·SR·Arena-Hard·AlpacaEval를 GPT-4o로 종합 평가한 평균에서도 8.22 대 8.25로 사실상 동률이다.
다시 강조하면, 이 결과를 만든 사람 라벨은 5K SFT + 4K judge = 9K, 전체의 1% 미만이다.
best-of-\(N\)의 \(N\) 효과
기법 2의 그림(fig3)이 보여주듯, judge가 정확할수록 \(N\)을 키우는 게 곧 성능 향상으로 직결된다. 이는 ALMA가 왜 judge 강화(기법 3)에 공을 들였는지를 설명한다 — judge가 약하면 200개를 뽑아 봐야 엉뚱한 걸 best로 고른다. 데이터 파이프라인 전체가 judge의 정확도 위에 서 있다.
Conclusion
ALMA의 메시지는 명확하다.
- 9K 라벨(5K SFT + 4K judge, 전체의 1% 미만)로 Llama3 Base를 정렬해 Llama3-Instruct에 거의 동률(AlpacaEval 2.0에서 0.1%p 차)까지 도달한다.
- 비결은 세 기법이다 — (1) few-shot 합성 + K-means 다양성 재조정으로 프롬프트를 1억 개까지 불리고, (2) 서로 다른 체크포인트를 섞어 다양한 응답 200개를 뽑아 best-of-\(n\)로 학습하고, (3) 확률 가중 실수 점수 + 자기증류로 4K 라벨짜리 judge를 강하게 키운다.
- 이걸 반복하면 기존 3라운드 천장을 넘어 10라운드 이상 성능이 오른다.
안전·정렬 관점의 함의가 이 시리즈에서 중요하다. 정렬을 만드는 비용이 두 자릿수 배 줄면, 새 공격 표면이나 정책 변화가 생길 때 방어를 빠르게 다시 정렬할 수 있다. CAI가 “판정을 AI에게 넘겨 라벨을 0으로”, PIKA가 “데이터의 질로 양을 대체”, ALMA가 “씨앗 9K에서 자기증류로 증폭” — 이 셋은 방어를 싸고 빠르게 반복 가능하게 만든다는 같은 목표를 향한다.
다만 한계도 분명하다. 논문 스스로 밝히듯, ALMA가 보인 건 일반적 정렬(유용성·정확성)이고, 안전(safety) 정렬은 향후 과제로 남겨 둔다. judge가 유해 요청 거부까지 정확히 채점하도록 만들려면 그 도메인의 씨앗 라벨과 자기증류가 별도로 필요할 것이다. 또 자기증류는 judge의 편향을 증폭할 위험이 있어, 적대적 입력에 대한 judge의 견고성은 별도 검증이 필요하다. 이 지점이 다음 평가·방어 편으로 이어지는 다리다.
이로써 시리즈의 데이터셋 편을 마친다. 적은 라벨로 정렬을 만드는 세 갈래(CAI / PIKA / ALMA)를 봤으니, 다음부터는 그 정렬을 어떻게 평가하고 방어하는가로 넘어간다.
Red-Teaming 시리즈
이 글은 LLM Red-Teaming 시리즈의 스물두 번째 글이다.
- Perez 2022 — LM으로 LM을 공격하기 (foundation)
- Ganguli 2022 — Anthropic의 38K 공격 데이터셋과 scaling behavior
- GCG (Zou 2023) — 그래디언트 기반 universal suffix
- AutoDAN (Liu 2023) — 자연어 유지하는 GA 기반 jailbreak
- AttnGCG — attention manipulation으로 GCG 강화 (추후 작성)
- PAIR (Chao 2023) — 20쿼리 black-box attacker LM
- TAP (Mehrotra 2023) — 트리 탐색 + 이중 pruning으로 PAIR 효율화
- GPTFuzz (Yu 2023) — AFL 영감의 template-level fuzzing
- Crescendo (Russinovich 2024) — multi-turn escalation으로 single-turn 방어 무력화
- Many-shot Jailbreaking (Anil 2024) — long-context를 ICL로 weaponize
- Curiosity-driven RT (Hong 2024) — novelty reward로 mode collapse 해결
- Auto-RT (Liu 2025) — strategy-level RL exploration + progressive curriculum
- AgenticRed (Yuan 2026) — RT 시스템 자체를 진화
- InjecAgent (Zhan 2024) — Tool-use LLM agent에 대한 IPI 벤치마크
- AgentVigil (Wang 2025) — MCTS 기반 IPI 자동 공격
- AdvBench (Zou 2023) — GCG 논문의 harmful behaviors/strings 표준 벤치마크
- HH-RLHF red-team (Ganguli 2022) — Anthropic 38K red-team 대화 데이터셋
- HarmfulQA (Bhardwaj 2023) — Chain-of-Utterances 기반 유해 QA + RED-INSTRUCT
- BeaverTails (Ji 2023) — helpfulness/harmlessness 분리 라벨 QA 데이터셋
- WildJailbreak (Jiang 2024) — 대규모 합성 vanilla/adversarial 학습 데이터
- PIKA (2025) — 난이도 집중 expert-level 합성 정렬 데이터셋
- (현재 글) ALMA (Yasunaga 2024) — 최소 주석으로 합성 데이터 기반 정렬
- HarmBench (Mazeika 2024) — 510 행동 × 18 공격 × 33 모델 표준 + R2D2 방어
- JailbreakBench (Chao 2024) — 100 misuse + 100 benign + jailbreak artifacts repository
- Constitutional AI (Bai 2022) — AI feedback으로 인간 라벨 없이 alignment
- Llama Guard (Inan 2023) — open-weight input/output safety classifier 본 시리즈는 26편으로 구성된다 (#5 AttnGCG는 추후 작성).
참고 문헌
- Yasunaga et al., 2024. ALMA: Alignment with Minimal Annotation. Meta FAIR. (arXiv 2412.04305)
- ALMA HTML 버전 (arXiv) — 본문 그림 x1/x2/x3 출처.
- Bai et al., 2022. Constitutional AI: Harmlessness from AI Feedback. Anthropic. (시리즈 #25, 인간 라벨 없는 정렬)
- Rafailov et al., 2023. Direct Preference Optimization (DPO). (선호 최적화 대안)
- Zhou et al., 2023. LIMA: Less Is More for Alignment. (소량 고품질 정렬의 선행 연구)
- Dubois et al., 2024. Length-Controlled AlpacaEval. (AlpacaEval 2.0 LC win rate)
- Li et al., 2024. From Crowdsourced Data to High-Quality Benchmarks: Arena-Hard.
- Meta Llama 3 — base 및 instruct 모델 출처.
Enjoy Reading This Article?
Here are some more articles you might like to read next: