2단계: ONNX 모델 변환 및 NPU 기반 예측기 구축

3% 수익 도달 예측 모델을 보다 빠르게 실시간 예측에 활용하기 위해, 기존 머신러닝 모델(pkl)을 ONNX(오픈 뉴럴 네트워크 익스체인지) 포맷으로 변환하고, 이를 기반으로 NPU 추론이 가능한 경량 예측기를 제작합니다.


1. ONNX 모델로 변환하기 (pkl → onnx)

아래 코드를 convert_to_onnx.py로 저장하고 실행하면, 기존 학습된 pkl 모델을 ONNX 형식으로 저장합니다.

import joblib
import onnx
import skl2onnx
from skl2onnx import convert_sklearn
from skl2onnx.common.data_types import FloatTensorType
import pandas as pd

# 데이터 로딩
df = pd.read_csv("C:/CLOG매크로엑셀파일백업/train_data_20250627.csv")
X = df[["매수가", "전일종가", "매수대비", "수익률"]]

# 모델 불러오기
model = joblib.load("C:/CLOG매크로엑셀파일백업/xgb_model.pkl")

# ONNX 변환
initial_type = [("input", FloatTensorType([None, X.shape[1]]))]
onnx_model = convert_sklearn(model, initial_types=initial_type)

# 저장
with open("C:/CLOG매크로엑셀파일백업/xgb_model.onnx", "wb") as f:
    f.write(onnx_model.SerializeToString())

print("✅ ONNX 모델 저장 완료: xgb_model.onnx")

2. ONNX 모델 예측기 제작

ONNX Runtime을 활용해 저장된 모델을 불러와 추론을 수행합니다. 이 코드를 onnx_predictor.py로 저장 후 실행하세요.

import onnxruntime as ort
import numpy as np
import pandas as pd

# 데이터 로딩
df = pd.read_csv("C:/CLOG매크로엑셀파일백업/train_data_20250627.csv")
X = df[["매수가", "전일종가", "매수대비", "수익률"]].astype(np.float32)

# ONNX 세션 로드
session = ort.InferenceSession("C:/CLOG매크로엑셀파일백업/xgb_model.onnx")
input_name = session.get_inputs()[0].name

# 예측 실행
preds = session.run(None, {input_name: X.values})[0]

# 예측 결과 정리
df["예측값"] = preds
df["예측결과"] = (df["예측값"] >= 0.5).astype(int)

print(df[["종목명", "수익률", "예측값", "예측결과"]].head())

3. NPU 적용 준비

  • ONNX 모델은 Intel OpenVINO, Windows ML, Jetson NPU에서 최적화 가능
  • onnxruntime를 EP(Execution Provider) 기반으로 확장하면, 실시간 예측 가속이 가능
  • 추후 자동화 예측 + 실시간 신호 분기로 확장 가능

다음 단계

3단계: 실시간 예측 자동화 시스템으로 확장하기 위해, 생성된 ONNX 모델과 예측기를 연동한 실시간 감시 로직으로 발전시킬 예정입니다.

모델 테스트 후 결과를 확인해 주세요. 확인되면 실전 적용 및 자동화 구조로 넘어갑니다.


본 포스팅은 AI 기반 수익 예측 자동화 시스템 구축 프로젝트의 일환으로 제작되었습니다.

Leave a Comment