AI Engineering/PyTorch

반응형

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

    이전 글에서 Pytorch framework에서 성능 최적화하는 방법을 소개해드렸습니다. 이번 글에서는 설명드린 각 방법들이 얼마만큼 time cost 성능 최적화가 되는지 실험해보도록 하겠습니다. 실험 코드는 여기서 확인가능합니다. 실험해볼 최적화 방법 목록입니다. Data Loading 최적화 num worker 설정 pinned memory 사용 Data Operation 최적화 tensor.to(non_blocking=True) 사용 Training 최적화 Architecture design과 batch size를 8의 배수로 설정 Mixed Precision Training 사용 Optimizer로 weight를 update하기 전에 gradient을 None으로 설정 Gradient accum..

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

    [Torch2TFLite] Torch 모델 TFLite 변환 (feat. yolov5)

    AI 개발자라면 가장 많이 사용하는 framework는 Torch이나 TensorFlow일것입니다. 저는 Torch을 조금 더 주력으로 사용합니다. (대부분 연구자 분들도 Torch를 사용하시겠죠) 하지만 Torch 모델은 Arm cpu를 사용하는 device에서는 최적화되지않아 inference 속도가 다소 느립니다. 그래서 Torch모델을 Arm cpu 연산에 최적화된 TFLite 모델로 변환시키는 방법에 대해 말씀드리도록 하겠습니다. Torch모델을 TFLite로 변환시키는 과정은 다음과 같습니다. Torch 모델 → ONNX 모델 ONNX 모델 → OpenVINO 모델 OpenVINO모델 → TFLite 모델 Torch모델은 detection 모델 중 하나인 yolov5를 사용하겠습니다. 위의 과..

    PyTorch MultiGPU (2) - Single-GPU vs Multi-GPU (DistributedDataParallel)

    1. Introduction 모든 실험은 python 3.6, Pytorch 1.7.0 에서 진행되었음을 알려드립니다. 해당 글은 Pytorch에서 이전 글에서 말씀드린 Pytorch의 DistributedDataParallel에 대해 설명드립니다. 이전 글과 Experiment setting은 동일하니 궁금하시면 이전 글에서 참고 하십시오! 오늘 설명드릴 목차는 다음과 같습니다. DistributedDataParallel 이란? DistributedDataParallel 사용 방법 DistributedDataParallel 결과 비교 (with Single-GPU and DataParallel) 2. DistributedDataParallel (DDP) 이란? DataParallel(DP)과 비교했을 ..

    PyTorch MultiGPU (1) - Single-GPU vs Multi-GPU (DataParallel)

    1. Introduction 모든 실험은 python 3.6, Pytorch 1.7.0 에서 진행되었음을 알려드립니다. 해당 글은 Pytorch에서 Single-GPU와 Multi-GPU의 차이를 이해하고 직접 실험해 볼 수 있는 환경을 제공하기 위함을 알려드립니다. 오늘 설명드릴 목차는 다음과 같습니다. Experiment setting Single-GPU vs Multi-GPU (DataParallel) 기본 이해 Single-GPU vs Multi-GPU (DataParallel) 결과 비교 Multi-GPU (DataParallel) 의 문제점 2. Experiment Setting Single-GPU와 Multi-GPU의 차이에 대해 글로 설명을 드릴거지만 직접 코드를 돌려보면서 이해하시는 게 ..

반응형