티스토리 뷰
(해당 포스트에서 소개하고 있는 "TinyML-초소형 머신러닝" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)
요새는 소위 말하자면 인공지능 관련 주제들이 관심을 많이 받는 세상이다. 현업에서도 과제 제안 내용을 받아보면 적어도 어딘가에는 인공지능 기술을 반영하겠다거나, 빅데이터를 통해서 사용자 패턴을 분석하겠다는 내용이 들어있다. 소비자가 생각하는 인공지능 기술이랑 개발자/기획자가 생각하는 인공지능 기술간에는 약간의 괴리가 있겠지만, 요새는 인공지능으로 기존에 못 풀었던 문제들을 해결하고자 하는 시도를 해보고 있다.
그런데 인공지능 기술, 짧게 머신러닝/딥러닝을 실생활에 적용하려면 적어도, 학습하려는 데이터와 어느정도 모사화시킨 모델이 필요하고, 그 모델이 "잘" 동작하게 하려면 데이터를 가지고 모사화시킨 모델을 사전에 많이 학습시켜야 한다. 물론 이에 필요한 computation power도 있을 것이고, 잘 동작하는 모델일수록 이런 computation power도 더 많이 필요할 것이다. 그래서 사람들이 많이 알고 있기론 딥러닝/머신러닝을 하기 위해서는 고성능 GPU/CPU가 달린 서버용 컴퓨터가 필요하다고 한다.
그런데 최근의 동향을 살펴보면, 그런 기술들을 저성능 임베디드 장치에 탑재하려는 노력을 많이 하고 있다. 사실 임베디드 장치에 해당 기술들이 올라갈 수 있으면 그 효과는 파급적이 된다. 제조업체 입장에서는 저렴한 비용으로 인공지능 기술을 구현할 수 있게 되고, 그런 장치들이 TV, 냉장고, 세탁기, 에어콘에 들어가므로, 더 확장시킬 수 있는 것이다. 그래서 많이 시도하고 있는 방법론으로는
- 임베디드 장치 자체 성능으로 학습/추론
- 고성능 컴퓨터에서 학습한 후, 임베디드 장치에서 추론
- 임베디드 장치에 가속기를 장착한 후 학습/추론
표현은 on-Device AI, Edge AI라고 표현하는 것 같은데, 학회까지 나온것으로 보면 tinyML이라는 명칭이 조금 더 보편적으로 쓰이는 것 같다. 아무튼 이번 포스트에서 다룰 책도 이 tinyML에 대한 책이다.
이 책은 작년말에 출간된 "TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low Power Microcontrollers"의 번역본이며, Google에서 Tensorflow Lite 개발 업무를 하는 Pete Warden이 썼다. 사실 이 책은 머신러닝/딥러닝에 대한 이론적인 내용을 다룬다기 보다는 사전에 학습시킨 모델이 있을때, 어떤식으로 모델을 압축하고 탑재할 수 있는지에 대한 노하우를 전달하는 책이다. 아마 아는 사람은 알겠지만, Tensorflow Lite는 Tensorflow 1.x대에서 experimental feature로 들어가 있다가 2.x로 올라가면서 정식으로 반영된 기능으로, 소위 말하면 quantization을 통한 학습 모델을 압축시키고, 임베디드 장치에 최적화된 Layer들을 제공해준다. 간단하게 quantization에 대해서 얘기하자면, 딥러닝 모델 구현시 출력으로 나오는 것이 각 layer별 weight들이다. 그런데 이런 weight들이 소수점으로 표현되고, 실제 데이터 형식상 소수점을 표현하기 위해서는 32bit 자료형이 필요하다. 그런데 만약 이 weight들을 정수로 표현할 수 있으면 어떨까? 특히 8bit 정수형으로 weight들을 표현할 수 있으면 자료형이 \( \frac{1}{4} \) 으로 줄게 되므로 사이즈를 많이 줄일 수 있다. 상세한 내용은 다음 링크를 참고하면 좋을거 같다.
전체 책들이 어떻게 하면 모델을 잘 설계하고, layer를 tuning할 수 있다를 설명하기 보다는 tensorflow lite를 사용해서 임베디드 기기에 넣는 방법을 설명하고 있다. 보통 임베디드 기기에는 OS가 없는 케이스가 많기 때문에 C/C++로 개발하는 케이스가 많으며, 이 때문에 (모델학습을 제외한) 책내의 코드들이 대부분 C/C++으로 제공되고 있다.
그래서 어떻게보면 여타 인공지능 관련 서적과 다르고, 전혀 새로운 내용을 다룬다. 어떻게 보면 임베디드 장치에 머신러닝 모델을 올리고 싶은 사람한테는 딱 적당한 책이다. 단 유의할 점이라면, 이 책은 단순히 책만 가지고 있으면 무슨 내용인지 모를 부분이 많다. 그렇기 때문에 여기서 예제에 활용하는 데모보드 (Arduino Nano 33 BLE Sense나 Sparkfun Edge)는 하나 구비하고 실습하면서 같이 볼 것을 권한다. 내용이 그렇다보니 도식화를 통한 설명보다는 코드의 구성이나 기능 설명에 많이 치중되어 있다.
책에서 다루는 예제는 다음과 같다. (참고로 해당 예제는 Tensorflow lite 에서도 공식적으로 제공하는 예제이기도 하다.
- Linear Regression 모델 학습 (Hello World)
- 호출어 감지 (Visual Wake Word)
- 인체 감지 (Person Detection)
- 마술 지팡이 (Magic Wand)
개인적으로는 임베디드에 관심이 많은 입장에서 이런 책이 나온 것 같아 매우 흥미가 있었고, 책에 들어있던 내용 역시 그런 기대를 저버리지 않았다. 더구나 TinyML이 개발되는 전체적인 process를 이 책을 통해서 이해할 수 있던 부분이 좋았다. 특히 여타 인공지능 책들이 절대 다루지 않을만한 주제가 잘 담겨있어서, 아마 동일한 시도를 해보려는 사람한테는 최고의 책이 되지 않을까 싶다.
참고로 아직 tinyML 분야가 많이 활성화되지 않아서 일부 공부 자료는 학회 논문이나 MIT Song Han 교수 랩, 혹은 (추후에 열릴) harvard tinyML Lecture를 참조하면 좋을거 같다. 관련링크는 하단부를 참고하면 좋을 듯 싶다.
- 학회: https://www.tinyml.org/summit/
- MIT Prof. Song Han (Han Lab): https://songhan.mit.edu/
- Havard TinyML lecture: https://sites.google.com/g.harvard.edu/tinyml/home
- edX Lecture (2020.10 open): https://www.edx.org/professional-certificate/harvardx-tiny-machine-learning
'Hobby > Book' 카테고리의 다른 글
[Book] 딥러닝을 바라보는 새로운 관점 (0) | 2020.12.15 |
---|---|
[Book] 데이터 전처리를 위한 가이드북, "데이터 전처리 대전" (0) | 2020.11.22 |
[Book] GANs in Action (0) | 2020.10.24 |
[Book] 핸즈온 비지도 학습 (0) | 2020.08.20 |
[Book] 딥러닝과 바둑 (0) | 2020.07.05 |
[Book] Think Julia : 줄리아를 생각하다 (0) | 2020.05.29 |
[Book] Head First Go (2) | 2020.04.30 |
- Total
- Today
- Yesterday
- TensorFlow Lite
- SketchFlow
- Kinect SDK
- Pipeline
- bias
- Kinect
- Variance
- PowerPoint
- Kinect for windows
- 강화학습
- 파이썬
- Distribution
- Gan
- DepthStream
- Off-policy
- Policy Gradient
- reward
- processing
- ai
- RL
- windows 8
- Offline RL
- 한빛미디어
- dynamic programming
- ColorStream
- arduino
- 딥러닝
- Expression Blend 4
- Windows Phone 7
- End-To-End
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |