이미지 출처: https://medium.com/gowombat/iot-simple-iot-with-free-cloud-solutions-tutorial-76ac5cf6e5a0
기본적으로AI기반 모델들은연산량이많아 고성능 컴퓨터 기반으로 모델링 되었습니다.
그렇기 때문에, device(하드웨어: 센서 등)에서 얻은 데이터들은 클라우드에 위치한 고성능 서버 컴퓨터로 전송되고, 전송된 데이터는 해당 컴퓨터에 탑재된 AI 모델을 이용해 처리하게됩니다.
물론 Cloud에서 데이터 과부하가 발생하는 것을 막기위해 FOG라는 것을 두어, 중요한 데이터를 선별하는 변화를 꾀했지만, 이 역시 완전한 해결책은 아니었습니다. → Fog 컴퓨팅 관련링크
이미지 출처: https://www.imagimob.com/blog/edge-computing-needs-edge-ai
결국, 클라우드 서버에 몰리는 방대한 데이터로 인해 발생하는 트래픽 문제를 해소하기 위해 Edge Computing이라는 용어가 등장하게 됩니다.
1-2. 느린 Response time
기본적으로 데이터 양이 많으면 클라우드까지왔다갔다하기에 시간이 오래 걸릴 수 있습니다.
이미지 출처: https://www.researchgate.net/figure/Computing-devices-accessing-cloud-applications-may-face-slow-response-time_fig1_301784764
그런데, 단말기(edge)에서 AI 기법을 적용시키는 경우 고속 reponse time이 필요합니다.
예를들어, 아이의 이상행동을 감지하거나, 자율주행자동차의 경우 기기 자체에서 AI모델을 training(학습)하고 inference(추론)할 수 있게 해주어야 합니다.
이미지 출처: https://www.banggood.com/Xiaovv-C1-1080P-WIFI-H_265-IP-Camera-Baby-Infants-Monitor-2MP-150-Super-Wide-Angle-Baby-Sleep-Care-Crying-Alarm-Push-Two-way-Audio-IP-Camera-p-1765180.html
이미지 출처: https://www.dreamstime.com/stock-illustration-autonomous-driverless-car-automobile-sensors-use-self-driving-cars-camera-data-pictures-radar-lidar-image69567133
2. Edge Computing 이란
위에서 언급한 것처럼, edge device 자체에서 AI모델을 training(학습)하고 inference(추론)할 수 있게 해주는 기술을 edge computing이라고 합니다.
이미지 출처: https://www.imagimob.com/blog/edge-computing-needs-edge-ai
이러한 Edge computing을 가능하게 했던건 역시 하드웨어 기술의 발달 때문이었습니다.
집적기술의 발달로 인한 AI chip 발전이 가능해짐
IoT와 같은Device에AI chip (ex;TegraX)이 들어갈 수 있기 때문에,머신러닝이가능
이러한 추세는sensing과 관련된IoT디바이스들을 좀 더intelligent하게 만들 수 있게 됨
Smart phone에서는GPU, CPU통합 개념인AP(ApplicationProcessor)라는on-device가 있다.
Qualcomm, Apple, Samsung, TSMC, NVIDIA 같은 회사들이 얽히고 얽혀 있으며, 이러한 회사들의 기술개발 트렌드를 따라가지 못하면 결국 Edge computing을 연구하려는 연구자들은 엉뚱한 연구를 할 가능성이 높아짐
이렇게 딥러닝 기술들을 IoT 기기에 올리기 위해서는 큰 딥러닝 모델(network)를 압축(compression) 시켜야할 기술이 꼭 필요하겠죠? (굳이 IoT 기기가 아니더라도, 드론, 위급상황시 투입되는 로봇들 등에 딥러닝 모델을 올리기 위해 network compression 기술이 필요하기도 합니다)
"Network Compression for AI" 카테고리에서는 AI 모델을 압축시키는 여러 방법에 대해서 이야기 하려고 합니다.
실제로 AI모델 (ex:딥러닝, 머신러닝 모델 등) 들은 하드웨어에 임베딩 하기 힘든 큰 용량을 갖고 있습니다.
그래서 몇 년전부터 이러한 AI 모델을 압축시키는 여러 기술들 ("Knowledge distillation, Pruning, etc.) 이 출현하고 있었죠.
이미지 출처: https://blog.est.ai/2020/03/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-%EC%95%95%EC%B6%95-%EB%B0%A9%EB%B2%95%EB%A1%A0%EA%B3%BC-bert-%EC%95%95%EC%B6%95/
그렇다면 왜 AI 모델을 하드웨어에 올려서 사용하려는 노력이 왜 필요할까요?
이미지 출처: https://kr.mathworks.com/company/events/webinars/upcoming/deep-learning-with-raspberry-pi-and-matlab-3251374.html
예를 들어, 굉장히 좋은 저널과 학회에 논문들이 쏟아져 나오고 있지만, 종종 "이러한 기술들이 우리 일상생활을 어떻게 바꿀 수 있을까?"라는 생각이 드는 경우가 있습니다. 물론, 논문에서 introduction을 읽다보면 어느 분야에 기여할 수 있는지 파악할 수 있지만, 개인적으로는 내 일상에서 너무 멀리 떨어진 것 같다는 생각을 하기도 합니다.
연구라는 것이 굉장히 독창적인 측면도 좋지만,
결국 산업에 기여하고 투자를 받아야 오래 동안 할 수 있습니다.
또한, 바로 내 주위 사람들에게 영향을 미칠만한 연구를 하고 있다는 느낌을 받아야 동기부여도 더 잘 될거라고 생각합니다.
이미지 출처: https://journals.plos.org/plosmedicine/article/figure?id=10.1371/journal.pmed.1001953.g001
이미지 출처: https://aeneas-office.org/2018/11/20/penta-project-creates-secured-digital-connected-healthcare-devices/
이러한 노력의 일환으로 딥러닝 분야에서는 큰 딥러닝 모델 용량을 하드웨어 수준에 맞추도록 줄여주는데, 이를 Network Compression 이라 합니다.
우선 Network Compression 기술들에 대해 알아보기 전에, 이러한 기술들의 needs가 커질 수 밖에 없었던 여러 현상들과 관련 용어들을 다루는 글을 기재하도록 하겠습니다. 왜냐하면...
이번글은 Knowledge distillation이라는 개념에 대해서 간단하게 소개해드리려고해요!
Q1. Distillation이 무엇인가요?
Knowledge distillation에 대해서 알아보기전에 "distillation(증류)"라는 단어부터 알아보고 갈게요.
Distillation이란 액체상태의 혼합물을 분리하는 방법이에요. 쉽게 말해서 A+B의 혼합물이 있으면 특정 기법을 이용하여 A 또는 B를 따로 추출하는 방법이에요. 그래서 Distillation이라는 용어를 인지할때는 '복잡하게 섞인 물체에서 필요로 하는 부분만 따로 추출하는 것'이라고 이해하고 있으면 좋습니다.
<사진1. Distillation>
Q2. 딥러닝에서 사용되는 knowledge distillation이라는 용어는 무엇인가요?
Distillation을 알아보았으니 knowledge라는 개념이 딥러닝에서 어떻게 사용되었는지 이해하면 되겠죠?
딥러닝 모델이 발달됨에 따라 모델이 점점 복잡해졌데요. 이렇게 복잡해진 딥러닝 모델 중에서 정말 필요한 지식들만 따로 가벼운 모델에 distillation(or transfer) 할 순 없을까?라는 질문에서 시작된 학습 방법론이라고 할 수 있어요.
Q3. 예를 들어주세요!
일반화 성능을 높이기 위해서 자주 쓰이는 방법은 더 깊고 복잡한 네트워크를 구성하거나, 여러 네트워크들의 결과를 조합하여 사용하는 ensemble 기법을 사용하는데요.
<사진2. Ensemble 기법>
만약 이러한 ensemble 모델의 결과값(softmax)을 작은 크기의 single neural network 학습에 적용시킬 순 없을까요? 예를들어, 작은 CNN 모델 같은 경우는 마지막 feature map을 이용해 FC layer (MLP 과정)를 거쳐 classification하게 되는데요.
만약에 "마지막 feature map+ensemble 모델의 softmax 결과"를 통해 학습한다면 어떨까요?
작은 CNN 모델이 거대한 ensemble CNN 모델과 비슷한 성능을 낸다면 결과적으로 작은 CNN 모델이 ensemble CNN에서 필요한 부분만 증류시킨 것이라고 볼 수 있겠죠?!
<사진3. CNN 기본구조>
정리해보자면 아래와 같이 요약 할 수 있겠어요!
"Knowledge Distillation이란
크고 무거운 모델의 정보(Knowledge)를 작고 가벼운 모델로 전달하여
작고 가벼운 모델이 더 정확한 추론을 하도록 학습시키는 방법론"
이번장에서는 Knowledge Distillation이라는 개념에 대해 추상적으로 이해해보았으니