TensorFlow Lite 소개
Updated:
TensorFlow Lite는 TensorFlow 모델을 휴대폰, embedded 나 IOT 기기에서 구동하기 위해서 ML 툴이다. Mobile과 IOT 기기를 위해서 TensorFlow를 경량화 시킨 버전이라고 생각하면 된다. Mobile과 IOT 기기를 위한 만큰 빠른 응답 속도와 작은 바이너리 사이즈가 특징이다.
1. Edge ML(Machine learning at the edge)
엣지 컴퓨팅(Edge Computing)은 서로 다른 위치에서 가끔씩 클라우드에 연결하거나 클라우드에 전혀 연결하지 않고 컴퓨팅 리소스 및 의사 결정 기능을 활용하는 기술을 말한다. 보통 ML을 상상하면 클라우드에 존재하는 GPU와 TPU가 무수히 연결된 서버를 생각하게 된다. 엣지 ML(Edge ML)은 이런 클라우드가 아닌 각 단말 단에서 활용되는 ML 기술을 표현할 때 사용된다. 특히, Edge ML에서의 단말은 통상 Mobile과 IOT등의 작은 컴퓨팅 파워를 가진 디바이스들을 일컫는다.
이런 Edge 단에서 수행되는 ML은 아래와같은 장점을 갖는다.
- 짧은 응답속도(latency) : ML inference 수행 시, 클라우드 서버에 접근이 없이 단말에서 수행하므로 응답속도가 빠름.
- 개인 정보 보호 : 클라우드 서버에 개인 정보를 전달하지 않아서 privacy 노출 위험이 없음.
- 네트워크 불필요 : 클라우드 서버에 접근이 불필요하기 때문에 네트워크 망에 연결될 필요 없음.
- 낮은 소비 전력 : 네트워크 연결을 위한 전력 소모가 없으며, 작은 사이즈의 모델 구동으로 컴퓨팅 전력 소모 적음.
이러한 특징을 갖는 Edge ML을 위한 툴이 TensorFlow Lite이다.
2. TF Lite 주요 특징
TF Lite는 작은 컴퓨팅 파워를 가진 디바이스에서도 원할히 돌아갈 수 있도록 초점이 맞춰져있다. 주요 특징은 아래와같다.
- on-device ML위한 해석기(Interpreter) 지원. 주요 operator를 지원함으로써, 최적화된 작은 바이너리 사이즈를 구현하였다. 주요 operator를 지원한다는 의미는 TensorFlow의 전체 operator가 지원이 안된다는 의미이다.
- 안드로이드, iOS, 임베디드 리눅스, 마이크로 컨트롤러 등의 다양한 하드웨어 플랫폼을 지원하며, 주요 하드웨어에 대해서 hardware acccelerator를 지원한다.
- Java, Swift, Objective-C, C++, Python과 같이 다양한 언어로 제공되는 API 세트가 있다.
- 모델 사이즈를 줄이기 위한 Quantization 등과 같은 모델 최적화를 위한 툴을 제공한다. 이러한 툴들은 모델 사이즈를 줄이고, 속도를 향상시키면서 정확도의 손실은 최소화한다.
- TF Lite는 FlatBuffer를 사용하여 작고 이식성 좋은 모델 포맷을 구현했다. 반면, TensorFlow는 Protocol Buffers를 사용한다.
3. TF Lite 개발 workflow
TF Lite의 개발 workflow는 TensorFlow와는 약간 차이가 있다. TF Lite에서는 학습을 지원하지 않는다.(TF Lite 로드맵에 의하면 온디바이스 학습을 지원 예정이다.) 그래서 통상 TensorFlow로(혹은 PyTorch등으로) 모델 코드를 작성하고 학습을 진행하여, 모델을 만들고 난 후 tflite 모델로 변환 한 후 Edge 디바이스에서 추론(inferecne)을 수행한다.
다음과 같은 workflow를 가진다.
- 모델 선택
- TF Lite에서 구동할 TensorFlow 모델을 사전 학습한 모델을 선택하거나 직접 코드를 작성하고 학습을 시킨다.
- TensorFlow에서는 통상 pb 파일을 사용하는데, 이 pb 파일 형태의 모델을 만드는 단계이다.
- TFLite 모델로 변환
- TensorFlow용으로 작성한 pb 모델 파일을 TFLite 포맷은 tflite 파일로 변환(convert)한다.
- 몇가지 변환툴이 지원되니 상황에 맞게 선택할 수 있다.
- 배포(deploy)
- tflite 모델 파일을 실제 구동할 디바이스에서 inference 수행을 배포한다.
- Edge 단 배포는 Java, Swift, Objective-C, C++, Python과 같이 다양한 언어로 제공되는 API 세트가 있다.
- 모델 최적화
- tflite 모델 생성 완료 후, 모델 파일 최적화를 수행할 수 있다. 이 과정을 통해서 모델 사이즈를 더 작게 만들어서 inference 시간을 절약할 수 있다.
- 모델 사이즈를 줄이는 과정은 정확도를 희생시키는 이슈가 발생한다. 정확도를 지켜내면서 모델 사이즈를 줄이는 것이 목표가 된다.
4. TF Lite 개발 workflow 연습
TFLite에 대한 개발 workflow를 연습할 수 있는 GitHub repo my-tf-training를 생성하였다. 아주 간단한 model을 생성하여, tflite로 변환 후 Edge device(ex. 안드로이드 어플, c++)에서 추론(inference)를 실행하는 workflow를 모두 담고 있다. 해당 repo를 참고해서 따라해보면 TFLite 개발 workflow를 이해하는데 도움이 될 것이다.
Leave a comment