본문 바로가기
AI2026년 8월 19일5분 읽기

지식 증류(Distillation) — 큰 모델의 지능을 작은 모델에 옮기기

YS
김영삼
조회 9
지식 증류(Distillation) — 큰 모델의 지능을 작은 모델에 옮기기

지식 증류(Knowledge Distillation)는 크고 똑똑한 모델(교사, teacher)의 행동을 작은 모델(학생, student)이 흉내 내도록 학습시켜, 작은 모델의 성능을 끌어올리는 기법이다. 핵심은 정답 라벨만 베끼는 게 아니라 교사가 내놓는 확률 분포 전체를 따라 배운다는 데 있다. "이건 고양이(정답)"보다 "고양이 90%, 개 7%, 여우 3%"라는 분포가 훨씬 풍부한 신호다. 이 부드러운 정보를 물려받으며 학생은 데이터에 없는 뉘앙스까지 흡수한다.

나는 온디바이스로 모델을 굴려야 하는 상황에서 증류를 처음 진지하게 봤다. 큰 모델은 성능이 좋지만 못 올리고, 작은 모델은 올릴 수 있지만 아쉽다. 그 간극을 메우는 현실적인 카드가 증류였다.

왜 '부드러운 라벨'이 강한가

정답만 알려 주는 학습(hard label)은 "정답은 1, 나머지는 0"이라는 극단적 신호만 준다. 반면 교사의 출력 분포(soft label)에는 클래스 사이의 관계가 담겨 있다. 어떤 오답이 그럴듯한 오답인지, 어떤 건 말도 안 되는지를 학생이 배운다. 이 암흑 지식(dark knowledge)이 증류의 위력이다.

여기서 온도(temperature)가 등장한다. 교사의 로짓을 온도로 나눠 softmax를 부드럽게 펴면, 작은 확률들의 상대 관계가 더 선명하게 드러난다. 학생은 그 펴진 분포를 목표로 학습한다.

# 소프트 라벨 증류의 손실 (개념)
import torch.nn.functional as F
T = 2.0  # 온도: 분포를 부드럽게
def distill_loss(student_logits, teacher_logits, labels, a=0.5):
    soft = F.kl_div(
        F.log_softmax(student_logits / T, -1),
        F.softmax(teacher_logits / T, -1),
        reduction="batchmean") * (T * T)   # 온도 보정
    hard = F.cross_entropy(student_logits, labels)
    return a * soft + (1 - a) * hard        # 두 신호를 섞음

증류의 여러 갈래

방식은 하나가 아니다. 무엇을 흉내 내게 하느냐에 따라 갈린다.

방식학생이 따라 하는 것
응답 기반교사의 출력 확률 분포
특징 기반중간층의 표현(히든 상태)
데이터 증류교사가 생성한 텍스트로 학습

LLM 쪽에서 요즘 특히 흔한 건 세 번째, 교사 모델로 고품질 데이터를 대량 생성해 학생을 파인튜닝하는 방식이다. 로짓 접근 없이도 되고, 데이터 파이프라인만 있으면 되니 실무 진입장벽이 낮다. 다만 이 방식은 교사 이용약관에 걸리는 경우가 있으니 라이선스를 반드시 확인해야 한다. 나도 이걸 간과했다가 뒤늦게 정책을 다시 뒤진 적이 있다.

언제 쓰고 무엇을 조심하나

증류가 빛나는 순간은 명확하다. 큰 모델의 품질에 최대한 근접하되 추론 비용·지연·메모리를 확 줄여야 할 때. 온디바이스, 대량 트래픽, 엣지 배포 같은 시나리오다. 대신 학생이 교사를 완벽히 따라잡지는 못한다. 능력의 상한은 교사에 묶이고, 교사의 편향과 실수까지 함께 물려받는다는 점도 잊으면 안 된다.

증류는 지능을 압축하는 기술이다. 다만 압축엔 손실이 있다. 학생은 교사보다 작고 빠르지만, 교사를 넘어서지는 못한다.

자주 묻는 질문

증류와 그냥 작은 모델을 처음부터 학습하는 것의 차이는?

같은 크기의 학생이라도, 정답 라벨만으로 밑바닥부터 학습하는 것보다 교사의 부드러운 분포를 따라 배우는 편이 대체로 더 좋은 성능에 도달한다. 교사가 담고 있는 클래스 간 관계 같은 풍부한 신호가 추가로 전달되기 때문이다.

증류와 양자화, 프루닝은 뭐가 다른가요?

모두 모델을 가볍게 하지만 대상이 다르다. 양자화는 가중치의 비트 수를 줄이고, 프루닝은 덜 중요한 연결을 잘라낸다. 증류는 아예 더 작은 새 모델을 교사로부터 학습시킨다. 이 셋은 경쟁이 아니라 보완 관계라, 증류로 작게 만든 뒤 다시 양자화하는 식으로 겹쳐 쓰는 경우가 많다.

학생이 교사보다 더 똑똑해질 수도 있나요?

일반적으로는 어렵다. 학생의 능력 상한은 대체로 교사에 묶인다. 다만 여러 교사를 앙상블해 증류하거나, 학생이 스스로 생성한 데이터로 반복 개선하는 특수한 설정에서는 부분적으로 교사를 앞서는 사례도 보고된다. 기본값으로 기대할 일은 아니다.

교사 모델의 출력으로 학생을 학습시키면 법적으로 괜찮나요?

모델과 서비스에 따라 다르다. 일부 상용 모델은 그 출력으로 경쟁 모델을 학습시키는 것을 약관으로 금지한다. 반대로 명시적으로 증류를 허용하는 오픈 모델도 있다. 데이터 증류를 계획한다면 반드시 해당 모델의 라이선스와 이용약관을 먼저 확인하는 게 안전하다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록