dev-writeup-2024 / january

개발 1일 1글 스터디
2 stars 0 forks source link

[01-23] Knowledge distillation (딥러닝 증류 방법) #92

Open neolgu opened 5 months ago

neolgu commented 5 months ago

Knowledge distillation (딥러닝 증류 방법)

오늘의 작업곡: Graduation - 혁오

들어가며

마지막 날도 사전 과제용 공부 정리입니다.

마지막 날도 힘"빼서" 가보도록 하죠?!

딥러닝에서 Knowledge distillation이란?

NIPS 2014에서 "Distilling the Knowledge in a Neural Network"이라는 논문에서 출발한 개념입니다.

일반적으로 연구에서 사용되는 딥러닝 모델은 성능을 위해서 파라미터수가 비대하게 크고 연산량이 많은 단점이 있습니다.

다시 말해서, 성능을 목적으로 한 모델입니다.

하지만, 이런 성능을 목적으로한 모델을 실제 서비스나 엣지 디바이스에서 작동시키기엔 너무 모델이 큰 한계가 있습니다.

여러분들의 아이폰이나 갤럭시에서 동일한 기능을 쓰고 싶은데 A100 같은 서버용 GPU가 필요한 딥러닝 모델은 당연히 못돌리는 문제점이 있죠.

그래서 knowledge distillation이란 개념이 나오는데 작은 네트워크에서도 큰 네트워크와 비슷한 성능을 낼 수 있도록 큰 모델에서 작은 모델로 지식 전수를 하는 것이죠.

방법론

목적함수와 구조를 보면 이런 증류 방법을 쉽게 이해할 수 있습니다.

image

구조를 보면 선생모델과 학생 모델을 동일한 인풋으로 결과를 뱉습니다.

클래시피케이션을 기준으로 보면 마지막에 크로스 엔트로피를 적용해 각 클래스별 확률 분포를 출력합니다.

즉, 선생 모델의 출력값과 학생 모델의 출력값으로 Loss를 구성하여 선생 모델의 결과 값을 따라가도록 디자인됩니다. (소프트 라벨)

물론, 학생 모델도 일반적인 학습법과 동일하게 라벨 값을 통한 원래 학습도 진행합니다.(하드 라벨)

(선생 모델과 라벨 둘다 보고 학습한다는 의미)

로스는 다음과 같이 표현됩니다.

image

왼쪽이 원래 일반 크로스 엔트로피를 이용한 로스라면 오른쪽은 선생 모델에서 나온 결과로 로스를 구성하는 것을 알 수 있습니다.

알파와 T 값을 통해 그 비율을 조정합니다. (사실, 알파가 비율이고 T는 선생과 학생의 소프트 라벨링을 어느정도로 할지 결정하는 값입니다. (소프트 맥스 함수의 영향 완화를 위해))

추가로 이런 증류방식을 이용하여 선생모델의 정보를 얻는 방식은 여러가지 있습니다.

  1. Response-Based knowledge - 지금과 같이 마지막 출력만을 이용하는 것
  2. Feature-Based knowledge - 중간중간 선생 모델의 layer 값을 빼서 student에게 주는 방식
  3. Relation-Based knowledge - 인풋, 여러 피처 정보, 출력 간의 정보 등 여러가지를 전부 활용하는 것
  4. 이외에도 Task에 따라 여러 방식이 존재합니다.

stable diffusion에서 증류 활용 예

BK-SDM: Architecturally Compressed Stable Diffusion for Efficient Text-to-Image Generation

논문에서 사용된 디퓨전 모델에서 증류 예입니다.

image

보시는 바와 같이 기존 선생 모델에서 몇 개의 레이어를 지워낸 작은 학생 모델을 만들었습니다.

보라색 선을 보면 알수 있듯이 해당 방법은 Response-based, feature-based 방식 두가지를 적용한 증류법입니다.

Loss 는 일반 스테이블 디퓨전 로스와 증류 피처 로스, 증류 응답 로스로 구성되어 있습니다.

image

결과를 보면 학생 모델을 얼마나 간략화 했는지에 따라 다르지만 파라미터 수가 30%~40% 정도 감소한 것을 볼 수 있는데 이에 비하여 성능은 약간 떨어지지만 비슷한 수준을 유지하는 것을 알 수 있습니다.

(파라미터 수와 비슷한 방향으로 연산량과 추론, 학습속도도 감소합니다.)

즉, 실제 배포 환경에서는 증류한 모델을 배포하는 것이 서비스에는 더욱 편하다고 할 수 있죠.

image

image

파인튜닝 까지?

해당 논문에서 저자는 이런 증류를 통해 학생모델을 가르칠시 dreambooth 방법을 이용한 파인튜닝에도 효과적으로 동작한다고 주장합니다.

증류 방식을 통해 학습된 모델과 없이 학습된 모델을 비교하였을 때, 증류 방식을 진행하여 학습된 모델을 파인튜닝 했을때 선생 모델에 비해 비슷한 결과를 보여주었지만, 증류방식 없이 학습한 모델은 제대로 이미지를 생성하지 못하는 모습을 보였습니다.

image

마치며

1월 스터디 고생하셨슴두~.

출처

Kim, Bo-Kyeong, et al. "Bk-sdm: Architecturally compressed stable diffusion for efficient text-to-image generation." Workshop on Efficient Systems for Foundation Models@ ICML2023. 2023.

Kjm04175 commented 5 months ago

image