이번에 본 '초소형 머신러닝 TinyML'은 스릴러 소설도 아닌데, 보는 내내, 흥분된 마음을 감출 수 없었다. 예전에 안드로이드 앱을 배울 때, 아두이노를 처음 접했을 때와 비슷한 흥분이었다. 이는 내가 새로운 영역에 발 디뎠다는 소리이기도 하다.
물론 아두이노나 인공지능을 처음 접하는 것은 아니다. 아두이노를 통해 얻은 지식으로 회로 개발, 장비 개발도 했으며, 인공지능은 현재 IT 업계의 대세인 만큼 틈틈이 공부하고 있는 상황이다. 그러나 이 두 영역의 콜라보는 처음이다.
인공지능과 아두이노의 콜라보가 뭔 대수냐 하겠지만, 이는 개발자 입장에서 또 다른 차원의 세계를 열어주는 열쇠가 될 수 있다 생각한다. 나의 가치도 높임과 동시에 새로운 시장을 개척할 수 있다는 소리이다. 단순 동작만 하는 회로에서 이젠 생각하고 판단하는 지능을 가진 전자기기 또는 전자 시스템을 개발할 수 있게 된다는 말이다. 아이디어에 따라 부가가치가 엄청난 장비도 개발할 수 있을 것이고, 대중에게 인기 있는 편리한 전자기기도 가능할 것이다.
내 경우, 가끔 공장에서 자동화 설비 관련 프로그래밍 일도 하고 그러는데, 그때마다 인공지능, 머신러닝을 도입하면, 제품 불량률이나, 산재 위험도 줄일 수 있겠다는 생각을 많이 하고 했다. 우리나라가 공장 자동화에 있어 세계 1위라는 소리를 많이 하는데, 머신러닝을 활용한 곳은 그리 많지 않다. 그만큼 이 분야에서도 활용은 무궁무진하다고 생각한다. 이런 여러 가지 이유로 '초소형 머신러닝 TinyML'를 보며, 내 손에 새로운 열쇠가 생긴다는 생각에 두근거리지 않을 수 없었다.
'초소형 머신러닝 TinyML'에서는 다양한 마이크로컨트롤러 보드 중에 실습하기 편리하고, 구하기도 좋은 아두이노 나노 33 BLE 센스, 스파크펀 에지, STM32F746G 디스커버리 키트를 사용하고 있다. 세 가지 보드가 각기 다른 특징과 구성을 가지고 있다 보니, 책에서도 보드별로 차이점이 발생하는 부분에 맞춰 각각 나눠 설명하고 있다. 책 하나로 3가지 보드를 활용할 수 있어, 1거3득이기도 하다.
우리가 보통 인공지능이니 머신러닝이니 하면, 대용량에 빠른 속도의 컴퓨터 시스템을 떠올리기 쉽다. 그래도 요즘엔 다양한 인공지능 툴이 등장하면서, 가정용 PC에서도 가능 해졌다. 그렇다고 금방금방 결과가 나오지는 않는다. 데이터에 따라선 GPU를 활용해도 시간이 많이 걸리곤 한다. 그런데 그런 인공지능을 PC의 CPU보다 성능이 많이 떨어지는 마이크로 컨트롤러에 사용하려면, 한계가 있다. 그래서 저사양 모바일 환경을 위해 2017년 텐서플로 라이트가 등장한 것이다. 과도한 기능, 복잡한 것들을 열심히 다이어트해서 수백 킬로 바이트 안에 들어갈 수 있게 만들었다. 이렇게 만들어진 텐서플로 라이트 인터프리터로 모델을 실행하여 최종적으로 1mW의 초전력에서도 사용할 수 있는 TinyML 애플리케이션을 만드는 것이다.
'초소형 머신러닝 TinyML'에서는 머신러닝 모델 구축과 훈련부터 해서, 호출어 감지 파트에서는 음성인식, 인체 감지 파트에서는 영상인식, 마술 지팡이 파트에선 동작인식을 다룬다. 가장 기초적이면서 활용도 높은 중요한 머신러닝 파트를 다 다루고 있는 것이다. 다만 책 한 권에 이런 내용을 다 담고 있다 보니, 아두이노 초보나 인공지능 초보에게는 어려울 수 있다. 완전 생초보에는 맞지 않으므로, 먼저 관련 지식을 쌓고 보는 것을 권장한다.
그리고 책 초반에는 텐서플로에 많이 이용되는 파이썬을 통해 설명을 하고 있으나, 이후에 나오는 실제 TinyML 애플리케이션 관련 코드들은 C++ 또는 C 언어를 사용하고 있다. 아두이노를 사용해 본 경험이 있다면, C++ 코드에 익숙하겠지만, 그렇지 않다면, 역시 C++ 문법서를 참고하며 보는 것이 좋을 것이다. 책에 코드에 대한 설명은 잘 되어 있지만, 주로 문법적인 거보다는, 텐서플로 모델 관련한 것이나, 머신러닝 학습에 대한 설명이 대부분이기 때문이다.
'초소형 머신러닝 TinyML'은 다소 어렵게 느껴질 수 있지만, 상당히 자세히 다양한 내용을 담고 있다. 보통 PC에서 만들어지는 일반 프로그래밍의 경우, 최종적으로 처리 속도 보완이나 반복되는 요구 사항 반영 정도가 어려움인데, 임베디드 프로그래밍은 생각지도 못한 다양한 문제를 만나게 된다. 일단 임베디드 기기는 loop 상태에서 작동되는 것은 항상 염두에 둬야 하고, 동시 처리를 인터럽트나 타이머 등을 이용해야 한다. 센서나 모터 등 각종 하드웨어 장비에 대한 이해도 가지고 있어야 한다. 전자 쪽 경험이 있는 사람이라면, 이미 다 아는 내용일 수 있으나, 마이크로컨트롤러 개발에 익숙하지 않은 사람, 일반 프로그램만 개발해 온 사람들에겐 생소하고 어려울 수 있는 부분이다. 그래서 PC 프로그램과의 차이, 어떤 것들을 미리 염두에 둬야 하는지 잘 설명되어 있다.
예를 들면, 프로그램 크기 같은 것이 있다. 마이크로컨트롤러가 과거에 비해 속도나 메모리 용량이 커지긴 했어도, 지금의 PC와는 전혀 다르다. 얼마 전 보드 수정 개발에서는 초과되는 몇 kByte 줄이려 프로그램 전체를 일일이 수정했던 기억이 떠오른다. 그만큼 전자 보드에 들어가는 프로그램은 최적화되고 작은 코드로 만들어야 한다. 그리고 소비전력도 중요한 부분이다. 배터리를 쓴다면, 메인보드와 센서 소비 전력을 염두에 두고 개발해야 한다. 이런 것들은 문제를 겪어봐야 그 중요성을 깨닫게 되는 부분인데, '초소형 머신러닝 TinyML'에서는 이러한 부분에 대해 자세히 언급하고 있으며, 저자의 경험과 도움이 되는 다양한 노하우를 적절히 담고 있다. 활용 파트에서는 본문 곳곳에 적어 놨고, 머신러닝과 함께 고민해서 설계해야 할 사항을 14장 이후에 설계하기, 지연 최적화, 에너지 사용 최적화, 바이너리 크기 최적화, 디버깅과 같은 파트로 다시 정리해서 집중적으로 다루고 있다. 초보 개발자에겐 시행착오를 줄여주고, 개발 시간을 절약하는데 유용한 정보가 될 것이다.
아울러 텐서플로 사용에 관한 다양한 경험도 그대로 담고 있다. 모델을 만들 때, 검증 손실, 훈련 손실에 대한 설명을 자세히 하고 있고, 어떻게 개선해 나가는지도 하나씩 과정으로 설명하고 있다. 프로그램에 사용하는 함수에 어떤 변숫값이 유용한지, 어떻게 값을 넣어 보면 좋은 지도 잘 알려주고 있어, 텐서플로 사용이 익숙하지 않은 사람에게 다양한 경험치를 쌓을 수 있게 돕고 있다.
'초소형 머신러닝 TinyML'을 먼저 읽어 본 입장에서, 보는 방법을 두 가지로 제시하고 싶다. 머신러닝 활용 측면이 가장 궁금하고 바로 해보고 싶다면, 그냥 책 순서대로 보면 되고, 텐서플로 라이트와 TinyML 애플리케이션 개발 전반을 살펴보고 활용을 보고 싶다면, 1, 2, 3장 보고, 13 ~ 21장 본 뒤 나머지를 4장부터 12장을 보는 것이 좋을 거 같다.
그리고 이 책이 어렵다고 느껴진다면, 책에서 사용하는 보드를 사서 하나하나 실습해보면, 쉽게 느껴질 수 있을 것이다. 나 역시도 아직 아두이노 나노 33 BLE 센스가 없어서 실습까지는 못했지만, 여러 경험 상, 컴퓨터나 전자 관련해서는 여러 번 책을 보는 것보다 한 번의 실습이 머리에 오래 남고, 이해도 빨랐기에 어느 정도 자신 있게 말할 수 있다. 책에 과정 하나하나 잘 담아 있으므로, 따라하기 어렵지 않을 것이다. 그리고 3가지 보드 중에 아두이노 보드를 추천하고 싶다. 나중에 활용하기도 좋고, 아두이노 관련 커뮤니티도 크게 형성되어 있어서, 자료나 도움 얻기도 쉽기 때문이다.
실내 온도를 자동으로 조절하는데, 항상 인터넷으로 서비스 회사 프로그램 거치고, 저장하고, 다시 명령을 받고 그런다면, 참 번잡하다 생각될 것이다. 게다가 인터넷망이 끊기는 사고가 발생했을 때, 먹통이 된다면, 아주 난감할 것이다. 결국 소형기기도 자체 작동할 수 있는 기본적인 인공지능 기능을 가지고 있어야 하는 것이다.
공장의 각종 기계를 보면, 다치지 않게 각종 센서로 처리되어 있지만, 실제 사고 예방에는 많이 미흡하고, 적용되는 동작도 제한적이다. 더욱 안전하게 하는 만들 수 있지만, 결국 비용 문제 앞에서 다 빠지곤 한다. TinyML로 개발한 저렴한 영상인식 기기가 있다면, 앞으로 얘기가 달라질 것이다.
이런 것들이 초소형 기기에 인공지능 적용이 절대적으로 필요한 이유라 생각하며, 동시에 새로운 상품을 탄생시킬 좋은 기회라고도 생각한다. 아직은 TinyML 관련 기술이 많은 부분 미흡할지 모르나, 전에 사람이나 동물의 눈을 추적하는 카메라가 나왔을 때 참 신기했는데, 이제 그런 것도 누구나 얼마든지 개발할 수 있는 좀 더 편한 길이 열리고 있다고 생각한다. '초소형 머신러닝 TinyML'은 그 길을 가는 훌륭한 가이드가 되어 줄 것이다.