한빛미디어에서 출간된 초소형 머신러닝 TinyML 에 대한 리뷰를 적어보고자 한다.
이 책은 8월달에 페이스북 이벤트로부터 맹윤호 저자님께 무상으로 제공 받은 책이다 :)
바쁜 일정으로 인하여 이제야 리뷰를 쓰는 것에 대해 죄송함과 감사함을 담아 리뷰를 쓴다.
딥러닝 및 머신러닝 분야에서는 딥러닝 모델 자체를 경량화 하는 것도 중요하지만 모델 성능을 향상시키기 위해서는 모델을 최적화 하여 엣지 디바이스에서 동작하도록 하는 것도 매우 중요하다. 또한 이는 실제 현업에서도 중요하게 다루고 있는 부분이며, 여태 까지 이러한 최적화와 관련된 책을 본적이 없었는데, 이런 책이 출간되어 굉장히 감사하게 생각하고 있다.
TinyML 이라 함은 에너지 비용이 1mW 미만인 하드웨어 플랫폼으로 정의 할 수 있는데, 이를 이해하기 위해서는 임베디드를 이해하는 것이 필수이다. 이러한 TinyML 에서 머신러닝 어플리케이션을 구축하고 수정하기 위한 모든 사항들을 이 책에서 다루고 있으며, 이 책의 대상 독자는 임베디드와 머신러닝에 대한 지식을 모두 알고 있으면 가장 좋지만, 그런 사람은 별로 없으므로 임베디드에 대한 지식이 없다는 가정하에 쓰여졌다고 한다. 즉 임베디드 환경에서 머신러닝을 적용하고 배포하는 사람들을 위해 쓰여진 책이다. 또한 당연한 얘기지만 임베디드 개발 보드가 필요하다. 이 책의 프로젝트 소스코드는 깃허브에 포스팅되며 여러 장치를 지원하도록 지속적으로 업데이트할 예정이라고 한다.
이 책에서 머신러닝에 대한 개념과 모델을 학습하는 방법에 대해 간략히 소개해 놓았다. 이 부분은 간략히 다루고 있으므로, 다른 책으로 보완을 하면 더 좋을 것 같다.
여기서 중요한 내용은 학습된 모델을 어떻게 활용하느냐에 달려있으며, 특히 내가 관심있게 보고 있는 부분인 텐서플로 라이트용 모델 변환 부분에 대해서 자세히 살펴 보았다.
텐서플로 라이트는 모바일 환경에서부터 마이크로컨트롤러 보드에 이르기까지 모든 것을 의미하는 에지 디바이스에서 텐서플로 모델을 실행하는 도구 모음을 의미한다. 텐서플로 라이트 변환기는 텐서플로 모델을 메모리가 제한된 장치에서 사용하기 위해 공간 활용에 효율적인 특수한 포맷으로 변환한다. 또한 텐서플로 라이트 인터프리터는 주어진 장치에 가장 효율적인 연산을 사용하여 적절히 변환된 텐서플로 라이트 모델을 실행한다. 모델을 텐서플로라이트와 함께 사용하기 전에 변환을 해야한다.
또한 텐서플로 라이트 변환기는 모델 최적화가 가능하다. 모델 최적화는 일반적으로 모델 크기나 실행 시간 또는 둘 모두를 줄일 수 있다. 이 과정에서 정확도가 떨어지는 비용이 발생할 수 있지만 최적화를 통해 얻을 수 있는 이점이 훨씬 크다. 유용한 최적화 중 하나는 양자화이다. 기본적으로 모델 가중치와 편향은 32비트 부동소수점 숫자로 저장되기 때문에 훈련 중에 고정밀 계산이 일어나게 된다. 양자화를 사용하면 이 숫자의 정밀도를 16비트 또는 8비트 정수에 맞출 수 있으며 크기를 2배 또는 4배 까지 줄일 수 있다는 장점이 있다. 또한 CPU 는 부동소수점 보다 정수로 계산하는 것이 더 쉽기 때문에 양자화된 모델이 더 빨리 실행될 수 있어서 보통 모바일이나 CPU 에서 머신러닝 모델을 탑재할 때 이러한 최적화를 이용하게 된다.
이러한 마이크로컨트롤러용 텐서플로 라이트에 대한 내용은 13장에서 굉장히 자세하게 다루고 있었다. 현존하는 딥러닝 모델 최적화에 대해 가장 잘 다루고 있는 책이라고 할 수 있을 만큼 자세히 담겨져 있었으며, 이러한 지식을 모른다고 가정하고 책을 읽었을 때도 쉽게 이해할 수 있게끔 중요한 지식들을 잘 설명하고 있었다.
텐서플로 라이트를 활용하여 마이크로컨트롤러 머신러닝을 다루고 싶은 분들에게 꼭 추천하고 싶은 책이다. 딥러닝 신경망 구조가 날로 발전하고 있으며, 이를 어떻게 활용하느냐가 중요한 시점이 왔기 때문에 초소형 머신러닝 TinyML 책은 딥러닝과 임베디드 시스템을 결합하기 위하여 반드시 필요한 가이드가 되어줄 수 있다.
'Book Review' 카테고리의 다른 글
[Book Review] 진지한 파이썬 (6) | 2021.02.21 |
---|---|
[Book Review] 혼자 공부하는 머신러닝 + 딥러닝 (0) | 2020.12.19 |
[Book Review] 개발 7년차 매니저 1일차 (4) | 2020.11.22 |
[Book Review] 나의 첫 파이썬 (0) | 2020.10.25 |
[Book Review] 처음 시작하는 딥러닝 (0) | 2020.09.27 |