OpenVino 란?
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
OpenVIN (Open Visual Inference and Neural Network Optimization) 는 Intel에서 제공하는 딥러닝 모델 최적화 및 추론 가속화 도구입니다. 특히 인텔 CPU, GPU, VPU (예: Movidius) 등 다양한 Intel 하드웨어에서 최적의 성능을 끌어내기 위해 만들어졌습니다.1. OpenVINO가 무엇인지OpenVINO는 크게 3가지 역할이 있습니다.모델 변환PyTorch, TensorFlow, ONNX 등에서 학습한 모델을 OpenVINO에서 사용할 수 있도록 IR (Intermediate Representation) 포맷으로 변환합니다.모델 최적화정수 양자화 (INT8)레이어 병합, 연산 단순화레이턴시 최소화 및 메모리 절감이런 최적화를 통해 속도는..
TensorRT 개념 및 이해
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
1. TensorRT 란?TensorRT는 NVIDIA가 개발한 고성능 딥러닝 추론 라이브러리로, 다양한 딥러닝 프레임워크에서 학습된 모델을 가져와 GPU에서 최적화된 엔진 형태로 변환하고 실행해준다​. 내부적으로 딥러닝 추론 최적화 컴파일러와 런타임(runtime)으로 구성되며, 모델을 하드웨어에 맞게 최적 최적화하여 짧은 지연 시간과 높은 처리량의 추론을 가능하게 한다​.2. TensorRT 구조 (workflow)TensorRT에서 모델 추론 파이프라인을 이해하기 위해 주요 구성 요소를 살펴보자.    TensorRT Workflow Training Framework 모델은 PyTorch, TensorFlow, Keras 등 다양한 프레임워크에서 학습된다. 학습된 모델을 TensorRT로 최적화하려..
PyTorch(.pt) vs ONNX 무엇이 다르고, 왜 ONNX 추론이 더 빠를까?
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
Pytorch 모델을 훈련시킨 후 보통 .pt 확장자의 파일로 저장하며, 배포시에는 ONNX 포맷으로 내보내어(.onnx 파일) ONNX Runtime으로 추론하는 경우가 많습니다.이번 글에서는 Pytorch의 .pt 파일과 ONNX 파일의구조적 차이,동적 그래프 vs. 정적 그래프 개념,ONNX Runtime의 최적화 기법과 가속 엔진(TensorRT, OpenVINO, DirectML),성능 비교까지 분석해보겠습니다. 1. PyTorch(.pt) 파일 vs ONNX 파일 구조(1) Pytorch(.pt) 파일 Pytorch(.pt) 파일은 Pytorch 모델의 저장 형식으로, 내부 내용은 어떻게 저장하느냐에 따라 몇 가지 유형이 있습니다.가장 흔한 방법은 모델의 state dict(가중치 딕셔너리)를..
[Optimizer] - 일반적으로 왜 Adam만 사용할까? [2]
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
지난 블로그에는 GD, SGD, Momentum, Adagrad 관련 내용에 대해서 설명 했습니다.이번에는 현재(2024년 기준) 많이 쓰이는 Adam 에 대해서 작성해보겠습니다.모델을 학습할때 그냥 일반적으로 Adam 을 사용한다고 하는데 왜 그런지 이번에 알고자 작성했습니다. RMSProp ,Adam, AdamW, AdamP 4가지에 대해서 알아보자.1. RMSProp (Root Mean Square Propagation)RMSProp는 AdaGrad의 단점인 학습률 감소 문제를 해결하기 위해 개발된 알고리즘이다.AdaGrad는 기울기의 제곱값을 누적하여 학습률을 조정하지만, 이 누적값이 너무 커지면 학습률이 지나치게 작아져 학습이 멈추는 문제가 발생한다. RMSProp는 이러한 문제를 해결하기 위해..
[Optimizer] - 초기 optimizer 이해 [1]
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
Optimizer 종류와 특징딥러닝 모델의 학습에서 Optimizer(최적화 알고리즘)는 손실 함수(Loss Function)를 최소화하기 위해 가중치(Weight)를 업데이트하는 핵심적인 역할을 한다. 아래는 대표적인 옵티마이저의 종류와 각 알고리즘의 특징에 대해 정리한 내용이다. 이번 블로그에서는 GD, SGD, Momentum, Adagrad 부터 살펴보겠다.Gradient Descent (GD)Gradient Descent는 최적화 알고리즘의 가장 기본적인 형태로,전체 데이터셋에 대해 손실 함수의 기울기(Gradient)를 계산한 후, 가중치를 업데이트 한다.수식은 아래와 같다. \( w_{t+1} = w_t - \eta \cdot \nabla L(w_t) \) \(w_t\) : 현재 단계(t)의..
Pseudo 라벨링(Pseudo Labeling)이란 무엇인가?
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
Pseudo 라벨링은 반지도 학습(Semi-supervised Learning)의 한 기법이다. 이 방법은 모델이 예측한 결과를 기반으로*라벨이 없는 데이터(unlabeled data)에 임시 라벨을 할당하여 학습에 활용하는 방식이다. Pseudo 라벨링은 특히 라벨링 비용이 높은 상황에서 데이터 효율성을 극대화하는 데 유용하다.왜 Pseudo 라벨링을 사용하는가?라벨링 비용 절감데이터에 라벨을 직접 붙이는 작업은 많은 비용과 시간이 소요된다. Pseudo 라벨링은 모델의 예측 결과를 사용하여 라벨링 작업을 간소화한다.데이터 활용 극대화라벨이 없는 데이터도 학습에 포함할 수 있어, 전체 데이터셋의 크기를 증가시킨다. 이를 통해 모델의 일반화 성능을 높일 수 있다.모델 성능 개선모델이 학습 데이터를 더 많..
딥러닝 학습률(Learning Rate) 종류와 설정 방법
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
학습률(Learning Rate, LR)은 딥러닝 모델의 최적화를 위해 매우 중요한 하이퍼파라미터이다. 학습률은 모델이 각 반복(iteration)마다 가중치를 얼마나 크게 업데이트할지를 결정하며, 적절한 값을 선택하지 않으면 학습 속도와 성능에 큰 영향을 미친다. 이번 글에서는 학습률의 종류와 설정 방법에 대해 정리한다.고정 학습률(Fixed Learning Rate)고정 학습률은 학습 과정에서 변하지 않는 일정한 값을 사용하는 방법이다. 학습이 단순한 경우나 데이터가 안정적일 때 사용되며, 설정이 간단하다는 장점이 있다. 그러나 학습 초기에 과도하게 큰 값으로 설정되면 학습이 불안정해지고, 너무 작은 값으로 설정하면 학습 속도가 느려질 수 있다.장점: 설정이 간단하고 구현이 쉬움.단점: 학습 과정에 ..
Pytorch에서 Learning Rate(LR) 스케줄링 다양한 기법
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
딥러닝 모델을 학습할 때, 학습률(Learning Rate)은 학습 성능에 큰 영향을 미칩니다. 학습률을 잘못 설정하면 학습이 너무 느리거나, 최적화 과정에서 손실함수가 발산할 수 있습니다. 이를 해결하기 위해 학습 중에 학습률 스케줄링 기법을 사용하여 학습률을 점진적으로 조절하는 방법이 있습니다.이번 포스팅에서는 8가지 대표적인 학습률 스케줄링 기법에 대해 설명합니다. 각 기법의 개념과 PyTorch에서 사용하는 방법을 함께 소개할게요. 1. StepLR 개념StepLR은 일정한 주기마다 학습률을 일정 비율로 감소시키는 방식입니다. 예를 들어, 매 10 에폭마다 학습률을 50%씩 줄이도록 설정할 수 있습니다. 학습 초기에는 큰 학습률로 빠르게 최적화하고, 후반부로 갈수록 더 작은 학습률로 세밀한 조정을..
StratifiedKFold란?
·
딥러닝 (Deep Learning)/[04] - 학습 및 최적화
StratifiedKFold와 앙상블을 사용한 CIFAR-10 분류 모델 학습이번 포스팅에서는 StratifiedKFold를 사용하여 CIFAR-10 데이터셋을 다루는 방법과, 각 폴드에서 학습한 모델들을 앙상블하여 최종 성능을 높이는 방법을 소개하겠습니다. StratifiedKFold는 데이터셋의 클래스 비율을 유지하면서 데이터를 여러 폴드로 나누기 때문에, 특히 데이터 불균형 문제를 해결하는 데 유용합니다.1. 프로젝트 개요우리는 CIFAR-10 데이터셋을 사용하여 이미지를 분류하는 작업을 수행할 것입니다. 이 데이터셋에는 10개의 클래스(예: 개구리, 고양이, 개 등)로 분류된 이미지가 있습니다. 각 클래스에서 고정된 수의 샘플을 선택한 후, StratifiedKFold를 사용하여 교차 검증을 진행..