HOME
RECENT CHANGES

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
on-device:ai-model-file-format [2020/02/22 23:19]
gomida
on-device:ai-model-file-format [2020/02/23 01:53] (current)
gomida
Line 12: Line 12:
 </sq> </sq>
  
-<​sqtag>​TVM ​Compiler</​sqtag>​+<​sqtag>​TVM ​COMPILER</​sqtag>​
 <sq> <sq>
 디바이스 상에서 AI 모델 파일(.tflite,​ .onnx)을 해석하여 실행하는 TF-Lite 및 ONNX-runtime (인터프리터 방식)과는 달리, 오프라인에서 모델을 해석하여 각 프로세서에 최적화된 실행 코드를 미리 생성하여 배포하는 방식을 AI 모델 컴파일러라고 한다. [[https://​github.com/​apache/​incubator-tvm|TVM (Tensor Virtual Machine)]]이 선구적이며,​ 연산자 구현(Tensor Program)을 변형하여 타겟 프로세서와 모델에 최적화 하는 [[https://​arxiv.org/​abs/​1805.08166|방법]]을 도입함으로써,​ 추론 속도면에서 인터프리터 방식을 압도하고 있다. 그러나 모델의 배포 측면에서 생각하면 각각의 타겟 디바이스마다 서로 다른 실행 코드를 배포해야하는 단점이 발생하며,​ 앞으로 이를 고민해볼 필요가 있을 것이다. 디바이스 상에서 AI 모델 파일(.tflite,​ .onnx)을 해석하여 실행하는 TF-Lite 및 ONNX-runtime (인터프리터 방식)과는 달리, 오프라인에서 모델을 해석하여 각 프로세서에 최적화된 실행 코드를 미리 생성하여 배포하는 방식을 AI 모델 컴파일러라고 한다. [[https://​github.com/​apache/​incubator-tvm|TVM (Tensor Virtual Machine)]]이 선구적이며,​ 연산자 구현(Tensor Program)을 변형하여 타겟 프로세서와 모델에 최적화 하는 [[https://​arxiv.org/​abs/​1805.08166|방법]]을 도입함으로써,​ 추론 속도면에서 인터프리터 방식을 압도하고 있다. 그러나 모델의 배포 측면에서 생각하면 각각의 타겟 디바이스마다 서로 다른 실행 코드를 배포해야하는 단점이 발생하며,​ 앞으로 이를 고민해볼 필요가 있을 것이다.
 </sq> </sq>
  
-<​sqtag>​NPU ​Compilers</​sqtag>​+<​sqtag>​NPU ​COMPILERS</​sqtag>​
 <sq> <sq>
 한편, 여러 회사에서 On-Device AI를 위한 NPU (Neural Processing Unit or Tensor Processing Unit) 제품이 쏟아지고 있는데, 연산자가 표준화되지 않아 서로 다른 모델 커버리지를 가지는 문제가 발생하고 있다. 특히 TVM 처럼 NPU에 최적화된 실행 코드를 미리 생성하여 배포하는 컴파일 방식을 채택하고 있어 AI 모델 배포를 위한 표준화는 요원하기만 하다. TensorFlow-Lite를 제안한 Google 마저도 Edge TPU 지원을 위해서 미리 [[https://​coral.ai/​docs/​edgetpu/​compiler/​|컴파일]]한 Edge TPU 전용 .tflite 파일을 필요로 하는 실정이다. 그나마 Khronos 그룹에서 OpenVX의 [[https://​www.khronos.org/​registry/​OpenVX/​extensions/​vx_khr_nn/​1.2/​html/​index.html|Neural Network Extension]]을 공개하여 CNN(Convolution Neural Network)에 한정하면 어느정도 표준화 가능성이 보여지고 있지만, 범용 표준으로서 성공적이라고 말하기는 아직 어려울 것 같다. 한편, 여러 회사에서 On-Device AI를 위한 NPU (Neural Processing Unit or Tensor Processing Unit) 제품이 쏟아지고 있는데, 연산자가 표준화되지 않아 서로 다른 모델 커버리지를 가지는 문제가 발생하고 있다. 특히 TVM 처럼 NPU에 최적화된 실행 코드를 미리 생성하여 배포하는 컴파일 방식을 채택하고 있어 AI 모델 배포를 위한 표준화는 요원하기만 하다. TensorFlow-Lite를 제안한 Google 마저도 Edge TPU 지원을 위해서 미리 [[https://​coral.ai/​docs/​edgetpu/​compiler/​|컴파일]]한 Edge TPU 전용 .tflite 파일을 필요로 하는 실정이다. 그나마 Khronos 그룹에서 OpenVX의 [[https://​www.khronos.org/​registry/​OpenVX/​extensions/​vx_khr_nn/​1.2/​html/​index.html|Neural Network Extension]]을 공개하여 CNN(Convolution Neural Network)에 한정하면 어느정도 표준화 가능성이 보여지고 있지만, 범용 표준으로서 성공적이라고 말하기는 아직 어려울 것 같다.
 </sq> </sq>