TensorFlow Lite 개발자 프리뷰 공개


2017년 11월 14일 드디어 TensorFlow Lite 개발자 프리뷰가 공개 되었다. Google Developers post를 요약해 본다.

Tensorflow Lite는 low latency inference를 on-device에서 지원 한다.

특성은 아래와 같다.

  • Lightweight: small binary size, fast initialization/startup
  • Cross-platform: Android and iOS
  • Fast: Optimized for mobile devices, including dramatically improved

재미 있는 것은 TF lite는 purpose-built custom hardware를 지원 한다는 것이다. 이를 위해서 Android Neural networks API를 포함한다.
각 하드웨어별 가속기를 사용하는 API 집단이다.

Architecture

위 전체 구조에서 각각의 컴포넌트는 다음과 같다.

  • TensorFlow Model: 디스크에 있는 TF 학습 모델
  • TensorFlow Lite Convert: model을 TF Lite file format으로 변경하는것
  • TensorFlow Lite Model File: FlatBuffers 타입에서의 최적화된 모델

그다음 해당 TensorFlow Lite Model file은 모바일앱에 탑제 된다.

이 때 앱은 다음과 같이 구성된다.

  • Java API: C++을 감싼 wrapper API
  • C++ API: 모델을 읽고 interpreter를 호출하는 기능
  • Interpreter: TF Mobile이 normal set of operators가 1.5Mb인것에 비해서 이것은 operators 포함해서 300KB 수준이다.

그리고 선택된 장치에서 interpreter가 알아서 Android Neural Networks API를 통해서 hardware acceleration을 사용하게 된다. 지원 되는게 없다면 CPU를 사용한다.

추가적으로 개발자가 custom kernel을 개발할 수도 있다. 그리고 이것을 interpreter에서 사용 가능 하다.

Models

이미 많은 최적화된 학습 모델들을 지원한다.

  • MobileNet: 1000개의 object 클래스들은 디텍션하는 모델을 모바일과 임베디드에 맞춰서 다시 진행
  • Inception v3: 약간 큰 사이즈로 더 높은 정확도를 제공한다. 기술은 MobileNet과 유사하다.
  • Smart Reply: one-touch 응답을 위한 on-device 대화 모델이다. Android Wear상에서 앱개발할 때 사용 할 수 있다.

Inception V3나 MobileNet은 ImageNet 데이터셋으로 학습되어 있으므로 본인 목적에 맞게 사용하려면 Transfer learning을 해서 모델을 재학습 하면된다.

TensorFlow Mobile과 TensorFlow Lite와의 차이점

이미 TF Mobile이 있었다. 그것과의 차이점은 무엇인가

  • Lite 버전은 Mobile 버전은 혁신판이다. 좀 더 작은 binary 사이즈와 의존성으로도 더 좋은 성능을 보장 한다.
  • TF Lite가 모든걸 커버하진 않는다. 따라서 어떠한 production case에서는 TF Mobile을 사용해서 직접 코딩 해야할 수도 있다.
  • TF Lite는 제한적인 operator들을 지원 한다. 따라서 모든 알려진 model들이 동작하긴 어렵다. TF Mobile은 모든 operator들을 지원 하므로 다 구현 할 수 있다.

앞으로 계속 향상될 것이지만, TF Lite는 잘 알려진 모델을 하드웨어 가속해서 동작하는데 초점을 맞춘다. 개발 복잡도를 낮추기 위해서이다.
더 자세한 내용은 TF Lite documentation pages를 참고한다.

출처

[원글]


'Data Science > Embedded Deep learning' 카테고리의 다른 글

TensorFlow Lite 예제 실행  (0) 2017.12.05
TensorFlow Lite 개발자 프리뷰 공개  (0) 2017.12.01

+ Recent posts