brunch

You can make anything
by writing

C.S.Lewis

by 데이터 스포일러 Oct 14. 2024

AI 도전 과제(1편: 모델 경량화)

모델 지식 증류

안녕하세요.

데이터 스포일러입니다.

기술 트렌드를 이해하실 수 있도록 정보를 요약해서 공유해 드리겠습니다. 많은 관심 부탁 드립니다.^^




이번 글에서는 트렌드보다는 기술적인 관점에서 집중하여, 누구나 이해하기 쉽도록 설명해 드리겠습니다.


최근 샌프란시스코에서 열린 'OpenAI DevDay 2024'에서 발표한 주요 내용은 다음과 같은데요.


기업과 개발자를 위한 음성 기반 애플리케이션 구축용 '리얼타임 API(Realtime API)'

이미지와 텍스트로 'GPT-4o'를 미세조정하는 '비전 미세조정(Vision Fine-Tuning)'

대형 프런티어 모델 출력으로 작은 모델 미세조정하는 '모델 증류(Model Distillation)'

사용자 입력을 재사용하는 '프롬프트 캐싱(Prompt Caching)'


그중에서 오늘 자세히 다룰 내용은 '모델 증류(Model Distillation)'입니다.


'모델'은 입력 데이터와 출력 데이터 사이의 패턴과 관계를 학습하기 위해 데이터셋을 기반으로 훈련하는 프로그램으로 정의할 수 있습니다. 제가 지난번 올린 글(생성형 AI, 개념과 활용 영역)에서 정리한 파운데이션 모델도 결국 프로그램입니다.


그럼 '증류'는 어떤 것을 의미할까요?

'증류'의 어원을 보면, (1) 액체를 가열하여 생긴 기체를 냉각하여 다시 액체로 만드는 일과 (2) 여러 성분이 섞인 혼합 용액으로부터 끓는점의 차이를 이용하여 각 성분을 분리하는 것 2가지로 정의되어 있습니다.


<출처: Pixabay 사이트 무료 이미지 활용>


어원을 토대로 '모델 증류'라는 것은 요약해 보면, 다양한 데이터셋(금융, 제조, 미디어 등)을 통해 훈련된 모델의 지식을 추출하고, 다시 새로운 모델로 지식화하는 것을 의미합니다. 

증류되는 과정에서 지식화된 모델에는 모델이 원하는 핵심 정보들만 학습될 수 있겠죠.



우선 '모델 증류'가 필요한 이유부터 생각해 봅시다. '모델 증류'가 필요할까요?


지금까지 나왔던 대부분의 AI 모델들은 플랫폼 내 예측, 추천 등 정확도 높은 서비스 제공을 위해 모델이 복잡하더라도 대용량의 데이터를 바탕으로 (*)일반화되도록 훈련하도록 설계해 왔습니다.

(*일반화: 모델이 훈련하지 않은 데이터에서도 높은 성능(예측, 추천 등)을 내는 것)


최근 기업들은 스마트폰, 태블릿, TV셋톱박스 등에 On-Device 서비스를 제공하기 위해 치열하게 경쟁하고 있습니다. 이와 같은 모바일/임베디드 환경에 AI 모델을 탑재하고, 지속적인 업데이트 및 배포를 위해서는 기존의 복잡한 모델 대신 경량화된 모델이 필수입니다.

그래서 글로벌 기업들이 경량화 모델 개발에 집중하고 있고, OpenAI도 마찬가지이죠.


OpenAI가 발표한 '모델 증류'의 핵심은, 모델을 새로 개발하는 것이 아닌 일반화되도록 훈련된 대형 모델을 모방하면서도 작고 복잡한 모델을 만들어내는 것입니다.


<출처: V7Labs, https://www.v7labs.com/blog/knowledge-distillation-guide>


위 이미지를 기준으로 모델 증류의 중요 용어들을 예시를 들어 정리해 보겠습니다.


[Teacher]

대규모 데이터(예시: 100억 개 이미지)로 훈련된 모델로, 복잡한 구조와 다층 네트워크(Deep Layers)를 통해 수많은 클래스 간의 관계를 학습합니다. 예를 들어 GPT 같은 모델들이 Teacher 역할을 수행합니다.

Teacher 모델은 정확성을 최우선으로 하지만, 연산 자원(메모리, CPU, GPU)을 많이 소모하며 실시간 애플리케이션에는 비효율적일 수 있습니다.


[Knowledge Distillation: Teacher의 지식 전달]

  지식 증류의 핵심은 Teacher 모델의 예측 확률(Soft Labels)을 Student 모델이 학습하는 것입니다. 이때 Soft Labels에는 단순한 정답 외에 클래스 간 유사성 정보가 포함됩니다. 예를 들어, 이미지 분류에서 "고양이"라는 클래스의 확률이 0.8일 때, "호랑이" 클래스에도 0.1의 확률이 포함될 수 있습니다. 이는 두 클래스가 유사함을 시사하며, Student 모델이 이 관계를 학습할 수 있도록 도와줍니다.

Student 모델은 Teacher 모델이 제공한 Soft Labels와 자신의 예측 사이의 차이(Distillation Loss)를 줄이기 위해 학습합니다. 이 과정에서 실제 레이블(정답)과 크로스 엔트로피 손실이 함께 사용되어 정확한 예측을 보장합니다.

크로스 엔트로피는 실제 데이터의 확률 분포와 모델의 예측 확률 분포의 차이를 구할 때 사용됩니다.


[Student]

Student 모델은 실시간 서비스 제공과 모바일/임베디드 환경에서 사용하기 위해 설계되고, Teacher 모델의 복잡한 지식을 최대한 모방한 경량화 모델을 말합니다. 예를 들어, Teacher 모델이 BERT, Student 모델로는 경량화된 모델인 DistilBERT가 있습니다.

Student는 Teacher의 예측 성능을 최대한 보존하면서도 빠른 응답 시간과 적은 자원 사용을 목표로 합니다. 예를 들어, Teacher는 수천 개의 클래스를 분류할 수 있지만, Student는 서비스에 필요한 일부 클래스에 집중합니다.  


위 내용을 3가지로 요약하면 다음과 같습니다.

실시간 서비스와 모바일 환경에 최적화된 Student 모델을 통해 고객 서비스 성능 개선과 비용 절감이라는 두 가지 목표를 동시에 실현할 수 있습니다.

Teacher 모델을 재활용함으로써 신규 서비스에 맞는 경량화된 모델을 신속하게 구축할 수 있으며, 이는 개발 시간과 비용 절감 측면에서 큰 이점을 제공합니다.

Student 모델은 단순히 경량화된 것뿐만 아니라, 모바일 기기, IoT 장비 등 다양한 제한된 자원 환경에서도 원활하게 작동할 수 있습니다.


OpenAI를 비롯해 다양한 대학과 연구 기관에서도 지식 증류(Knowledge Distillation) 연구를 활발하게 진행하고 있습니다. 이를 통해 BERT, GPT 등과 같은 Teacher 모델을 경량화하고 최적화하는 기술이 발전하고 있는데요.


앞으로 더 많은 산업과 서비스에서 경량화된 Student 모델의 활용이 기대됩니다.



오늘은 '모델 증류'에 대해 정리해 보았는데요.


다음 편에서는 '데이터 부족(Lack of Data)'에 대해 정리하여 공유해 보겠습니다.


즐거운 하루 보내세요.^^


작가의 이전글 생성형 AI, 이렇게 활용된다(3편)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari