AI Engineering

반응형

    Mixed Precision Training 이해 및 설명

    1. Mixed Precision Training 이란? 대부분의 deep learning framework(e.g. PyTorch, TensorFlow)들은 모델을 training할 때 float32(FP32) data type을 사용하게 됩니다. 즉, 모델의 weight와 input data가 모두 FP32(32bit)의 data type을 가진다는 뜻입니다. 이와 다르게 Mixed-precision training은 single-precision(FP32)와 half-precision(FP16) format을 결합하여 사용하여 모델을 training하는 방식입니다. (FP16 data type은 FP32와 다르게 16bit만을 사용하게 됩니다.) Mixed-precision training방식을 통..

    OpenVINO 뽀개기 (3) OpenVINO Quantization

    OpenVINO 모델을 optimization하기 위한 방법으로 Quantization에 대해 설명드립니다. 1. Quantization이란? 기존 Torch, ONNX model의 parameters(i.e. weights, bias)들은 각각이 float32로 표현되어 있습니다. Quantization은 float32의 data를 그 보다 낮은 bit(e.g. float16, int8)로 표현시켜 경량화시킵니다. 이렇게 함으로써 (1) inference time, (2) model size를 줄일 수 있다는 장점을 가집니다. 단점으로는 data의 정보손실이 발생하므로 Accuracy, mAP는 떨어지게 됩니다. 그럼, 다음과 같은 2가지 궁금증이 생기실 겁니다. 질문과 함께 답변드려볼게요. 몇 bit..

    OpenVINO 뽀개기 (2) OpenVINO Inference

     저번 글에 이어 이번에는 OpenVINO모델을 Inference하는 방법에 대해 설명드리도록 하겠습니다. 1. OpenVINO Runtime OpenVINO (IR)모델을 inference할 수 있도록 하는 것이 OpenVINO runtime입니다. OpenVINO runtime은 C, python의 binding과 함께 C++ library로 구현되어 있습니다. 그리고 위 그림에서 알 수 있듯이 OpenVINO runtime을 통해 IR모델 뿐만아니라 ONNX, PaddlePaddle(바이두)모델도 Inference가능하도록 API를 제공합니다. 또한 plugin architecture를 사용하기 때문에 해당 plugin들은 각 hardware device에 맞춰진 complete한 구현이 되어있습..

    OpenVINO 뽀개기 (1) OpenVINO 이해 및 변환

    1. OpenVINO란? OpenVINO는 intel에서 주도적으로 진행 중인 프로젝트입니다. OpenVINO는 다양한 Deep Learning(DL) framework(e.g. PyTorch, TF)의 모델들을 OPenVINO 모델로 변환하여 intel device에 최적화된 inference를 할 수 있도록 해줍니다. 그래서 intel cpu나 gpu에서 DL 모델을 inference할 경우가 생기신다면 OpenVINO를 사용하셔야 latency성능이 좋아집니다! 추가적으로 OpenVINO는 다음과 같은 특성은 제공합니다. Pruning, Quantization을 통한 model size 및 inference 최적화 Model의 preprocessing, postprocessing 기능 제공 int..

    TFLite 뽀개기 (4) XNNPACK 이해 및 성능 비교

    1. XNNPACK이란? XNNPACK은 아래와 같은 다양한 device(architecture)를 위해 floating-point neural netowrk의 inference operator를 최적화한 library입니다. (floating-point란 fp32, fp16 모델만 가속화 가능하다는 뜻입니다.) 한마디로 DL 모델의 inference속도를 가속화 해주는 library입니다. Desktop기준으로 XNNPACK을 사용하기 위해서는 bazel build할때 XNNPACK사용에 대한 명시를 해주어야 합니다. 그리고 TFLite모델에만 사용이 가능합니다. 또 다른 특징으로는 XNNPACK은 PAD operator와 CONV_2D operator(with VALID padding)을 감지하여 하..

    [NVIDIA] TensorRT inference 코드 및 예제 (feat. yolov7)

    이전의 TensorRT plugin 사용하는 방법을 설명드렸는데요. TRT모델로 inference하는 코드에 대한 설명이 부족하고 저도 잘 이해하지 못한 부분이 있어 이번 글에서 설명드립니다. 0. Inference용 모델 및 개발 환경 Inference를 위해 사용한 모델은 YOLOv7 모델입니다. 모델은 yolov7.trt 다운가능하며 input의 shape은 (1,3,640,640)로 설정하였으며 output은 총 4개로 나뉘면 각각 num_detections(detection된 object개수), nmsed_boxes(object의 bounding box 좌표), nmsed_scores(object의 confidence score), nmsed_classes(object의 class)입니다. ou..

반응형