- 2022년 10월 7일 오후 10:02
- 조회수: 12070
REFERENCES
INFORMATION
- 2022년 10월 7일
- 오후 1시 ~
온라인 비디오 시청 (YouTube)

TOPIC
On-Line Video
OVERVIEW
청취자 후기

이번 세미나는 AI 모델에서 Inference시 성능은 유지하면서 속도 향상 및 에너지 절약과 같은 경량화 방법에 대해 진행되었다. 컴퓨터의 메모리나 GPU 등은 지난 5년간 엄청나게 발전하였으며, 이에 따라 AI 모델 또한 많은 파라미터를 갖게 되는 것이 가능하면서 큰 성장을 이룩하였다. 그러나 21세기에서 많이 쓰이는 모바일 디바이스의 발전속도는 이를 따라가지 못하고 있다. 모바일 디바이스에서 주로 쓰이는 NPU에 대한 연구가 뎌딘 것도 있지만, 무엇보다 모바일 디바이스는 컴퓨터 서버보다 작기에, 발열과 같은 이슈사항이 존재하기 때문이다. 이러한 한계를 극복하기 위해서 본 세미나는 기존 모델과 성능은 유사하게 가져가되, 모델의 크기와 연산량을 줄일 수 있는 3가지 방법론을 소개한다.
첫 번째는 Pruning이다. 이는 말 그대로, 가지치기를 의미한다. 신경망 학습 시 출력 결과에 거의 영향을 주지 않는 뉴런들을 식별하여 제거하고, 학습하는 과정을 반복한다. 이는 흔히 알고 있는 Dropout과 유사하지만, Dropout은 Inference 때 모든 뉴런을 다시 다 켜서 Inference가 느려질 수 있다는 문제가 존재한다. 하지만 Pruning은 경량화 된 것을 그대로 활용하기에 Inference에서 장점을 가진다. 두 번째는 Knowledge Distillation이다. 이는 기존에 학습된 모델을 활용하여 작은 모델을 학습하는 것을 의미한다. 그렇기에, 많은 파라미터의 모델로 학습된 정보를 적은 파라미터의 모델에서 활용할 수 있다는 장점을 갖는다. 마지막은 Quantization이다. 메모리를 적게 차지하는 데이터 타입으로 AI모델을 학습하자는 것이 취지이다. 예를 들어 흔히 아는 “flaot32”가 아닌 “int8”로 모델을 학습하고자 하는 것이다. 이때, 이상치를 최대값으로 대치해주는 clipping이나, 근사값으로 매핑해주는 rounding 등을 활용한다. 이는 모델을 경량화 할 수 있지만, 정확도 손실이 발생할 수 있다는 한계를 갖는다. 위 세 가지 방법을 동시에 활용하여 연구를 수행한 사례도 있다. 이때, 3가지를 모두 활용함으로써 적은 성능 손실만으로 모델을 49배 경량화하였다.
이번 세미나를 통해 Inference 시간을 경량화 하는 것의 중요성과 방법론에 대해 접할 수 있었다. 개인적으로는 모델의 성능을 높이기에만 급급하고, 모델의 효율성에 대해서는 깊게 생각하지 않았던 스스로를 반성하게 되는 세미나였다. 또한, AI모델을 직접 현실에 적용하는 산업공학의 특성상 Inference 시간을 경량화 하는 것은 하나의 포인트가 될 수 있을 것이라는 생각이 들었다. 유익한 세미나를 준비해주신 방병우 연구원님께 감사드리며 이상으로 세미나 후기를 마친다.

이번 세미나는 AI모델의 경량화에 대하여 진행되었다. 특히 AI모델을 경량화 해야 한다는 사실 자체를 전혀 생각해 본적이 없었기에 굉장히 재밌게 세미나를 청취할 수 있었다. 현재 급격한 반도체 기술의 발전으로 고성능 AI모델이 개발되고 또 수없이 많은 파라미터를 사용하게 된다. 이때 서버 차원에서는 모델의 저장이나 추론 과정이 크게 제약이 없는 반면에 모바일 기기에서는 전혀 다른 양상을 띄게 된다. 온도와 전력의 제약, 그리고 각종 안전 규격에 의하여 AI모델을 있는 그대로 사용할 수가 없는 상황이고 모델의 경량화가 필수라고 한다. 특히 AI가속기의 성능 개선보다 AI모델의 크기가 더 빠르게 커지고 있기 때문이다. 경량화 연구는 앞으로 점차 다양한 방법론들이 발전할 수록 필수적으로 대두 될 문제인 것 같다. 본 세미나에서 이러한 문제를 해결하는 3가지의 방법을 소개하였다. 첫 번째로 Pruning(가지치기)을 소개하였다. 가지치기는 모델의 모든 파라미터가 추론에 영향을 미치는 것이 아니라는 것에 착안하여 파라미터를 상당 부분을 제거 하는 것을 뜻한다. Dropout과의 차이로 랜덤 하게 노드를 가리는 것이 아니라 정말 의미가 없는 노드를 삭제하는 것이다. AlexNet의 경우 가지치기를 통하여 0.1%의 성능 하락만으로 파라미터가 1/9로 줄어들어 굉장히 인상 깊었다. Convolution 연산 과정 중 커널이나 채널에서도 가지치기가 적용 가능하고 오히려 모델의 용량을 15배로 줄이면서 성능까지도 향상되는 실험이 있어서 충격이었다. 두번째로는 Knowledge Distillation(지식증류)을 소개하였다. 해당 기법은 여러 모델을 앙상블을 통하여 정확도는 유지하면서 모델의 경량화를 이루는 방법이다. 소금물을 증류시켜서 더 진한 소금물을 만들듯이 기존 모델을 증류 시켜서 성능은 최대한 유지하면서 저장 공간과 실행 메모리를 줄이는 것으로 이해하였다. 세번째는 Quantization(양자화)를 소개하였다. 양자화는 float32로 사용되는 것을 int8로 변환함으로서 적은 bit를 사용하여 메모리의 사용을 줄이는 것이 핵심이다. 물론 적은 메모리를 쓰는 만큼 정확도가 떨어질 수밖에 없지만 이를 최대한 방지하기 위하여 다양한 방법이 연구되고 있었다. 마지막으로는 가지치기와 양자화를 함께 적용하고 압축하는 시도를 통하여 최대 49배까지 속도를 개선 하였다고 하여 흥미로웠다. 과거에 제조 현장에 AI를 적용하는 과제 중 AI 모델이 추론하여 결과를 회신하여야 하는 시간 제약이 ms 단위로 굉장히 타이트한 환경이 있었던 기억이 났다. 좋은 성능의 모델을 만드는 것도 중요하지만 만들어진 모델을 현장에 적용하는 것은 또 다른 문제라는 생각이 들어 인상 깊었다. 이번 세미나를 통해서 새로운 분야를 알게 되어 의미 있는 시간이었다. 유익한 세미나를 준비해주신 방병우 연구원님께 감사드리며 이상으로 세미나 후기를 마친다.

인공지능 모델 경량화 세미나를 청취하였다. 모델 경량화에 대해 구체적인 연구실 세미나는 이번이 처음이었는데, 굉장히 흥미롭게 들었다. 이 자리를 빌어 감사의 말씀을 전하고 싶다.
인공지능 모델 경량화에 대한 현업 필요성이 상당히 구체적인 예시를 들며 세미나가 시작되었다. 그리고 모델 경량화에 대한 대표 연구 흐름 3가지가 소개되어 있는데, 이 부분은 모델 경량화 입문자 또한 쉽게 이해할 수 있는 수준에서 가장 중요한 아이디어 위주로 정리되어 있다. 조만간, 산학 프로젝트에서 모델 경량화 일을 수행할 예정인데, 본 세미나가 큰 도움이 되었다. 지식 증류는 모델 경량화에 대한 대표 기법으로써 조금 익숙한 상태였는데, 가지치기와 양자화는 크게 흥미로운 부분이였다. 개인적으로, 양자화 인식 동시 학습 모드가 API로 꾸준히 개발되면, 우리 연구실이 GPU 열기로 더워하는 일은 더 이상 일어나지 않겠구나 생각했다.
좋은 세미나를 준비해주신 병우 형에게 감사의 말씀을 전하며, 세미나 후기를 마치도록 한다.

MobileNet 등장 이후 AI 연구 트렌드는 연산량의 증가로 인해 얻어지는 성능 향상을 이루는 것보다 최소한의 성능 감소로 모델 크기 및 연산량을 최대한 줄이는 효율성에 초점을 맞추고 있다. 이러한 이유는 휴대용 장비에 들어가는 메모리의 발전 속도가 슈퍼 컴퓨터나 대형 장비 전용의 속도를 따라가지 못하기 때문이다. 또한 휴대용 장비 사용자의 안전을 위해 사용 전력의 규제도 한몫 한다.
본 세미나에서 소개한 모델의 경량화는 총 3가지로, 1. Pruning 2. Knowledge Distillation, 3. Quantization 이다.
1. Pruning 은 모델의 추론에서 적게 기여하는 노드의 가중치를 완전히 제거하는 방법이다. 언뜻 들어보면 Dropout과 비슷해 보이지만, Dropout은 학습 단계에서 노드를 랜덤하게 드롭한다는 점과 추론 단계에서는 모든 노드를 활용한다는 것에서 차이가 존재한다. 또한 Pruning 의 목적은 모델 크기 축소인 반면, Dropout의 목적은 과적합을 방지하기 위한 규제 효과라는 것이다. 필자의 생각으로는 Pruning은 Dropout보다는 L1 Regularization에 더 가깝지 않나라고 생각한다.
2. Knowledge Distillation은 무겁지만 추론 성능이 뛰어난 모델의 퍼포먼스를 가벼운 모델이 전이시키기 위한 방법론이다. 단순한 전이 학습과 달리 구조 혹은 크기가 상이한 모델 간에도 적용할 수 있다는 것이 차이점이다. 예를 들어, Teacher Model이 ResNet 50 혹은 ResNet 101이라도 Vision Transformer와 같이 구조가 완전히 상이한 모델을 Student Model로 사용할 수 있다는 것이다. 필자의 생각으로는 Knowledge Distillation은 Vision Transformer의 등장 이후 더욱 많이 연구가 되었던 것 같다. Vision Transformer는 CNN과 달리 Locality 등의 Inductive Bias가 존재하지 않으며, 이는 양날의 검과 같다. 데이터 크기가 적을 경우 CNN보다 학습 속도 및 성능이 저조하지만 JFT와 같이 매우 큰 데이터에서는 CNN 계열보다 높은 성능을 자랑한다. 이러한 Vision Transformer의 단점을 보완하기 위해 Knowledge Distillation 을 결합한 DeiT가 등장함으로써 현재 메타라고 불리는 Facebook의 주도 하에 Knowledge Distillation과 Vision Transformer 관련 연구가 활발하게 진행되었다. 여담으로 Self-Distillation이라는 자가지도학습 방법을 적용한 DINO라는 모델 또한 등장하였다.
3. 필자는 메모리 관련 기초 지식이 풍부하지 않아 Quantization은 완벽히 이해하지 못하였지만, 최근 부상하는 auto mixed-precision이라는 주제와 연관이 있는 것 같다. 간단히 말해 굳이 소수점 몇백짜리까지 저장하여 사용할 필요가 있을까라는 취지에서 시작되었다. 연산에 불필요한 메모리 크기는 줄이고 이로 인해 연산 효율성을 높이고 모델 크기는 줄일 수 있다는 것이다. 심지어 실제로 amp를 적용해보면 이론 상 일부 정보 손실로 성능이 감소 할 것 같지만, 오히려 성능이 증가하는 경우가 많이 존재한다. 이는 입력 데이터의 양자화 혹은 데이터 변환을 통해 더 큰 배치 사이즈로 학습할 수 있기 때문이다.
많은 분야에서 AI의 성능이 인간의 추론 성능을 뛰어넘었으나, 이러한 모델을 구축하기 위해 많은 전기 에너지가 소모되고 탄소 배출량이 증가되고 있다. 또한 이러한 모델들은 모빌성이 떨어진다. 이러한 문제를 해결하기 위해 실용적인 모델 경량화 기법을 소개해준 병우형께 감사의 말씀을 전한다.

AI 모델들을 모바일 디바이스에서 사용할 경우에는 많은 제약으로 큰 성능 개선을 기대하기 불가하다.
저전력 고성능을 위한 제품인 NPU환경에서 지속적으로 커져가는 AI모델을 Serving하기 힘들어지고 있다. 이러한 문제점들을 해결하기 위한 방안이 모델경량화인데 세부적으로 3가지로 Pruning(가지치기), Knowledge Distillation(지식증류), Quantization(양자화)로 나눌수 있다. Pruning 방법론은 모든 파라메터가 추론에 동일한 영향을 미치는 것이 아니다라는 가정하에 파라메터 수를 줄이는 방법론이다. 큰영향이 없는 파라메터들을 제거하여 학습하고 상당수 제거하는데 3가지 Step으로 구성한다. 연결방식에 대해서 학습하고 특정임계점에서 더 낮은 값이 나오면 제거하고 재학습을 반복한다.
이 결과로 파라미터 개수를 9배 개선할수 있다. dropout과 다른점은 Neuron을 끄고 학습하고 예측에는 다시 키고 활용하지만 pruning은 제거하기 때문에 더 효율적인 연산이 가능하다. Knowledge Distillation 방법론은 기학습된 모델을 갖고 앙상블하여 더 작은 모델을 학습되도록 하는 방법이다. 복잡한 큰 모델들을 teature 모델로 하여 작은 Student 모델을 만드는 방식으로 모델을 경량화 한다고 이해했다. 마지막 방법론은 Quantization방법인데 원래 아날로그 신호를 디지털로 변환하는데 사용했었는데 AI 분야에서는 모델을 경량화 한다는 것을 의미하고 있다. 약간의 손실을 감안하여 모델의 사이즈를 줄이는 방법이다. Float형 데이터를 Int 형으로 변환하여 메모리의 활용을 효과적으로 할수 있도록 한다. 회사에서 다양한 방식으로 모델을 만들고도 시간적인 제약으로 적용하지 못하는 경우들이 있었고 이러한 문제점들을 해결할수 있는 방안이 될것 같다. 다양한 경량화 방법을 준비해준 방병우 연구원님께 감사드리며 세미나 후기를 마친다.

이번 세미나는 AI 모델에서 Inference시 성능은 유지하면서 속도 향상 및 에너지 절약과 같은 경량화 방법에 대해 진행되었다. 급격한 반도체 기술의 발전으로 고성능 AI모델이 개발되고 더 많은 파라미터들이 사용된다. 하지만 서버향 AI가속기와는 달리 모바일 디바이스에서는 온도와 전력의 제약, 그리고 각종 안전 제약으로 인해서 모델의 경량화가 필수이다.
모델 경량화 방법에 대하여 3가지를 소개한다.
1. pruning 가지치기 방법으로 model 에서 weight들 중 중요도가 늦은 weight의 연결을 제거하여 모델의 파라미터 수를 줄이는 방법이다. drop out과 유사하지만 drop out은 training 시에는 connection을 끊고, evaluation에서는 connection을 다시 연결하지만 pruning에서는 evalution에서도 connection을 다시 연결하지 않는다는 차이점이 있다. 또한, filter 및 channel에 까지 확장을 하여 메모리를 획기적으로 줄일 수 있다. 하지만 정보의 손실이 발생 할 수 있고, 지속적인 가지치기로 인해서 연산에 소요되는 시간이 많다는 단점이 있다.
2. knowledge distillation 지식 증류 방법으로 teacher-student 방법이라고도 한다. teacher 모델을 활용하여 student 모델을 학습하는 것을 의미한다. 이로 인해서 많은 파라미터의 모델로 학습된 정보를 적은 파라미터의 모델에서 활용할 수 있다는 장점이 있다.
3. quantization 양자화로 ai에서는 경량화를 뜻한다. 예시로 float32의 영역을 int8로 표현하는 것이 양자화 방법의 핵심이다. clamping 과 rounding과 같은 방법을 사용하여 메모리가 작은 영역으로 메모리의 사용을 줄이는 것이다.
마지막으로 pruning과 quantization을 함께 사용하면 성능을 더욱 개선시킬 수 있다는 부분에서도 더욱 흥미로움이 있었다.
이번 세미나를 통해서 현장에서 AI의 효율성을 높이기 위해서 경량화는 필수적이라는 생각이 든다. 앞으로도 해당 분야에 대해서 관심을 가지고 적용을 할 수 있도록 많은 공부를 해야겠다는 깨달음을 얻을 수 있었다. 유익한 세미나를 준비해주신 방병우 연구원님께 감사드리며 이상으로 세미나 후기를 마친다.

이번 세미나는 AI 모델 경량화 기법을 주제로 진행되었다. AI 모델의 크기와 연산량이 증가함에 따라 training과 inference에서 요구되는 전산자원과 비용이 증가하고 있다. 따라서 정확도의 손실은 기존 모델 대비 최소화 하면서도 모델의 크기와 연산량을 줄이는 모델 경량화 기법은 매우 필수적이다. 본 세미나에서는 이러한 모델 경량화 기법 3가지를 소개하였다.
첫 번째는 pruning(가지치기) 기법으로, 모델의 파라미터 수를 줄이는 방법이다. 신경망이 깊어질 수록 weight들이 늘어나는데, 이들 중 출력 결과에 영향을 거의 주지 않는 간선들도 존재한다. 따라서 중요도가 낮은 뉴런들에 대해서는 연결을 제거하고 재학습을 반복함으로써 연산량과 파라미터 수를 줄이게 된다. 또한 convolution 연산에 있어서는 filter 혹은 channel에서도 해당 기법을 적용할 수 있다고 한다. 그러나 지속적인 가지치기와 클러스터링 연산 수행으로 인해 많은 시간이 소요된다는 단점이 존재한다. 두 번째는 knowledge distillation(지식 증류) 기법으로, 기존에 학습된 모델인 teacher모델을 student 모델을 학습할 때 활용하는 방법이다. 많은 파라미터의 모델로 학습된 정보를 적은 파라미터를 가진 모델에서 사용함으로써 저장 공간 및 실행 메모리 사용량을 줄일 수 있다. 세 번째는 quantization(양자화) 기법으로 float32로 계산된 모델을 더 낮은 비트인 int8로 변환함으로써 메모리의 사용을 줄이고 속도를 향상시키는 방법이다. 이때 정보를 낮은 비트로 변환하기 때문에 정확도의 손실이 발생할 수 있다는 단점이 존재한다. 이러한 Quantization은 학습이 끝난 모델의 weight 값에 대해 수행할 수도 있고, training을 진행하면서 quantization을 함께 수행할 수도 있다. 뿐만 아니라 계속해서 다양한 quantization 방법에 대한 접근과 개선이 이루어지고 있다고 한다.
이번 세미나를 통해 평소에 깊이 생각해보지 못했던 모델 경량화의 개념과 그 중요성에 대해 배울 수 있었다. 정말 산업 현장에서 AI 모델을 개발할 때는 높은 성능을 내는 것도 중요하지만 실제로 serving 가능하도록 만드는 것이 중요하겠다는 생각이 들었다. 그리고 이를 위한 경량화 기법에 대해 앞으로도 관심을 가지고 꾸준히 공부해나가야겠다. 유익한 세미나를 진행해주신 방병우 연구원님께 감사의 말씀을 전하며 세미나 후기를 마친다.

이번 세미나는 AI model이 inference를 할 때 성능 하락은 최소화하고 연산 속도 하락과 전력 사용량을 최소화하는 기법을 주제로 진행되었다. 최근 들어 데이터 센터와 같은 서버야 하드웨어는 5년간 20배 넘는 성능 향상을 보이며 빠르게 발전했다. 하지만 주로 모바일 기기에 사용되는 NPU는 컴퓨터 서버와는 다른 구조이기 때문에 발전에 한계가 존재했다.
따라서, 모바일 디바이스에 적용할 수 있는 모델 경량화 연구의 중요성은 대두되었고, 크게 Pruning, Knowledge Distillation, 그리고 Quantization의 갈래로 진행되고 있다. 우선 Pruning은 모델의 weight들 중 중요도가 낮은 weight의 연결을 제거하여 모델의 파라미터를 획기적으로 줄이는 방법이다. 흔히 사용되는 dropout과는 달리 inference 시에도 파라미터를 아예 사용하지 않는다. 다음으로 Knowledge Distillation는 무겁지만 추론 성능이 뛰어난 teacher 모델과 상대적으로 가벼운 모델인 student 모델을 사용하는 방법이다. Transfer learning과는 달리 서로 구조가 다른 모델에도 적용할 수 있다는 장점이 존재한다. 마지막은 Qunatization으로 float32로 사용되는 것은 int8 구조로 변환하여 메모리를 줄이는 것이 핵심이다. 물론 어느 정도의 성능 하락은 존재하겠지만 저장 공간과 속도를 획기적으로 늘릴 수 있다.
연구실에서 실험을 진행할 때 연산 속도와 메모리 사용량을 거의 고려하지 않고 진행하고 있는 나에게 반성이 되는 세미나였다. 물론 모델의 성능을 높이는 것이 중요하겠지만, 실용성 측면에서는 연산량 또한 필수적으로 고민해야 되는 요소라고 생각된다. 흥미로운 분야의 세미나를 진행해준 병우형께 감사의 말씀을 드리며 세미나 후기를 마무리한다.