Edge Computing시, 즉 딥러닝 모델을 디바이스(IOT, 임베디드 디바이스)에 적용(경량화,최적화)할때의 quantization 라이브러리에는 대표적으로 TensorRT, TFlite가 있다.
TFLite vs TensorRT
| TFLite | TensorRT |
---|
개발 | Google | NVIDIA |
지원 Framework | Tensorflow | 다양 |
구성 클래스 | Converter, Interpreter | Optimizer, Runtime Engine |
지원 추론 Hardware | 다양 | NVIDIA GPU - 종류에 따른 추가 최적화 가능 |
TFLite
- Converter
: 성능은 유지하면서, Interpreter가 사용할 수 있도록 최적화.
Tensorflow나 Keras로 생성한 모델을 TFLite 모델 파일로 변환.
- pb파일은 protocol buffers를 통해 모델이 된다면, TFLite파일은 protocol buffers보다 작고 가벼운 flatbuffer로 모델을 저장한다.
- Interpreter
: 모델을 메모리에 올리고, 모델에 알맞는 Input 데이터 형식을 바꾸고, Inferece하고, Output을 device에 맞게 만드는 역할 수행
- 성능은 최대한 유지하고, 추론 속도 향상(1/6)
- Smaller storage : 모델 사이즈 축소 - device에 적은 storage
- Less memory usage : 적은 RAM memory occupy
- Reducing Latency
TensorRT
- Optimizer
: NVIDIA GPU 연산에 적합한 최적화
- (Keras, Tensorflow) pb파일의 모델을 freeze하거나 uff parser를 통해 TensorRT엔진 생성
- (Pytorch) pytorch모델을 onnx모델로 변환하고 TensorRT로 변환.
- Runtime Engine
- 5-10배의 속도 향상.