카테고리 없음

필로소피 - Knowledge Distillation

클로vㅏ 컴퓨터 2025. 6. 26. 01:52

- - 안녕하세요 필로소피입니다. 오늘은 지식 증류 즉 Knowledge Distillation에 대한 쉬운 설명을 해 드리려고 합니다. 먼저 지식 증류란 무엇인지 말씀드리고 왜 필요한지, 그리고 발전사, 하드 레이블과 소프트 레이블 비교, 그리고 템퍼레처의 역할에 대해서 말씀드리고 실습을 해 보고 결론을 말씀드리겠습니다.

- - 제가 방금 전에 들어가 있던 비율보다 이 지식 증류의 비율을 낮췄더니 이 효과가 이렇게 감소하는 것이 보입니다.

- - 그래서 아 지식 증류가 조금 들어가는 것보다는 더 들어가는 것이 효과적이다라는 것을 알 수 있습니다.

- - 지식 증류라는 것은 자이언트 티처 모델, 즉 큰 모델에서 작지만 잘 작동하는 스튜던트 모델에게 지식을 뺏어 주는 것을 의미합니다. AI가 AI에게 공부를 가르쳐 준다라고 생각하시면 되겠습니다. 그러니까 AI가 로우 데이터를 바탕으로 공부하는 시대가 아니라, AI를 활용해서 AI가 공부를 하는 것이죠. 똑똑한 티처 AI가 스튜던트 AI에게 지식을 전달하는 겁니다. 매우 크고 느린 실험실의 슈퍼 컴퓨터 같은 이 티처 AI가 작고 빠른 내 핸드폰 속 AI에게 지식을 주는 것이죠. 작은 AI가 큰 AI만큼 똑똑해질 수 있는 비결, 그것이 바로 지식 증류입니다.

- - 왜 지식 증류가 필요할까요. 스마트폰만 봐도 여기다 큰 AI를 넣을 수 있을까요. 안 들어갑니다. 그런데 작은 AI를 넣었어요. 들어가긴 하는데 너무 작동을 잘 못 하는 것이죠. 돈 문제도 있습니다. 큰 AI 한번 실행하려면 큰 비용이 들고 작은 AI 한번 실행하면 훨씬 작은 비용이 들겠죠.

- - 그래서 여러 번 사용한다면 이 차이가 엄청 클 겁니다. 속도도 마찬가지고요. 큰 AI는 답변 속도가 훨씬 오래 걸릴 겁니다. 왜냐하면 크니까요. 작은 AI는 바로바로 답변이 나오겠죠. 이런 작은 디바이스에도 들어갈 수 있는 AI가 똑똑해진다면 얼마나 좋겠는가라는 아이디어가 이제 나온 것이죠.

- - 그래서 지식 증류 기술이 이러한 해결책을 가져왔다라고 생각하시면 됩니다.

- - 사람으로 비유하자면 경험이 많은 의사 선생님이 큰 AI입니다. 30년 경험으로 병을 진단할 때 매우 정확하고, 하지만 진료비가 비싸고 예약 대기 시간이 1년입니다.

- - 그러나 이제 막 의대를 졸업한 의사 선생님은 작은 AI죠. 의학 지식은 있지만 이 박사님보다는 부족할 수 있습니다. 하지만 진료비가 저렴하고 바로바로 상담이 가능합니다. 어디 병원에 가 보셨을 때 의사 선생님 여러분 계신 곳에서 어떤 의사 선생님은 대기가 굉장히 많지만 어떤 선생님은 대기가 없는 경우가 있을 겁니다. 그런 경험 있으신 분들, 그런 경험 해 보신 분들 계실 겁니다. 그런 상황이랑 좀 비슷하다고 할 수 있죠.

- - 지식 증류의 목표란 이제 막 의대를 졸업한 의사 선생님이 경험이 많은 의사 선생님의 지혜를 배워서 더 정확한 진단을 할 수 있게 하는 것입니다. 그러니까 이 선생님이 이제 이 선생님에게 경험을 나눠 주는 것이죠. 그러면 이 선생님도 이제 실력이 쌓이겠죠. 그런 방식이 지식 증류다라고 생각하시면 됩니다.

- - 지식 증류의 발전사를 한번 봐야 하는데요. 2006년에 모델 컴프레션이라는 논문이 나왔습니다. 쉽게 말하면 천 개의 앙상블 모델을 한 개 모델로 압축하는 기술입니다.

- - 그래서 천 개의 백과사전에 있는 내용을 한 개의 요약본에 다 넣었다라고 생각하시면 되고요. 하드 레이블만 사용합니다. 이 하드 레이블이랑 소프트 레이블은 뒤에서 볼 건데, 그러니까 정답만 가르친다고 생각하시면 되고요. 이제 정보 손실이 많죠. 왜냐하면 정답이 아닌 것들 사이에도 정보가 많은데 정답만 딱 알려주고 마니까 정보가 많이 손실됩니다.

- - 그러나 이때 당시에는 굉장히 혁신적인 기술이었고, 2015년에 지식 증류, 즉 Knowledge Distillation이라는 힌튼 교수님, AI의 대부라고 불리는 제프리 힌튼 교수님이 내신 논문에 이런 아이디어가 들어가 있습니다. 소프트 레이블이 도입이 되었고요, 다크 널리지라는 개념이 등장했습니다. 그다음에 템퍼레처 스케일링 기법이 들어갔고, 이 내용은 지금 뒤에서 조금 더 다뤄 볼 건데, 그러니까 소프트 레이블이란 건 뭐냐면 정답뿐 아니라 오답도 알려주고 오답의 확률도 알려 줘서 약간 소프트하게 레이블을 한다는 것이죠. 다크 널리지라는 것은 정답이 아닌 것들을 뜻합니다.

- - 그래서 어떤 것을 알려줄 때 정답만 알려주는 게 아니라 정답은 맞지만 다른 것은 왜 정답이 아닌지도 알려줍니다. 이 어두운 지식 덕분에 이제 머리가 똑똑해지는 것이죠.

- - 그래서 다른 추론을 할 때 이 다크 널리지를 활용할 수 있는 겁니다. 그리고 이 온도에 따라서 이제 얼만큼 소프트해지는지가 정해지고요. 그다음에 2025년 LMM 시대의 적용, 지금 현재에도 이 지식 증류가 적용이 되고 있습니다. 제미나이 엄청 큰 모델의 지식을 젬마 시리즈에 넣어 줬고, 이런 건 프로포 디스틸레이션이라고 합니다.

- - 그러나 비용이 비싸죠. 아주 적절한, 그러니까 정통파 지식 증류라고 생각하시면 되고, 라마 4도 그렇게 했습니다. 큰 모델이 작은 모델을 가르치는 이러한 방식을 선택했고, 딥시크는 조금 다릅니다. 이것은 이제 비헤이비어럴 클로닝이라고, 결과만 따라하게 하는 겁니다.

- - 그래서 딥시크는 아이언이고 스튜던트 모델은 퀸 시리즈를 사용한 것입니다.

- - 그래서 이게 정통파라면 이것은 조금 가격은 싸고 하지만 조금 한계는 있는 그런 방식이다라고 생각하시면 됩니다.

- - 그래서 설명을 해 드리자면 이 제프리 힌튼의 2015년 논문이 이 지식 증류의 패러다임을 바꿨다고 생각하시면 됩니다.

- - 그래서 기존에는 단순히 정답만 전달했다면 힌튼은 확률 분포 자체가 지식이다, 그러니까 이런 다크 널리지까지가 지식이다라는 혁신적 아이디어를 제시했고 이것이 현재 모든 LMM 압축 기술의 기초가 되었습니다. 지금 현재도 이 기술을 많이 쓰고 있다라고 말씀드릴 수 있겠습니다.

- - 하드 레이블이랑 소프트 레이블을 비교를 한번 해 보자면 하드 레이블은 트럭, 이건 트럭이에요 100%, 나머지는 신경도 쓰지 마세요 하는 식입니다. 그럼 나머지에 대한 정보가 없죠. 이 트럭과 다른 클래스 간의 관계가 손실되는 겁니다.

- - 그 무슨 이야기냐면 소프트 레이블은 이것을 보면서도 아 이건 트럭 80%고 자동차일 확률은 15%고 비행기일 확률은 좀 적지만 교통 수단이니까 4% 정도는 되고, 개는 아예 아니죠, 개는 생물이잖아요 하는 식인 것이죠.

- - 그래서 정보량이 풍부하고 클래스 간의 유사성 정보를 포함하는 겁니다.

- - 그래서 제가 방금 말씀드린 것처럼 아 트럭이랑 자동차랑 비행기는 교통 수단이니까 조금 가깝고 개는 생물이니까 아예 다르잖아요. 이런 것까지, 이런 게 다크 널리지죠. 이런 것까지 알면 아 그래 개는 생물이야. 이것을 또 알게 되는 거예요.

- - 그래서 개의 사진을 보지 않아도 나중에 개를 보고 개를 맞출 확률이 높아지는 것이죠.

- - 그러나 하드 레이블은 개를 맞출 확률이 아예 없는 것이죠. 그렇기 때문에 이 소프트 레이블이 지식 증류에 굉장히 큰 역할을 했습니다.

- - 그래서 이 미묘한 확률 분포가 바로 다크 널리지입니다. 지금 트럭 자동차 비행기 개 이렇게 확률 분포를 하고 있죠. 그리고 이런 부분이 빨간 이 부분이 다크 널리지예요. 이 미묘한 확률 분포가요.

- - 그러나 이건 트럭만 100%고 나머지는 빵이잖아요. 이것은 다크 널리지가 없는 것이죠.

- - 그래서 이 소프트 레이블에 있는 다크 널리지 이것이 바로 선생님의 경험과 직관이 담긴 소중한 정보입니다.

- - 그래서 이것 덕분에 스튜던트가 능력이 확 커질 수 있는 것이죠. 다크 널리지의 핵심은 틀린 답의 확률이 있습니다. 예를 들어 트럭을 자동차로 헷갈릴 확률이 15%인 것이죠. 이 말은 트럭과 자동차가 시각적으로 유사하다라는 중요한 정보입니다.

- - 그래서 우리가 공부할 때도 단순 암기하는 것보다는 원리를 배워 가면서 스토리텔링으로 배우면 훨씬 머릿속에 잘 들어오지 않습니까. 그거랑 비슷하다고 생각하면 됩니다. 스튜던트는 이런 미묘한 관계를 학습함으로써 더 나은 일반화 성능을 얻습니다. 소프트 레이블 덕분에 지식 증류가 한 차원 발전했다라고 생각하시면 됩니다.

- - 템퍼레처란 무엇이냐. 그러니까 원시 점수를 t로 나눈 확률 분포입니다. 그러니까 어떤 점수가 있어요. 그것을 이제 t로 나누는 거니까 만약에 1로 나누면 이 값이 0.95, 0.0이 좀 크죠.

- - 그러나 3으로 나눠요. 그러면 원 점수를 큰 걸로 나누면 더 작아지죠. 0.75, 0.215. 그러니까 t가 클수록 값은 더 작아지겠죠.

- - 그래서 t가 1일 때는 0.95, 0.0이었다면 3이면 0.75, 0.70, 0.15예요.

- - 그래서 약간 이 분포가 좀 부드럽게 되는 것이죠.

- - 그래서 t가 커지면 확률 분포가 이렇게 완만해집니다.

- - 그래서 부드러운 분포, 그러니까 t가 1인 경우엔 이건 무조건 트럭이야 딴 생각하지 마.

- - 그러나 t가 3인 경우는 아 이건 트럭이 같긴 한데 트럭이 아닐 수도 있고 막 약간 요런 애매하게 가지만 이렇기 때문에 조금 완만해지는 것이죠.

- - 그래서 높은 템퍼레처는 더 많은 다크 널리지를 전달합니다.

- - 그래서 나머지 부분이 다크 널리지죠.

- - 그러나 뾰족하면 나머지 부분이 좀 적죠.

- - 그래서 높은 템퍼레처는 더 많은 다크 널리지를 전달한다라고 생각하시면 되고 이것의 장점 뭐냐면 작은 확률값들이 더 잘 보존됩니다. 그러니까 왜냐하면 이것들의 차이가 작아짐으로써 다른 소수 확률값들이 더 잘 보존되고 이 클래스 간 상대적 순서 정보는 유지가 되고 노이즈에 덜 민감한 학습이 됩니다. 그리고 더 안정적인 경사도를 전파한다라고 생각하시면 됩니다.

- - 그래서 실제 사용 시에는 t값이 2와 4가 최적인 경우가 많다고 합니다.

- - 이제 실습을 해 볼 겁니다.

- - 그래서 고정 댓글에 보시면 필소피 AI 교육 네이버 카페 링크가 있습니다. 그쪽으로 들어오시면 이 콜랩 링크를 보실 수 있습니다.

- - 그래서 실습을 한번 해 보도록 하겠습니다.

- - 네 이제 실습을 해 보겠습니다. 우선 파일 왼쪽 상단에서 누르시고 드라이브에 사본 저장해서 사본을 저장하셔야 코드를 직접 수정하실 수 있습니다.

- - 그래서 먼저 드라이브에 사본 저장하시고 그다음에 여기서 이 우측에서 이 화살표 누르시고 런타임 유형 변경 눌러 주시고 저는 지금 한 10달러 정도 결제를 했습니다. 그런데 꼭 결제 안 하시고 이 T4로 무료 GPU를 하셔도 됩니다. 전 이게 조금 더 빨라서 이렇게 한 건데 하고 이렇게 저장을 누르시고 이제 실습을 한번 해 볼 건데요. 제가 다 정리를 해 놨어요. 이 지식 증류라는 건 무엇이냐면 수학 선생님 티처 모델이 초등학생인 스튜던트에게 지혜를 전달하는 지식을 전수하는 과정입니다.

- - 그래서 패키지를 임포트 하시고요 누르시면 전 10초 정도 걸렸습니다.

- - 그다음에 이제 교재를 준비하는 거예요. 비행기, 자동차, 새 뭐 이런 열 가지 사물 사진들인 이제 교재 이 데이터를 불러오고요 한 18초 정도 걸렸습니다. 네 아마 T4를 쓰시면 조금 더 걸릴 수 있어요. 이 시간은 저랑 똑같이 않으실 수도 있습니다.

- - 그다음에 데이터 로더 이런 것들은 바로바로 이렇게 불러지고요.

- - 그다음에 티처 모델 클래스 수학 선생님, 똑똑하지만 복잡한 선생님에 대한 클래스고요.

- - 그다음에 스튜던트 모델에 대한 클래스도 있습니다.

- - 그래서 이걸 다 실행 버튼 누르시고 트레이닝 스텝 일반적인 학습 함수, 혼자서 교과서 보고 공부하는 방식, 이런 식으로 여기서도 실행을 누르시고 그다음에 시험 보는 함수, 학습한 모델이 얼마나 잘하는지 평가하는 함수예요. 여기서도 이것을 눌러 주시고 그다음에 티처 트레이닝, 선생님 먼저 공부시키기, 선생님이 충분히 똑똑해져야 학생을 가르칠 수 있겠죠. 여기서 플레이 버튼 누르면 1분 정도 걸렸어요. 아마 T4를 쓰시면 조금 더 걸릴 수 있어요.

- - 그래서 이렇게 로스 값이 점점 작아집니다.

- - 그다음에 비교를 위해서 두 명의 학생을 준비합니다. 한 명은 혼자 공부하고 한 명은 선생님의 지식을 전달받아서 공부하는 두 명의 학생을 준비하고요. 그리고 여기서 선생님과 학생의 뇌 용량도 비교해 보고 여기 나오죠, 위에게 선생님, 아래 학생. 이 파라미터도 이렇게 비교해 보고 학생 혼자 공부할 경우 이것을 눌러서 학생 혼자 공부하면 70.66% 정확도가 70.66%예요. 그다음에 이것은 1분 정도 걸렸어요.

- - 그다음에 이제 비교를 해 보죠. 이렇게 누르면 티처랑 선생님이랑 스튜던트의 정확도를 비교해 보니까 선생님은 74, 학생은 70 이렇게 나왔고 지식 증류가 필요한 이유도 쭉 쓰여져 있습니다.

- - 그래서 이런 안목적 지식 때문에 지식 증류가 필요합니다.

- - 그다음에 소프트겟의 핵심 원리는 간 관계를 학습하고 세밀한 정보 그다음에 풍부한 학습 신호를 줍니다.

- - 그래서 개념을 이해시키는 것이죠. 단순히 암기만 시키는 것이 아니라 개념을 이해시키는 것이다라고 생각하시면 됩니다.

- - 이제 진짜 지식 증류, 이제 선생님의 지혜를 학생에게 전수하는 핵심 과정 이 부분이 중요한데요. 이 좀 길죠. 이 부분이 저는 1분 정도 걸렸는데 이것을 실행하면 이렇게 성능 비교 결과가 나옵니다. 선생님의 정확도가 74.77, 스튜던트의 정확도가 70.66, 그러니까 혼자 공부한 학생이 70.66이고 선생님과 함께 공부한 학생은 70.88이에요. 그러니까 지식 증류를 활용하면 조금 더 학생이 똑똑해집니다. 지식 증류 효과가 0.2% 있었다. 이런 식으로 어 혼자 공부하면 단순 암기지만 선생님과 공부하면 관계를 이해하고 미묘한 패턴을 학습할 수 있습니다. 이게 소프트 레이블이다. 작은 모델이지만 더 똑똑해진다, 이런 것이죠.

- - 그래서 선생님의 확률 분포는 다크 널리지이고 이 미묘한 정보들이 학생을 더 똑똑하게 만들어 줍니다. 이렇게 나왔어요.

- - 그러면 이 코드를 한번 보면 템퍼레처가 5로 돼 있으면 제가 2로 바꿀게요. 템퍼레처 5는 너무 좀 심한 것 같으니까 2로 바꾸고 선생님의 지식을 25%, 정답 지식을 75% 이렇게 바꿔 보겠습니다. 이렇게 하고 실행을 누르면 지금 이 학생을 가르칠 때 정답 지식을 75% 선생님 지식을 25% 가르쳐요. 저 비율로 가르치는 겁니다.

- - 그러면 이렇게 학습이 진행되고 이 템퍼레처 3이라고 나온 것은 이제 이 위 메시지를 안 바꿔서 그런데 바꿔 주시면 되는 부분이고요.

- - 그래서 지금 이 템퍼레처랑 이 지식 부분 비율을 바꿔 가면서 한번 실험을 해 보시면 좋을 것 같아요. 아 템퍼레처가 조금 커지면 어떻게 되는지 그다음에 선생님의 지식을 더 주면 그냥 혼자 학습한 학생보다 얼마나 더 뛰어나지는지, 그래서 지식 증류가 어떤 역할을 하는지를 이 비율을 바꾸면서 느껴 보실 수 있습니다.

- - 그래서 지금 이런 식으로 나왔고 제가 방금 전에 들어가 있던 비율보다 이 지식 증류의 비율을 낮췄더니 이 효과가 이렇게 감소하는 것이 보입니다.

- - 그래서 지식 증류가 조금 들어가는 것보다는 더 들어가는 것이 효과적이다라는 것을 알 수 있겠죠.

- - 그래서 이 템퍼레처랑 이 부분, 이 비율 부분을 조절하시면서 한번 차이를 느껴 보시면 좋을 것 같습니다.

- - 그래서 이런 식으로 쭉 하면 이런 메시지까지 나오고요.

- - 그래서 실습은 꼭 한번 해 보실 것을 추천드립니다.

- - 네 이제 실습까지 끝났고요. 결론을 말씀드리자면 이 지식 증류는 AI 시대를 이끄는 핵심 기술입니다. 과거의 기술이 아니고요. 지금도 AI 시대를 이끌고 있다라고 생각하시면 됩니다.

- - 그리고 잼마 3, 제미나이가 티처 모델이고 잼마 3가 스튜던트 모델이고 메타 라마도 마찬가지죠. 라마 4의 큰 모델이 작은 모델을 가르쳤습니다. 딥시크는 이제 선생님 모델이 딥시크 R1이라면 학생들은 퀸 모델을 이렇게 썼고요.

- - 그래서 이런 식으로 현재도 지식 증류는 많이 쓰이고 있습니다.

- - 그래서 실습 꼭 한번 해 보시면서 아 이게 지식 증류구나라고 아실 수 있으면 좋을 것 같습니다. 오늘의 영상은 여기까지입니다. 영상이 도움이 되셨다면 좋아요와 구독을 눌러 주시면 감사하겠습니다.

---
-