AI Engineering
[NVIDIA] DALI multi-GPU 사용법 with PyTorch
※ 해당 글은 vision ai, classification task 관련된 내용만 다룹니다. 오늘은 이전 글에 이어서 DALI dataloader를 multi-gpu로 load하는 방법을 설명드리고 single-gpu와 multi-gpu간의 속도 차이를 확인해보겠습니다. 그리고 이전 글에서 추가된 부분만 설명드리도록 하겠습니다. 0. Experiment Setup DALI를 적용해볼 data type은 image와 video 이며 실험환경은 다음과 같습니다. PyPI PyTorch: 1.10.0 DALI: 1.6 decord: 0.6.0 OpenCV: 4.5.3.56 Hardware CPU: Intel(R) Xeon(R) Gold 5120 CPU @ 2.20GHz GPU: Tesla V100-PCIE..
[NVIDIA] DALI 사용법 with PyTorch
※ 해당 글은 vision ai, classification task 관련된 내용만 다룹니다. 오늘은 DALI를 사용하는 방법을 알아보고 DALI를 사용했을 때와 사용하지 않았을 경우의 time cost차이를 직접 측정해보도록 하겠습니다. 1. DALI 란? Data Loading Library (DALI)는 DNN을 training할때 data loading 및 pre-processing을 GPU을 사용할 수 있도록 하는 GPU-accelerated library 그래서 CPU를 사용할 때보다 훨씬 빠르게 training이 가능 DALI는 자체적인 execution engine을 가지며 input pipeline의 throughput을 최대화 시키기위해 설계됨 DALI는 portable하기 때문에 Py..
[BentoML] ML model serving 방법 (feat. YOLOv8)
오늘은 BentoML을 이용한 model serving 방법을 설명드리려고 합니다. 정확히는 BentoML을 사용하여 model serving을 위한 model prediction api를 생성하는 것을 목표로 하겠습니다. 1. BentoML이란? Model serving 방법을 설명드리기 전 BentoML에 대해 간단히 알아보죠. BentoML의 Bento는 일본어이며 한국어로는 도시락을 의미합니다. BentoML: ML-powered prediction service 생성을 쉽게 해주는 framework BentoML의 Bento는 일본어이며 한국어로는 도시락을 의미 도시락이 밥과 반찬이 모두 있는 것처럼 BentoML은 model serving에 필요한 요소들을 모아주기 때문에 이와 같이 nami..
ML/DL Experiments and Analysis
A. Model & Module Pyramid Pooling Module(PPM): 기존의 local feature(b)와 pooling을 통한 global feature(c의 색깔 있는 output들)을 모두 학습하기 위함 서로 다른 kernel size로 여러 차례 avg pooling(논문에서 1x1, 2x2, 3x3, 6x6 kernel size 사용) 1x1 size의 feature map은 가장 global feature이고 feature map size가 커질수록 local feature에 가까워짐 1x1 convolution을 통해 channel 수를 조정 pooling layer의 개수를 N이라고 할 때, 출력 channel 수 = 입력 채널 수 / N input size에 맞춰 feat..
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..