AI/Deep Learning

[DL] TFLite 와 TensorRT 간단 비교

운호(Noah) 2022. 1. 12. 14:25

TensorFlow Lite(TFLite) 란?

  • TensorFlow Lite(TFLite)는 구글에서 개발한, TensorFlow(keras) 모델 최적화 라이브러리입니다.

    • TensorFlow(keras) 모델만 최적화할 수 있습니다.
  • TFLite 는 TFLite Converter 와 TFLite Interpreter 로 구성되어있습니다.

    • TFLite Converter
      • TensorFlow 모델을, Interpreter가 사용할 수 있도록 최적화하는 역할입니다.
        • 효율적이고, 용량이 적으며, 성능은 유지하도록
    • TFLite Interpreter
      • 최적화된 모델을 다양한 하드웨어에서 돌아갈 수 있도록 도와주는 역할입니다.
        • 모바일 폰, 임베디드 리눅스 디바이스, 마이크로 컨트롤러 등...
  • 따라서, TFLite 는 아래 순서와 같이 동작하게 됩니다.

    1. TensorFlow 모델을 훈련시킵니다.
    2. TFLite Converter 를 사용해, 훈련된 모델을 최적화한 뒤, TFLite format(.tflite) 으로 변환합니다.
    3. TFLite Interpreter 를 통해, 다른 기기에서 TFLite 모델을 사용할 수 있게 됩니다.

TensorRT 란?

  • TensorRT 는 NVIDIA 에서 개발한, 딥러닝 인퍼런싱 최적화 라이브러리입니다.

    • 즉, 다양한 프레임워크에서 학습된 딥러닝 모델을, 구조적으로 최적화하여,
    • NVIDIA GPU 상에서 추론하는 속도를 향상시켜주는 역할을 합니다.
  • TensorRT 는 Optimizer 와 Runtime 으로 구성되어있습니다.

    • Optimizer
      • NVIDIA GPU 연산에 적합한 최적화 기법들을 사용해, 훈련된 딥러닝 모델을 최적화하는 역할입니다.
        • 다양한 프레임워크를 지원합니다.
    • Runtime
      • 배포할 NVIDIA GPU 에 따라, 최적의 연산을 수행할 수 있도록 도와주는 역할입니다.
  • 따라서, TensorRT 는 아래 순서와 같이 동작하게 됩니다.

    1. 딥러닝 모델을 훈련시킵니다.
    2. TensorRT Optimizer 를 사용해, 훈련된 모델을 최적화합니다.
    3. TensorRT Runtime Engine 을 통해, 배포할 NVIDIA GPU 에 따른 최적의 연산으로 구동시킵니다.

TFLite 와 TensorRT 의 차이?

  • TFLite
    • TensorFlow(Keras)의 모델만 최적화가 가능합니다.
    • 여러 하드웨어에서 추론이 가능합니다.
    • 타겟 하드웨어에 따른 추가적인 최적화는 없습니다.
  • TensorRT
    • 다양한 프레임워크의 모델 최적화가 가능합니다.
      • Pytorch, TensorFlow, etc..
    • NVIDIA GPU 만 추론 하드웨어로 사용 가능합니다.
      • 예를 들어, RPI 에서는 GPU 가 없으므로 사용할 수 없습니다.
    • 추론에 사용하려는 NVIDIA GPU 종류에 따라 추가적으로 최적화할 수 있습니다.

참고