Sklearn-onnx 모델을 onnx 변환 방법 (with 성능 비교)
·
딥러닝 (Deep Learning)/[03] - 모델
Scikit-learn은 대표적인 머신러닝 라이브러리로, 다양한 모델을 빠르게 실험하고 적용할 수 있게 해줍니다.이 글에서는 Scikit-learn 모델을 ONNX(Open Neural Network Exchange) 형식으로 변환하는 방법과, 변환된 모델의 정확도 비교 방법까지 설명합니다.1. Scikit-learn 모델의 5가지 분류Scikit-learn에서 제공하는 모델들은 다음과 같이 5가지 주요 유형으로 나눌 수 있습니다.구분설명예시 모델Classifier분류 문제 해결LogisticRegression, RandomForestClassifierRegressor연속적인 수치 예측 문제 해결LinearRegression, GradientBoostingRegressorClusterer비지도 학습 기반..
Scikit-Learn 모델 분류 및 개념 정리
·
딥러닝 (Deep Learning)/[03] - 모델
개요Scikit-Learn은 수많은 머신러닝 알고리즘을 제공하는 Python 기반 대표 라이브러리입니다. 여기서 제공하는 모델들은 기능과 사용 목적에 따라 5가지 유형으로 나눌 수 있고, 이 각각은 sklearn-onnx에서도 ONNX로 변환 가능한 구조의 기준이 됩니다.이 글에서는 각 타입의 개념, 주요 모델, 변환 특징, ONNX 사용 시 고려 사항까지 정리해 보겠습니다.1. Classifier (분류기)개념입력 데이터를 미리 정의된 클래스(Label) 중 하나로 분류하는 지도 학습 모델주요 특징출력값이 이산형 (discrete) 클래스 값 (예: [0, 1], ['cat', 'dog'])fit(X, y)로 학습 → predict(X)로 예측확률 예측 가능: predict_proba(X)대표 알고리즘..
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(가중치 딕셔너리)를..
Kubeflow 를 쉽게 이해하기 (피자 가게)
·
딥러닝 (Deep Learning)/[07] - Serving
쿠브플로우(Kubeflow)는 머신러닝 파이프라인을 Kubernetes 위에서 자동화하고 확장 가능하게 만드는 도구이다.하지만 개념이 어렵게 느껴질 수 있으므로, "피자 가게"에 비유해서 쉽게 설명해보겠다.1️⃣ 피자 가게와 ML 모델 개발의 공통점(1) 피자 가게 운영 흐름 🍕재료 준비 → 밀가루 반죽, 치즈, 토핑 등 준비피자 만들기 → 반죽에 소스를 바르고 토핑 추가오븐에 굽기 → 일정한 온도와 시간 설정포장 및 배달 → 완성된 피자를 고객에게 전달리뷰 및 개선 → 고객 피드백을 받고 더 맛있는 피자를 연구(2) 머신러닝 모델 개발 흐름 🤖데이터 준비 → 데이터를 수집하고 전처리모델 학습 → 학습 데이터로 모델을 훈련모델 평가 → 모델이 잘 작동하는지 테스트모델 배포 → API로 배포하여 서비스..
MLflow 란?
·
딥러닝 (Deep Learning)/[07] - Serving
MLflow 란?MLflow는 머신러닝 실험을 체계적으로 관리할 수 있도록 설계된 오픈소스 플랫폼이다. 주로 다음 네 가지 핵심 기능을 제공한다. 1) MLflow Tracking모델 학습 과정에서 사용된 하이퍼파라미터, 메트릭, 모델 가중치, 이미지 등 을 기록하고 시각화할 수 있다. 2) MLflow Projects코드와 환경을 체계적으로 정리하여 재현 가능성을 높이는 기능이다. 3) MLflow Models학습된 모델을 다양한 포맷으로 저장하고, 이후 로드하여 쉽게 배포할 수 있도록 한다. 4) MLflow Registry모델 버전을 관리하고, 배포 전후의 단계를 추적하는 기능이다. 이러한 기능을 통해 MLflow는 실험 관리를 자동화하고, 체계적으로 비교할 수 있도록 도와준다. mlflow 는 w..
[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)의..