전체 글

전체 글

반응형

    PyTorch training/inference 성능 최적화 (1/2)

    오늘은 해당 블로그의 내용을 베이스로 하여 PyTorch framework에서 training/inference 성능 최적화를 하는 것을 목적으로 설명드릴 것입니다. 성능이라 함은 1. speed, 2. memory에 대한 성능을 뜻합니다. speed에 대한 성능이 좋다함은 training 및 inference time cost가 적다는 것이고 memory에 대한 성능이 좋다는 것은 training 및 inference에 사용되는 memory가 적다는 것입니다. 오늘 소개할 최적화 방법에 대한 목록은 다음과 같다. Data Loading 최적화 num worker 설정 pinned memory 사용 Data Operation 최적화 torch.Tensor 사용과 device 할당 CPU와 GPU간의 da..

    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방식을 통..

    전문연구요원 훈련소 준비물 및 후기

    저는 2022년 10월 7일자로 논산 훈련소를 들어가 10월 27일에 훈련소 수료를 마친 전문연구요원입니다. 오늘은 훈련소에서 겪은 일들과 그에 대한 꿀팁을 알려드릴려고 합니다! ※ 내용은 26연대를 기준으로 말씀드립니다. 준비물 훈련소의 생활관안에서 사회에서 사용하는 물품들을 사용할 수 있으므로 다음과 같은 준비물을 챙기시면 좋습니다. 참고로 챙겨간 물품을 입소시에 검사를 제대로 하지 않기때문에 물품은 너무 크지 않는 선에서 다 가져갈 수 있는것 같습니다. (제 생활관 동기중에는 담배를 가져왔는데 검사 시에 걸리지 않았습니다.) 세면 도구: 샴푸, 바디워시 또는 올인원 칫솔, 치약은 줍니다. 스킨, 로션 책, 논문 불침번동안이나 주말에 읽기 좋습니다. 물티슈 필기도구 이어플러그 텀블러 선크림 신분증 커..

    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)을 감지하여 하..

반응형