# TensorRT

24개의 포스트
post-thumbnail

[2023 DEVIEW 리뷰] 값비싼 Diffusion model을 받드는 저비용 MLOps

아래에 글은 NAVER의 2023 DEVIEW에서 SYMBIOTE AI의 김태훈님께서 발표해주신 '값비싼 Diffusion model 저비용 MLOps'에 대해 개인적으로 공부하고 리뷰, 정리하여 공유한 글 입니다. 참고 [NAVER TV] 값비싼 Diffusion model을 받드는 저비용 MLOps 발표 자료값비싼%20Diffusion%20model를%20받드는%20저비용%20MLOps.pdf) 요약 diffusion model 이란 multimodal image generation model with diffusion process. diffusion model의 단점은 학습, 추론 속도가 느리다는 것. 즉, latency와 scalability가 중요함. 레이턴시 개선을 위

2023년 4월 10일
·
0개의 댓글
·

TensorRT Docker 이미지 버전

이 글은 nvidia-docker를 알고, 컨테이너에서 GPU자원을 사용할 수 있다는 가정하에 설명하고 있습니다. 도커 이미지 TensorRT가 설치된 도커 이미지에 대한 설명은 아래의 사이트에서 얻을 수 있다. https://docs.nvidia.com/deeplearning/tensorrt/container-release-notes/running.html#running TensorRT 도커 이미지에는 정말 많은 버전이 있는데 다음의 기준으로 필자는 버전을 선택하고 있다. Ubuntu 버전 Python 버전 CUDA 버전 nvidia-driver 버전 위 항목외에도 cuDNN버전과 같이 다른 항목들도 존재하지만, 어떤 우분투 버전, 파이썬 버전, 쿠다 버전을 사용할 것인고 현재 내가 사용하는 nvidia-driver 버전만 알면 이미지 버전을 선택하는데에는 크게 지장이 없다.

2023년 3월 28일
·
0개의 댓글
·
post-thumbnail

Stable Diffusion Inference 최적화 및 서버 구성

개요 > * Stable Diffusion 모델은 Large-Scale Model이므로, 서비스를 위해선 고성능 GPU와 높은 Latency가 발생함 > * 효율적인 Stable Diffusion 서비스를 위해, 모델의 Latency를 줄이고 안정적인 Server 구성이 필요함 이전 상황 > #### 모델 Inference 속도 이슈 Diffusers를 활용하는 경우, A100 GPU에서 1개의 요청에 대해 5초 이상의 처리 시간이 소요하게 됨 > #### GPU 메모리 이슈 Diffusers를 활용하여 그대로 서빙하는 경우, GPU 메모리 점유율이 높아 1개의 서버에서 여러 모델을 동시에 서비스하는데 어려움이 발생 목표 > * Stable Diffusion 모델구조(pipeline)에서 BottleNeck이 되는 부분을 파악하고, 이를 최적화 해보자 모델 구조 > 1. Stable Diffusion은 단일 모델이 아닌, Text Encode

2023년 3월 23일
·
0개의 댓글
·

[MLOps] Triton Inference Server 구축기 2 - model repository 만들기

이전 글에서 triton inference server를 docker로 띄우는데 성공하였다면, 이제 serving 하고자 하는 모델을 triton에 올릴 차례이다. triton은 모델 저장소(model-repository)에서 각각의 모델과 메타 데이터(버전 등)을 읽어와 서버로 띄운다. model-repository는 로컬 혹은 remote cloud인 AWS S3, Azure Blob Storage, Google Cloud Storage가 될 수도 있다. 여기서는 로컬 환경에서의 repository 구성을 하려 한다. Model Repository의 구조 우선 serving 할 모델들이 위치할 폴더를 하나 생성한다. 그 다음 생성한 폴더 아래에 아래와 같은 layout으로 model, config 파일 등을 넣어둔다. [Model-repository 구성 예시] Model-repository는 총 세가지 구성 요소로 되어 있는데, 1.

2023년 3월 1일
·
0개의 댓글
·

[MLOps] Triton Inference Server 구축기 1 - 설치

공식 문서에서 추천하는 triton build 및 deployment 방법은 docker 이미지를 통한 빌드이기 때문에 추천하는 방식으로 블로그를 쓰려고 한다. 1. Docker, NVIDIA Container Toolkit 설치하기 Triton inference server 설치 전 아직 docker와 NVIDIA Contianer Toolkit이 설치되어 있지 않다면 설치해주자. Docker 다운로드 : https://github.com/NVIDIA/nvidia-docker NVIDIA Contianer Toolkit 다운로드 : https://github.com/NVIDIA/nvidia-docker 만약, DGX 유저라면 아래 링크를 따라 셋팅하면 된다. https://docs.nvidia.com/deeplearning/frameworks/preparing-containers/index.html 2. NVIDIA driver 버전 확인하기 NVIDIA

2023년 2월 24일
·
0개의 댓글
·

[MLOps] Triton Inference Server 구축기 0 - 공식 문서 모음

[Update] 28 Feb - 7번 Tutorial repo 추가 Triton으로 inference server를 구축하는 과정에서 정보가 많이 없어 고생을 많이 하고 있다. 예시도 많이 없을 뿐더러, Nvidia에서 나온 공식 문서도 이곳 저곳 흩어져 있어서 이곳에 정리해보려 한다. 삽질하는 시간을 줄이는 방법은, 공식 문서를 보는 것이기 때문에..! Triton Inference Server Offical Docs 1. Triton Inference Server Release Notes -> Link Triton의 이전 버전부터 최신 버전까지의 release note를 확인할 수 있다. 또한, 가장 중요한 driver requirements(CUDA, CuDNN, NVIDIA

2023년 2월 24일
·
0개의 댓글
·
post-thumbnail

AI 모델 경량화 툴 적용 기법 조사 및 On-device Object Detector SOTA Model 비교

** TensorRT 적용 경량화 기법 Pytorch 모델 경량화 툴 Knowledge Distillation 추가 조사 Edge 컴퓨팅 환경을 위한 AI 모델 최적화 및 경량화 기술개발최종보고서 1. TensorRT 적용 경량화 기법 1.1 TensorRT에서 수행하는 최적화 6가지 1) Reduced Precision 딥러닝 네트워크의 정확도를 유지하면서 FP32 연산을 FP16 (AMP) 혹은 INT8 (Quantization) 연산으로 바꿔 성능 향상을 달성함. 낮은 정확도를 가지는 데이터 타입 연산은 더 적은 메모리 사용량, 더 빠른 메모리 접근, 더 빠

2023년 2월 21일
·
1개의 댓글
·
post-thumbnail

[MLOps] Inference Model Format

딥러닝 모델을 학습하고 나면.. PyTorch와 같은 딥러닝 프레임워크를 통해 학습한 모델을 실제 product에서 활용하려면 아래와 같이 모델의 변환이 필요하다. Eager Mode prototyping, training, experimenting에 적합함 Script Mode production deployment가 가능하도록 최적화 된 모델 모델 서빙 형식 Production 용(?) 모델 포멧은 아래와 같이 여러가지가 있는데, 파일의 확장자라고 생각하면 쉽다. 1. TensorRT (model.plan) NVIDIA에서 만듦. 학습된 Deep Learning 모델을 최적화하여 NVIDIA GPU 상에서의 Inference 속도를 수배~수십배 까지 향상 가능 다만,

2023년 2월 16일
·
0개의 댓글
·

[MLOps] PyTorch 모델을 TensorRT로 변환하기

PyTorch Official Docs Torch-TensorRT는 PyTorch 모델을 TensorRT 모델로 바꾸어 주는 역할 TensorRT는 NVIDIA에서 만든 inference engine으로 kernel fusion, graph optimization, low precision 등의 optimization을 도와 준다. In this tutorial, converting a model from PyTorch to TensorRT™ involves the following general steps: Build a PyTorch model by doing any of the two options: Train a model in PyTorch Get a pre-trained model from the PyTorch Mo

2023년 2월 15일
·
0개의 댓글
·

TensorRT runtime install

TensorRT runtime install 1. TensorRT runtime installation TensorRT Download 2. TensorRT library path 2. Checked TensorRT > Not installed > Installed

2023년 1월 11일
·
0개의 댓글
·

TensorRT Version별 프레임워크 Operation 지원 여부

TensorRT의 경우, 아직까지 계속해서 엔비디아에서 업데이트를 해주고 있기 때문에 새로운 버전에 맞춰 따라가야한다. 이전 버전에서 지원되지 않는 Operation이 새로운 버전에서 지원이 되기도 한다. 물론 추가된 Operation(layer)에 대한 소스코드는 공개하지 않는다. 하드웨어 종속적인 코드를 짜는 것이 쉽지는 않기 때문에, 쉽게 공개하지도 않는 것 같다. 아무튼, 버전이 나올때마다, AI 모델에서 필요한 Operation이 정상적으로 작동되는지 여부를 판단할 수 있는 툴을 간단하게 구성해보았다. 이런 식으로 구성을 하였고, TensorRT Version이 업데이트 될 때마다 내용을 추가하여 비교해볼 예정이다...

2022년 12월 1일
·
0개의 댓글
·

텐서플로우 TensorRT 변환 후 추론하기

Tensorflow Inference Testing 결과 (114개 PyTorch Operation 중 114개 Onnx 변환) “tf2onnx의 경우 변환은 다 됨. 하지만 node및 내용이 비어있는 모델도 있음.” TensorRT 지원되지 않은 Operations 리스트(15개 ops 유의) TensorRT Engine으로 생성 X BitRightShiftLayer DetLayer HardMaxLayer IsInfLayer MultinomialLayer OneHotLayer ReduceLogSumExpLayer TileLaye

2022년 11월 25일
·
0개의 댓글
·

파이토치 TensorRT 변환 후 추론하기

PyTorch Inference Testing 결과 (110개 PyTorch Operation 중 102개 Onnx 변환) “Onnx 변환 지원 안되는 레이어(opset 17기준)” AsinhLayer AtanhLayer BitWiseRightLayer CoshLayer GatherElementsLayer GatherLayer SinhLayer TileLayer TensorRT 지원되지 않은 Operations 리스트(10개 ops 유의) TensorRT Engine으로 생성 X DetLayer IsInfLayer LocalResponseNormLayer UniqueLay

2022년 11월 25일
·
0개의 댓글
·

TensorRT 8.5version Testing

TensorRT의 경우 꾸준히 version 업데이트가 진행되고 있습니다. 아래의 깃허브를 참고해보면, 버전이 계속해서 업데이트 되고 있습니다. 아직 다른 프레임워크에서 지원되는 layer 및 operation이 지원되지 않는 경우가 있습니다. 매 버전마다 지원을 늘리고 있습니다. 따라서 version별로 어디까지 지원이 되며, 사용자가 원하는 모델을 돌렸을 때, 어느 버전 이상 사용하면 될 것인지 알려주기 위해, 정리해보도록 하겠습니다. https://github.com/NVIDIA/TensorRT 기본적으로 TensorRT docker의 경우, NGC docker를 사용하면 편리합니다. [Container Release Notes :: NVIDIA Deep Learning TensorRT Documentation](https://docs.nvidia.com/deeplearning/tensorrt/conta

2022년 11월 25일
·
0개의 댓글
·

TensorRT Polygraphy를 활용하여 간단하게 trt engine 추론 과정 알아보기

Session 1. - Build 1. Onnx Runtime Inference Session > OnnxRuntime.InferenceSession 이용 > backend/onnxrt/loader.py : class SessionFromOnnx(BaseLoader) @mod.export(funcify=True) 역할 인스턴스 초기화 및 호출을 한 번에 실행 init 과 call_impl 한 번에 실행 ← provider setting 및 ort InferenceSession 반환 ![](https://velog.v

2022년 11월 10일
·
0개의 댓글
·
post-thumbnail

Triton Inference Server 부수기 2

Triton Inference Server에서 제공해주는 것중에 Perfomance Analyzer가 있다 ML 모델을 잘 말아서 TIS(Triton Inference Server)를 생성했을때, TIS의 throughput과 latency를 분석해주는 툴이다. 1. 사용법 TIS 성능평가를 위한 docker를 실행하고, 아래 명령어를 통해 분석을 시작합니다. -m : 테스트할 모델(yolov7_visdrone) -u, -i : url 주소 및 통신옵션 (grpc이므로, local에 8001 port) -concurrency-range : 동시에 몇개까지 테스트할지 설정 1~100 concurrency -f : performace 결과를 csv로 저장 2. 실험 환경 및 성능 분석 실험 환경 모델 종류 : Yolov7-TensorRT GPU : V100 x 2 Maximu

2022년 9월 30일
·
0개의 댓글
·
post-thumbnail

yolo v7 export.py 분석하기

어제 torch.jit.script 활용하여 pt 파일을 생성해보려 했지만, 제대로 되지 않았다. 따라서, yolo v7의 소스코드에 있는 export.py 를 분석하여, 어떤 방식으로 pyTorch 모델을 architecture와 parameter가 담긴 pt파일이 생성된다. 어떤 방식으로 이루어지는지 알아보도록 하겠다. 위의 명령어를 활용하여 export 시킨다. weights : 가중치 파일 release 폴더에서 download 받아와서 사용한다. pt 파일이며, 단순히 torch.save를 했을 때, 갖는 파일과 동일하다 node 정보는 존재하나, models/common의 class단위로 node 정보를 표시해놨다.

2022년 9월 27일
·
0개의 댓글
·
post-thumbnail

Triton Inference Server 부수기 1

Why Triton Inference Server? 다양한 inference Framework 지원(Pytorch, Tensorflow, ONNX, TensorRT) 내부 로직이 C++로 구현되어 있어, Python기반 Inference server 보다 빠름(Nivida가 그렇게 자랑함) Multi-GPU에도 용이하게끔 GPU 스케쥴링 제공해줌 Model만 잘 말아서 넣어주면 Server Inference SDK가 뚝딱 환경설정 사전 준비 TensorRT 변환 완료된 모델 저는

2022년 9월 23일
·
0개의 댓글
·

TensorRT 101

update Nov.23.22: 오류수정 Prologue 지난주 즈음부터 나에게 주어진 업무. >"TensorRT가 뭔지, native model, cuda engine model을 각각 비교해보고, cuda engine으로 변환이 안 되는 레이어는 어떻게 하는지 알아보고 발표하세요" Envrionment 일단 예시코드부터 돌려본다. 아니, 그 전에 세팅부터. 예전에는 파일을 받아와서 직접 빌드했던 것 같다. 요즘은 그런 거 안 해도 된다. 엔비디아에서 관리하는 컨테이너가 있고 거의 매달 업데이트한다.[1] 프로젝트에 필요한 프레임웍, 라이브러리버전에 맞는 걸로 골라서 쓰면 된다. 이렇게 받은 이미지를 활용하면 TensorRT를 쓸 수 있다. 컨테이너에는 TensorRT말고는 아무것도 없어서 나머지 필요한 건 requirments.txt를 만들어뒀다가 한꺼번에 설치

2022년 9월 15일
·
0개의 댓글
·
post-thumbnail

CUDA 11.6 TensorRT OSS 설치

TensorRT 빌드 다운로드 TensorRT OSS 다운로드 빌드 환경 설정 Linux 플랫폼의 경우 아래 설명된 대로 TensorRT OSS를 빌드하기 위한 도커 컨테이너를 생성하는 것이 좋습니다. TensorRT-OSS 빌드 컨테이너를 생성합니다. TensorRT-OSS 빌드 컨테이너는 제공된 Dockerfile 및 빌드 스크립트를 사용하여 생성할 수 있습니다. 빌드 컨테이너는 즉시 사용 가능한 TensorRT OSS를 빌드하도록 구성됩니다. 도커 이미지가 크니 20GB 이상의 여유공간을 확보한 뒤 실행합니다. 예: cuda-11.6.2가 있는 x86-64의 Ubuntu 18.04(기본값) ./docker/build.sh --file docker/ubuntu-18.04.Dockerfile --tag tensorrt-ubuntu18.04-cuda11.6 혹시 빌드 중에 ngc 다운로드 중 오휴가 발생하는 경우 `vim ubuntu-18.

2022년 9월 8일
·
0개의 댓글
·