반응형

AI Development 76

[NVIDIA TAO Toolkit] TAO Toolkit 개요

NVIDIA TAO Toolkit을 이용하여 사전 훈련된 NVIDIA 모델에 custom dataset을 적용하여 Computer Vision(이하 CV) 모델을 만들거나 Conversational AI(이하 Conv AI) models을 만들 수 있는 툴킷이다. 비전 분야에서는 주로 object detection, image classification, segmentation, keypoint estimation 등의 모델들을 fine-tuning 할 수 있다. 특히 pre-trained 모델에 새로운 클래스를 추가할 수도 있고, 다양한 케이스에 맞게 다시 학습 시킬 수 있으며, TAO Toolkit은 학습과 관련된 hyperparameter들을 수정하여 custom AI model을 생성할 수 있다...

[PyTorch] PyTorch 모델을 저장하는 방법 및 고려해야할 점

PyTorch 모델을 학습 한 뒤, 모델을 저장하고 불러오는 방법은 다음과 같다. 모델 저장하고 불러오기 다음과 같이 PyTorch 모델은 학습한 매개변수를 state_dict 이라고 불리는 internal state dictionary에 저장한다. 이 state 값들은 torch.save 함수를 이용하여 저장 할 수 있다고 한다. 모델의 가중치를 불러와서 저장하려면 저장하려는 모델의 인스턴스를 생성한 다음 load_state_dict() 함수를 사용하여 매개변수를 불러온다. 참고로 state_dict은 dictionary 이며 이 형태에 맞게 데이터를 저장하거나 불러오는 것이 가능하다. 이는 각 계층을 매개변수 Tensor로 매핑하며 학습 가능한 매개변수를 갖는 계층(conv layer, linear ..

[TensorRT] trtexec dumpProfile

공개되어있는 모델을 TensorRT Engine으로 변환하고, trtexec 에 있는 dumpProfile 플래그를 이용하여 Layer 마다 Profile 해본 결과는 아래와 같다. 이를 이용하여 원하는 속도가 나오도록 모델을 적절하게 만들면 될 듯 하다. time 뿐만 아니라 memory 또는 GPU Utilization도 확인하는 방법이 있는지 찾아봐야겠다. 참고로 Profile에 나와있는 PWN은 PointWiseNode이다. ​ ... 참고자료 1 : https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#trtexec Developer Guide :: NVIDIA Deep Learning TensorRT Documenta..

[NVIDIA TAO Toolkit] TAO(Train, Adapt, and Optimize) Toolkit

NVIDIA TAO Toolkit User Guide : https://docs.nvidia.com/tao/tao-toolkit/index.html TAO Toolkit — TAO Toolkit 3.21.11 documentation © Copyright 2021, NVIDIA. Last updated on Nov 29, 2021. docs.nvidia.com NVIDIA TAO Toolkit Release Notes : https://docs.nvidia.com/tao/tao-toolkit/text/release_notes.html Release Notes — TAO Toolkit 3.21.11 documentation Release Contents Components included in this r..

[TensorRT] Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.

ONNX를 TRT로 변환하면 아래와 같은 Warning 메세지가 뜬다. Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32. 성능상의 손실은 없는 것으로 판단되나 정말 성능에 영향이 없는지 실험이 필요하다. 왜 뜨는 것일까? 관련 이슈 : https://github.com/onnx/tensorflow-onnx/issues/883#issuecomment-614561227 Your ONNX model has been generated with INT64 weights, while TensorRT does not nati..

[TensorRT] ONNX 및 TRT에서 Group Normalization 사용하기 (+ Instance Normalization 이슈)

PyTorch 1.6.0 / ONNX opset 10, 11 / TensorRT 7.2.2.3 환경에서 파이토치의 어떤 모델을 ONNX 모델로 변환하고, ONNX 모델을 TensorRT 모델(+ Dynamic Shape)로 변환한 뒤 Python, C++ 각 환경에서 사용하고자 할 때 아래와 같이 Engine Serialization를 못하는 문제가 발생하였었다. 결론부터 말하자면 TensorRT에서는 Group Normalization을 지원하지 않는다. PyTorch에서 Group Normalization을 사용하게 되면 ONNX와 TensorRT에서 Instance Normalization 노드가 생기게 되는데 이는 TensorRT 에서 지원하지 않는다. Custom Plugin 을 생성해줘야한다...

[TensorFlow Lite] MobileNet v1 모델의 tflite 파일 구조

https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet_v1.md GitHub - tensorflow/models: Models and examples built with TensorFlow Models and examples built with TensorFlow. Contribute to tensorflow/models development by creating an account on GitHub. github.com 위 GitHub 에서 다운 받은 mobilenet_v1_1.0_224_quantized_1_metadata_1.tflite 을 netron 에서 확인해보았다. 아래와 같이 구성되어 있으며, type이 ..

[PyTorch] 파이토치에서 TensorBoard 사용하기

텐서보드는 머신러닝 실험에 필요한 시각화 및 도구를 제공한다. 손실 및 정확도와 같은 측정항목 추적 및 시각화 모델 그래프(작업 및 레이어) 시각화 시간의 경과에 따라 달라지는 가중치, 편향, 기타 텐서의 히스토그램 확인 저차원 공간에 임베딩 투영 이미지, 텍스트, 오디오 데이터 표시 TensorFlow 프로그램 프로파일링 그 외 다양한 도구 텐서보드를 파이토치 에서도 사용 할 수 있다. 1. SummaryWriter 인스턴스 생성하기 import torch from torch.utils.tensorboard import SummaryWriter writer = SummaryWriter() Writer 는 기본적으로 ./runs/ 디렉터리에 출력된다고 한다. 원하는 디렉터리에 출력하려면 아래와 같이 수정..

AI Development/PyTorch 2022.02.04 (2)

[GPU] NVIDIA GPU 적정 온도 확인하기

NVIDIA 계열의 GPU의 온도를 확인하는 명령어는 다음과 같다. $ nvidia-smi -q -d temperature 아래는 현재 GPU의 Temperature 상태들을 나타낸다. ==============NVSMI LOG============== Timestamp : Thu Nov 18 15:52:50 2021 Driver Version : 460.73.01 CUDA Version : 11.2 Attached GPUs : 4 GPU 00000000:1A:00.0 Temperature GPU Current Temp : 64 C GPU Shutdown Temp : 90 C GPU Slowdown Temp : 87 C GPU Max Operating Temp : 83 C GPU Target Temper..

[TensorRT] QuickStartGuide

TensorRT 를 처음 접하는 사람들이 보기 딱 좋은 레퍼런스 발견. 계속 업데이트 되고 있는 것 같아서 좋다. 참고자료 1은 ipynb 로 되어있어서 쉽게 따라 해 볼 수 있으며, 참고자료 2는 TensorRT Runtime API 를 사용하는 방법에 대해 나와있다. 둘다 내용은 비슷하다. (profiling 하는 방법도 자세히 알려줬으면 좋겠다...) 참고자료 1. https://github.com/NVIDIA/TensorRT/tree/master/quickstart GitHub - NVIDIA/TensorRT: TensorRT is a C++ library for high performance inference on NVIDIA GPUs and deep learning accelerators Te..

[ONNX] ONNX Simplifier 사용하여 모델 간소화 하기

ONNX Simplifier 는 복잡한 ONNX node 들 즉 ONNX 모델을 단순하게 만들어주는 툴이다. 전체 계산 그래프(the whole computation graph)를 추론한 다음 중복 연산자(the redundant operators)를 상수 출력(their constant outputs)으로 대체한다. 아래 그림의 왼쪽 그림은 어떤 모델의 ONNX 원본 모델이고, 오른쪽 그림은 onnx simplifier를 거친 ONNX 모델이다. (잘 보이진 않지만... 자세히 들여다보면 간소화 된 모습을 볼 수 있었다... 모델 크기도 줄어든다.) 아래 그림을 보면 더 명확히 와닿는다. 이런 느낌이다. 불필요한 Gather 및 Unsqueeze 연산자 등의 조합을 Reshape 으로 대체한다. 원래 ..

AI Development/ONNX 2021.07.26 (6)

[ONNX] Pytorch 모델을 ONNX 모델로 변환 할 때 dynamic_axes 지정하는 방법

LSTM 같은 모델을 ONNX 모델로 변환할 경우, 이 모델은 입력 값을 동적으로 설정할 수 도 있기 때문에 ONNX 모델로 export 시 dynamic_axes 를 설정하여 동적인 입력 값을 갖는 ONNX 모델로 변환할 수 있다. torch 공식 문서에 나와있는 내용은 다음과 같다. dynamic_axes (dict or dict, default empty dict) – a dictionary to specify dynamic axes of input/output, such that: - KEY: input and/or output names - VALUE: index of dynamic axes for given key and potentially the name to be used for expo..

AI Development/ONNX 2021.06.29

[Pytorch] 이미지 데이터세트에 대한 평균(mean)과 표준편차(std) 구하기

이미지 데이터는 촬영된 환경에 따라 명도나 채도 등이 서로 모두 다르기 때문에 영상 기반 딥러닝 모델을 학습시키기 전에 모든 이미지들을 동일한 환경으로 맞춰주는 작업이 필요하다. 즉, 전체 이미지에 대한 화소 값의 평균(mean)과, 표준편차(standard deviation)를 구하여 이 값들을 영상에 일괄적으로 적용하는 과정이 필요하다. 보통 Imagenet 데이터 세트에서 계산된 평균과 표준을 사용하게 된다. 이는 수백만 개의 이미지를 기반으로 계산된다. 자신의 데이터 세트에서 처음부터 학습하려는 경우 평균과 표준을 계산할 수 있지만, 그렇지 않은 경우(대부분) 자체 평균 및 표준이있는 Imagenet 으로 학습된 pre-trained model 을 사용하는 것이 좋다. 파이토치 데이터 세트에서 평..

[TensorRT] trtexec 사용하기

1. TensorRT 를 설치 2020.04.21 - [AI Development/TensorRT] - [TensorRT] NVIDIA TensorRT 개념, 설치방법, 사용하기 2. /usr/src/tensorrt/samples 에서 make 하여 빌드하기 3. /usr/src/tensorrt/bin 에 실행파일 생성됨 4. /usr/src/tensorrt/bin/trtexec 실행 $ /usr/src/tensorrt/bin/trtexec --help 아래와 같이 사용할 수 있는 명령어 확인 $ ./trtexec --help 모델 변환 시 saveEngine 을 지정하여 모델을 저장 가능 모델 실행 시 loadEngine 을 지정하여 모델 테스트 가능 (속도 테스트) INT8 Calibration 캐시..

728x90
반응형