RSS
AI 자동화

지식 증류와 파인튜닝: 큰 모델의 답으로 작은 모델을 가르치는 방법

작성자
듀오랩스 대표·21분 읽기

DeepSeek가 공개한 모델 중에 DeepSeek-R1-Distill-Qwen-32B가 있습니다. 이름에 Distill, 즉 증류가 들어 있습니다. 그런데 DeepSeek-R1 논문 2.4절은 이 모델을 만든 방법을 이렇게 적습니다.

For distilled models, we apply only SFT and do not include an RL stage.

SFT는 지도 파인튜닝입니다. 이름은 증류라고 하고 방법은 파인튜닝이라고 합니다. 둘 중 하나가 틀린 것이 아닙니다. 두 낱말이 서로 다른 층위를 가리키고 있을 뿐입니다.

증류와 파인튜닝을 같은 층위에 놓을 때 생기는 혼동

증류에 대한 오해는 대개 두 방향으로 갈립니다. 하나는 증류를 큰 모델을 줄이는 별개의 압축 기술로 보고, 파인튜닝과는 다른 상자에 넣는 쪽입니다. 다른 하나는 반대로 「증류란 큰 모델의 답으로 작은 모델을 파인튜닝하는 것」이라고 정의하고 거기서 멈추는 쪽입니다.

앞쪽은 R1의 증류 모델을 설명하지 못합니다. 뒤쪽은 2015년의 원래 증류가 왜 정답 대신 확률 분포를 썼는지, 그리고 그 차이가 무엇을 잃게 하는지를 설명하지 못합니다.

제가 보기에 정리는 이렇습니다. 증류는 무엇을 정답으로 삼을지에 대한 선택입니다. 사람이 단 라벨 대신 교사 모델의 출력을 학습 신호로 씁니다. 파인튜닝은 이미 학습된 모델의 가중치를 이어서 고치는 방법입니다. 그래서 둘은 겹칠 수 있고, 겹치지 않을 수도 있습니다. 처음부터 학생 모델을 학습하면서 교사의 출력을 쓰면 파인튜닝 없는 증류이고, 사람이 쓴 데이터로 모델을 고치면 증류 없는 파인튜닝입니다. LLM 실무에서 가장 흔한 형태가 그 교집합, 즉 큰 모델이 생성한 텍스트로 작은 모델을 파인튜닝하는 것일 뿐입니다.

사람이 만든 정답 교사 모델의 출력
처음부터 학습 일반적인 사전학습·지도학습 처음부터 하는 증류 (힌턴 2015의 MNIST 실험)
학습된 모델을 이어서 학습 일반적인 파인튜닝 파인튜닝으로 하는 증류 (Alpaca, R1-Distill)

교사의 출력이라고 해도 넘겨받는 모양이 둘입니다. 클래스나 토큰마다의 확률 분포를 넘길 수도 있고, 교사가 최종적으로 고른 문장만 넘길 수도 있습니다. 이 차이가 이 글의 나머지를 거의 다 결정합니다.

오답에 붙은 확률이 실어 나르는 정보

Hinton, Vinyals, Dean의 2015년 논문은 출발점이 모델 압축이었습니다. 여러 모델의 앙상블은 성능이 좋지만 배포하기에 무겁습니다. 앙상블이 아는 것을 모델 하나에 옮길 수 없을까, 하는 질문입니다.

손글씨 숫자 2 한 장을 생각해 봅니다. 사람이 단 라벨은 「2」 하나입니다. 하드 라벨이라고 부릅니다. 반면 잘 학습된 모델은 이 이미지에 대해 10개 클래스 모두에 확률을 냅니다. 논문이 든 예에서는 어떤 2는 3일 확률이 10^-6, 7일 확률이 10^-9이고, 다른 2는 그 반대입니다. 이 숫자들은 정답을 맞히는 데에는 거의 영향이 없지만, 이 2가 3 쪽으로 생겼는지 7 쪽으로 생겼는지를 알려 줍니다. 논문은 이것을 데이터 위의 「풍부한 유사도 구조」라고 부릅니다.

같은 내용을 힌턴은 2014년 10월 TTIC 강연 「Dark Knowledge」의 초록에서 BMW로 설명했습니다. 앙상블은 BMW 사진을 쓰레기 트럭으로 볼 확률을 10억분의 1쯤으로 매기지만, 그래도 당근으로 볼 확률보다는 훨씬 큽니다. 이렇게 클래스 확률 안에 거의 보이지 않게 묻혀 있는 정보를 그는 「dark knowledge」라고 불렀습니다. 이 말은 강연 제목에서 퍼진 것이고, 2015년 논문 본문에는 나오지 않습니다.

하드 라벨이 이미지 한 장에 대해 알려 주는 것은 「이것은 2다」 하나입니다. 소프트 라벨은 「이것은 2이고, 3과 헷갈릴 만하고, 7과는 거의 안 헷갈린다」까지 알려 줍니다. 논문은 소프트 타깃의 엔트로피가 높으면 학습 예제 하나가 하드 타깃보다 훨씬 많은 정보를 주고, 예제 사이의 그래디언트 분산도 작아서, 작은 모델을 더 적은 데이터와 더 큰 학습률로 학습할 수 있다고 적습니다.

문제는 잘 학습된 모델일수록 확신이 강하다는 점입니다. 정답에 0.9999를 주면 나머지 확률은 너무 작아서 손실 함수에 거의 영향을 주지 못합니다. 논문의 해법은 softmax에 온도 T를 넣는 것입니다.

q_i = exp(z_i / T) / Σ_j exp(z_j / T)

T가 1이면 평소의 softmax이고, T를 올릴수록 분포가 평평해져서 작은 확률들의 차이가 드러납니다. 교사와 학생 모두 같은 높은 T에서 softmax를 계산하고, 학생은 교사의 분포를 따라가도록 학습합니다. 여기에 진짜 라벨에 대한 손실을 가중 평균으로 더하는 것이 논문이 권한 방식입니다. 소프트 타깃 쪽 그래디언트는 크기가 1/T²로 줄기 때문에 T²를 곱해 두 손실의 비중을 맞추라는 설명도 붙어 있습니다. 온도가 아주 높은 극한에서는 이 방식이 교사와 학생의 로짓 차이를 제곱으로 줄이는 것과 같아진다는 유도도 논문에 있습니다.

MNIST 실험의 숫자가 이 효과를 보여 줍니다. 드롭아웃 등으로 강하게 규제한 큰 망은 테스트 오류가 67개, 규제 없이 학습한 작은 망은 146개였습니다. 같은 작은 망에 온도 20의 소프트 타깃을 맞추는 과제를 더하자 74개로 줄었습니다. 학생 망의 은닉층을 30유닛까지 줄였을 때는 2.5에서 4 사이의 온도가 그보다 높거나 낮은 온도보다 확실히 나았다고 합니다. 학생이 작을수록 교사 분포의 아주 작은 꼬리까지 따라가려 하지 않는 편이 낫다는 뜻으로 저는 읽습니다.

소프트 라벨의 힘이 가장 분명하게 드러나는 것은 숫자 3을 전이 데이터에서 통째로 뺀 실험입니다. 학생은 3을 한 번도 보지 못했는데도 테스트 오류가 206개였고, 그중 133개가 3에서 났습니다. 3 클래스의 편향만 3.5 올려 주자 오류가 109개로 줄고 테스트의 3을 98.6% 맞혔습니다. 다른 숫자들의 소프트 라벨에 섞여 있던 「3과 닮은 정도」만으로 3을 배운 셈입니다.

음성 인식 실험에서도 같은 방향의 결과가 나옵니다. 학습 데이터의 3%만 쓰면 하드 타깃으로 학습한 모델은 테스트 정확도 44.5%에서 과적합으로 무너졌고, 같은 3%를 소프트 타깃으로 학습한 모델은 57.0%까지 갔습니다. 전체 데이터로 학습한 기준선이 58.9%였습니다.

DistilBERT가 증류를 파인튜닝 앞 단계에 둔 방식

증류와 파인튜닝이 다른 층위라는 것을 가장 분명하게 보여 주는 사례가 DistilBERT입니다. 저자들은 그때까지의 증류 연구가 대부분 특정 과제용 모델을 만드는 데 쓰였다고 지적하고, 증류를 사전학습 단계에 적용했습니다. 그렇게 만든 범용 모델을 각 과제에 맞게 파인튜닝하는 것은 그다음 일입니다. 여기서는 증류가 파인튜닝의 수단이 아니라 파인튜닝할 바탕 모델을 만드는 방법입니다.

학생은 BERT와 같은 구조에서 층 수를 절반으로 줄였고, 손실은 언어 모델링, 증류, 은닉 상태의 코사인 거리를 합친 세 가지입니다. 논문이 보고한 숫자는 파라미터 1억 1천만 개에서 6천6백만 개로 40% 감소, GLUE 개발셋 성능의 97% 유지, CPU 추론 속도 60% 향상입니다. 같은 표의 STS-B 전체 추론 시간으로는 668초가 410초가 됐습니다. iPhone 7 Plus에서 질의응답 모델을 돌린 실험에서는 토크나이즈를 빼고 BERT보다 71% 빨랐고 모델 크기는 207MB였다고 적었습니다.

DistilBERT는 교사의 확률 분포를 직접 맞추는, 힌턴식 증류입니다. 교사와 학생이 같은 어휘를 쓰고, 교사의 출력 분포를 학습 중에 바로 꺼낼 수 있었기 때문에 가능했습니다. LLM 시대의 증류가 대부분 다른 길로 간 이유가 바로 이 전제에 있습니다.

확률 대신 문장을 넘기는 시퀀스 수준 증류

번역처럼 문장을 생성하는 모델에서는 「정답 분포」의 모양이 달라집니다. 단어 하나마다 분포가 있고, 가능한 문장 전체의 분포는 사실상 셀 수 없이 큽니다. Kim과 Rush의 2016년 논문은 단어마다 교사 분포를 맞추는 단어 수준 증류와 함께, 문장 전체 수준의 증류를 제안했습니다. 시퀀스 분포 전체를 맞추는 대신 교사가 빔 서치로 낸 최선의 번역 하나를 그 분포의 근사로 쓰는 것입니다.

그러면 학습 절차가 단순해집니다. 교사로 원문을 전부 번역해 새 데이터셋을 만들고, 학생을 그 데이터로 평범하게 학습합니다. 손실 함수는 일반적인 지도학습과 같고 바뀐 것은 정답 텍스트의 출처뿐입니다. 논문의 최선 학생은 교사보다 10배 빠르게 돌면서 성능 손실이 작았고, 증류 없이 학습한 같은 크기 모델보다 탐욕 디코딩 기준 BLEU 4.2, 빔 서치 기준 1.7 높았습니다. 가지치기까지 더하면 파라미터가 교사의 13분의 1이 되면서 BLEU는 0.4만 떨어졌다고 보고합니다.

오늘날 LLM에서 「증류」라고 부르는 것의 대부분이 이 형태입니다. 교사에게 질문을 던져 답을 받고, 그 질문과 답의 쌍으로 학생을 지도 파인튜닝합니다. 겉으로는 일반 파인튜닝과 구별되지 않습니다. 그래서 「증류 = 큰 모델 답으로 파인튜닝」이라는 정의가 생겼고, 그 정의가 틀렸다기보다 시퀀스 수준 증류 하나만을 가리킨다는 점이 빠져 있습니다.

Alpaca와 R1-Distill에서 보이는 데이터 설계

Stanford의 Alpaca는 이 방식을 널리 알린 사례입니다. 사람이 쓴 지시·응답 쌍 175개를 씨앗으로 OpenAI의 text-davinci-003에게 새 지시와 응답을 만들게 했고, 그렇게 모은 5만 2천 개로 LLaMA 7B를 지도 파인튜닝했습니다. 데이터 생성 비용은 500달러 미만, 학습은 80GB A100 8장으로 3시간이었다고 적었습니다. 저자 다섯 명이 한 블라인드 비교에서 Alpaca가 text-davinci-003를 상대로 90 대 89였다는 결과도 함께 실었습니다.

같은 글에 한계도 적혀 있습니다. Alpaca의 답은 ChatGPT보다 대체로 짧은데, 이것은 text-davinci-003의 짧은 출력을 그대로 닮았기 때문이라고 설명합니다. 환각은 text-davinci-003보다도 흔해서, 탄자니아의 수도를 다르에스살람이라고 답하는 예를 들었습니다. 학생은 교사의 문체와 길이를 먼저 배웁니다.

DeepSeek-R1의 증류 모델은 데이터 쪽에 손을 더 많이 썼습니다. 논문 2.3.3절에 따르면 추론 데이터는 R1 학습 중간의 모델로 프롬프트마다 응답을 여러 개 뽑은 뒤 정답인 것만 남기는 거절 샘플링으로 약 60만 건을 모았고, 언어가 섞이거나 문단이 지나치게 긴 사고 과정은 걸러 냈습니다. 여기에 추론과 무관한 데이터 약 20만 건을 더한 약 80만 건으로 Qwen2.5와 Llama 계열 1.5B부터 70B까지 여섯 모델을 파인튜닝했습니다. 이 단계에 강화학습은 넣지 않았다는 것이 앞에서 인용한 문장입니다.

논문 4.1절에는 증류를 강화학습과 직접 견준 표가 있습니다. Qwen-32B 기반 모델에 같은 계열의 대규모 강화학습을 1만 스텝 넘게 직접 돌린 DeepSeek-R1-Zero-Qwen-32B는 AIME 2024에서 47.0을 받았고, 증류한 DeepSeek-R1-Distill-Qwen-32B는 72.6을 받았습니다. 저자들은 작은 모델에 같은 강화학습을 들이는 것보다 큰 모델에서 증류하는 편이 싸고 결과도 좋다고 결론 내리면서도, 지능의 한계를 넘는 일에는 더 강한 바탕 모델과 더 큰 강화학습이 여전히 필요할 수 있다고 덧붙였습니다. 증류는 교사가 이미 가진 것을 옮기는 방법이지 교사를 넘는 방법은 아니라는 뜻으로 저는 읽습니다.

로짓이 보이는 교사와 텍스트만 보이는 교사

이렇게 보면 증류의 갈림길은 교사의 내부를 볼 수 있느냐입니다. MiniLLM 논문은 기존 증류 연구를 「화이트박스 분류 모델에 적용한 것」과 「ChatGPT 같은 블랙박스 API를 흉내 내도록 작은 모델을 학습한 것」으로 나눕니다.

화이트박스 증류 블랙박스 증류
교사에게서 받는 것 토큰마다의 확률 분포(로짓) 생성된 텍스트
대표적인 교사 가중치가 공개된 모델 API로만 쓰는 모델
학습 신호 분포를 맞추는 손실(KL 등) 일반 지도 파인튜닝의 손실
전제 조건 교사와 학생의 어휘가 맞아야 함 거의 없음
잃는 것 거의 없음 오답에 붙은 확률 전부

블랙박스 쪽은 교사가 고른 문장 하나만 받기 때문에, 힌턴이 말한 dark knowledge를 처음부터 버리고 시작합니다. 대신 조건이 거의 없습니다. 교사의 어휘나 구조를 몰라도 되고, 교사의 답을 사람이 읽고 걸러 낼 수도 있습니다. 화이트박스 쪽은 정보를 더 많이 받지만 토큰 단위로 분포를 맞추려면 교사와 학생이 같은 토크나이저를 쓰는 편이 사실상 전제입니다. 같은 모델 계열 안에서 큰 것을 작은 것으로 옮길 때가 가장 자연스러운 이유입니다.

MiniLLM은 화이트박스 쪽에서도 분류 모델의 방식을 그대로 가져오면 안 된다고 주장합니다. 생성 모델에서는 표준 증류의 순방향 KL이 학생으로 하여금 교사 분포의 확률 낮은 영역까지 과대평가하게 만든다는 이유로, 역방향 KL과 온폴리시 학습을 제안했습니다. 1억 2천만에서 130억 파라미터 사이의 여러 모델 계열에서 실험했다고 적었습니다.

약관과 라이선스가 정하는 증류의 범위

블랙박스 증류는 기술보다 계약이 먼저 막는 경우가 많습니다. Alpaca의 글은 상업적 사용을 금지한 이유 중 하나로, 지시 데이터가 text-davinci-003에서 나왔고 그 이용약관이 OpenAI와 경쟁하는 모델의 개발을 금지한다는 점을 직접 들었습니다. OpenAI 약관의 현재 문구는 그 뒤로 바뀌었을 수 있어 여기 옮기지 않습니다. 확인된 것은 Alpaca 저자들이 당시 그렇게 판단했다는 데까지입니다.

Anthropic의 Commercial Terms of Service는 D.4항에서 이렇게 적습니다.

Customer may not and must not attempt to (a) access the Services to build a competing product or service, including to train competing AI models or resell the Services except as expressly approved by Anthropic

위 문구는 2025년 6월 17일 시행판 기준입니다. 「경쟁」의 범위를 어디까지로 보는지는 약관이 숫자로 정해 주지 않습니다. 사내 분류기 하나를 만드는 것과 범용 챗봇을 만들어 파는 것은 다른 문제로 읽히지만, 그 경계를 판단하는 것은 제 몫이 아니라 계약 당사자와 법률 검토의 몫입니다. API 교사를 쓸 계획이라면 그 시점의 약관을 먼저 읽어야 합니다.

공개 모델도 자유롭다고 단정할 수 없습니다. Llama 2 라이선스는 1.b.v항에서 Llama 자료나 그 출력을 Llama 2와 그 파생물이 아닌 다른 대형 언어 모델을 개선하는 데 쓰지 말라고 했습니다. Llama 3.1 라이선스에서는 이 금지가 빠지고, 대신 Llama 자료나 출력으로 AI 모델을 만들거나 학습하거나 파인튜닝해 배포하면 모델 이름 맨 앞에 「Llama」를 붙이라는 조건이 들어갔습니다. 같은 회사의 라이선스도 판마다 이만큼 다릅니다.

반대 끝에는 DeepSeek-R1이 있습니다. 모델 카드는 MIT 라이선스를 밝히면서 「다른 LLM을 학습시키기 위한 증류」를 포함한 파생 작업을 허용한다고 명시했습니다. 다만 같은 카드가 증류 모델 각각은 바탕 모델의 라이선스(Qwen2.5는 Apache 2.0, Llama 기반은 Llama 3.1·3.3 라이선스)를 따른다고 적어 두었습니다. 증류한 모델에는 교사의 조건과 학생 바탕 모델의 조건이 함께 걸립니다.

학생이 물려받지 못하는 사실성

Alpaca의 문체 상속은 눈에 보이는 문제라 그나마 알아채기 쉽습니다. 알아채기 어려운 쪽의 결과가 「The False Promise of Imitating Proprietary LLMs」에 있습니다. 저자들은 1.5B에서 13B까지의 바탕 모델을 0.3M에서 150M 토큰 사이의 모방 데이터로 ChatGPT를 흉내 내도록 파인튜닝했습니다. 크라우드 평가자들은 모방 모델의 답을 ChatGPT와 견줄 만하다고 매겼습니다. 그러나 특정 능력을 겨냥한 자동 평가에서는, 모방 데이터에 많이 들어 있지 않은 과제라면 바탕 모델과 ChatGPT 사이의 격차를 거의 좁히지 못했습니다. 논문의 표현으로는 모방 모델이 ChatGPT의 문체는 잘 흉내 내지만 사실성은 흉내 내지 못하고, 그래서 이 차이가 사람 평가에서는 잘 드러나지 않습니다.

이 결과와 R1-Distill의 성공은 모순이 아니라고 저는 봅니다. R1-Distill은 수학과 코드처럼 답이 맞는지 기계로 확인할 수 있는 영역에서, 맞은 답만 골라 80만 건을 모았습니다. 모방 연구가 말한 「모방 데이터에 많이 들어 있는 과제」를 일부러 크게 만든 셈입니다. 학생의 능력은 교사 전체가 아니라 데이터가 덮은 범위만큼 옮겨 옵니다. 그 범위 밖에서는 학생 바탕 모델의 실력이 그대로 드러납니다.

교사의 오류도 같은 경로로 옮겨 옵니다. 블랙박스 증류에서 학생은 교사가 틀린 답을 정답으로 배우고, 교사가 확신 없이 고른 답도 같은 무게로 배웁니다. 확률을 버렸으니 그 확신의 차이도 버린 것입니다. 걸러 내기가 데이터 생성만큼 중요한 단계인 이유입니다.

증류를 고를 만한 조건

증류가 맞는 상황은 꽤 좁게 그릴 수 있습니다. 큰 모델이 이미 잘하는 과제가 하나 있고, 그 과제를 더 싸게, 더 빠르게, 또는 밖으로 데이터를 보내지 않고 로컬에서 돌리고 싶을 때입니다. 파인튜닝 자체가 필요한지는 프롬프트와 RAG로 먼저 따져 봐야 하는데, 그 판단은 LLM 파인튜닝은 언제 필요할까?에서 다뤘습니다. 증류는 그 판단에서 파인튜닝이 필요하다고 결론이 난 뒤, 학습 데이터를 어디서 구할지에 대한 하나의 답입니다.

저라면 순서를 이렇게 잡겠습니다. 실제 입력과 비슷한 질문을 먼저 모읍니다. 교사의 답을 여러 개 뽑고, 형식 검사나 정답 대조처럼 기계로 할 수 있는 검사로 먼저 거릅니다. 남은 것을 사람이 표본으로 읽어 봅니다. 그다음에야 작은 모델을 LoRA 같은 방식으로 파인튜닝하고, 학습에 쓰지 않은 질문으로 교사와 학생을 나란히 평가합니다. 평가 세트를 교사의 답으로 채점하면 학생이 교사를 얼마나 닮았는지는 알 수 있어도 맞았는지는 알 수 없으므로, 정답을 따로 확인할 수 있는 세트가 하나는 있어야 한다고 봅니다.

교사를 고를 때는 성능보다 조건을 먼저 봅니다. 교사의 약관이 출력으로 다른 모델을 학습하는 것을 허용하는지, 학생 바탕 모델의 라이선스가 배포 형태와 맞는지가 먼저입니다. 가중치가 공개된 같은 계열의 큰 모델이 쓸 만하다면, 저는 로짓까지 쓸 수 있는 그쪽을 우선하겠습니다.

증류가 맞지 않는 경우도 분명합니다. 교사도 자주 틀리는 과제, 정답을 확인할 방법이 없는 과제, 학생 바탕 모델이 그 과제에 필요한 지식을 애초에 갖고 있지 않은 경우입니다. 마지막은 데이터를 늘려도 잘 해결되지 않는다는 것이 앞의 모방 연구가 내린 결론이기도 합니다.

여기까지 확인된 것과 열린 질문

위에 적은 숫자와 방법은 링크한 원문이 직접 말하는 내용입니다. 그 밖으로 나가면 확실하지 않은 부분이 남습니다. 블랙박스 증류에서 버린 확률 정보를, 같은 질문에 답을 여러 개 뽑는 것으로 어느 정도 되살릴 수 있는지는 제가 일반적인 답을 갖고 있지 않습니다. 화이트박스 증류에서 순방향 KL과 역방향 KL 중 무엇이 나은지도 MiniLLM 이후 여러 방향의 연구가 나와 있어 과제마다 다르다고 보는 편이 안전합니다. 약관의 「경쟁 모델」이 어디까지인지는 기술 글이 답할 수 있는 질문이 아닙니다.

DeepSeek가 모델 이름에 Distill을 붙이고 방법에 SFT만 적은 것은 그래서 정확한 표기였습니다. 이름은 데이터가 어디서 왔는지를 말하고, 방법은 가중치를 어떻게 고쳤는지를 말합니다.

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.