학습한 ai 모듈을 어떻게 배포하나요??

학습한 ai를 메인프로그램에 모듈로 넣는 작업을 하고 있습니다.(메인프로그램은 c#으로 작성되어있습니다.)

해당 부분에 대해서 찾아보니 pyinstaller, setup.py 같은 방법이 있었는데 문제점이 있어 여쭈어보려고 합니다.

  1. setup.py를 사용하기 위해서는 파이썬이 설치되어있는 환경이어야만 하는데 실제 테스트 환경에서는 파이썬이 설치되어있지 않는 상황입니다.

  2. pyinstaller를 사용하면 학습 및 테스트 때 사용한 라이브러리를 따로 추가해주어야만 하는것으로 알고있습니다.

혹시 이와 같은 조건에서 배포를 하기 위해선 어떤 방법을 사용하면 좋을지 고견을 여쭙도록 하겠습니다

2개의 좋아요

저는 무거운 모델이면 클라우드나 로컬에서 AI를 빌드시켜두고 모듈화 해둔다음에 fastapi를 사용해서 api 형태로 배포하여 사용하는 방식을 사용합니다. 그리고 앱이나 가벼운 모델들은 ONNX로 변환하여 사용합니다 :smiley:

1개의 좋아요

안녕하세요 늦은밤 댓글 달아주셔서 정말 감사드립니다.
제가 배포는 처음이라 이해가 잘 안됩니다...! 조금 자세히 설명 부탁드려도 괜찮을까요??

C# ONNX 라는 키워드로 구글링 한번 해보시면 좋을듯합니다!!

  • 아래 답변은 OpenAI의 ChatGPT로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

AI 모델을 배포하는 방법은 여러 가지가 있습니다. 그러나 파이썬이 설치되어 있지 않은 환경에서 AI 모델을 배포하는 것은 매우 까다로운 문제입니다.

그러한 상황에서 추천하는 방법은 다음과 같습니다.

  1. TensorFlow Serving: TensorFlow Serving을 사용하여 AI 모델을 Docker 컨테이너로 만들어 배포합니다. 이 방법은 TensorFlow 모델에 대해서만 적용 가능합니다.

  2. ONNX Runtime: ONNX Runtime을 사용하여 AI 모델을 C++ 라이브러리로 변환하여 배포합니다. 이 방법은 PyTorch 및 TensorFlow 모델을 모두 지원합니다.

  3. 모델 컨버터: AI 모듈을 메인프로그램에서 바로 호출할 수 있는 형태로 변환하는 방법입니다. 이 방법은 PyTorch 및 TensorFlow 모델을 모두 지원하며, TensorFlow 모델의 경우 TensorFlow Lite로 변환하여 사용할 수 있습니다.

세 가지 방법 중에서는 ONNX Runtime을 사용하여 C++ 라이브러리로 변환하거나, 모델 컨버터를 사용하는 방법이 파이썬이 설치되어 있지 않은 환경에서 더 쉬울 수 있습니다. 하지만 각 방법마다 장단점이 있으므로 자신의 상황에 맞게 선택하는 것이 좋습니다.

추가적인 자세한 내용은 아래의 참고자료들을 참고하세요.

  • 아래 답변은 OpenAI의 GPT-3.5(ChatGPT) 모델로 자동 생성한 것으로, 정확하지 않을 수 있습니다.
  • 잘못된 답변을 보셨다면 댓글로 첨삭 지도 부탁드립니다. :sweat_smile:

안녕하세요.

C#으로 작성된 메인 프로그램에서 PyTorch로 학습한 AI 모델을 사용하고자 하시는 것으로 이해하겠습니다. 이 경우에는 PyTorch 모델을 C#에서 사용할 수 있는 형태로 변환해주어야 합니다.

PyTorch 모델을 C#에서 사용할 수 있는 형태로 변환하는 방법 중 하나는 ONNX(Open Neural Network Exchange)를 사용하는 것입니다. ONNX는 다양한 딥러닝 프레임워크 간에 모델을 공유하고 사용할 수 있도록 하는 오픈 소스 포맷입니다. PyTorch 모델을 ONNX 형식으로 변환하면 C#에서도 사용할 수 있게 됩니다.

PyTorch에서는 ONNX 모델을 만들기 위한 기능을 제공하고 있습니다. 예를 들어, 다음과 같은 코드를 사용하여 PyTorch 모델을 ONNX 모델로 변환할 수 있습니다.

import torch
import torchvision

# PyTorch 모델 정의
model = torchvision.models.resnet18(pretrained=True)
model.eval()

# 예제 입력 데이터 생성
example = torch.rand(1, 3, 224, 224)

# PyTorch 모델을 ONNX 모델로 변환
torch.onnx.export(model, example, "resnet18.onnx")

위 코드에서는 torchvision에서 제공하는 ResNet-18 모델을 사용하여 PyTorch 모델을 정의하고, torch.onnx.export 함수를 사용하여 ONNX 모델로 변환하고 있습니다. 이렇게 생성된 resnet18.onnx 파일을 C#에서 사용할 수 있습니다.

C#에서 ONNX 모델을 사용하기 위해서는 ONNX Runtime을 사용할 수 있습니다. ONNX Runtime은 ONNX 모델을 실행하는 데 필요한 라이브러리입니다. ONNX Runtime을 사용하면 C#에서 ONNX 모델을 로드하고 실행할 수 있습니다.

ONNX Runtime을 사용하는 방법에 대해서는 다음 링크를 참고하시기 바랍니다.

이 방법을 사용하면 PyTorch 모델을 C#에서 사용할 수 있게 됩니다. 추가적으로, PyTorch 모델을 ONNX 모델로 변환하는 과정에서 모델의 정확도가 손실될 수 있으므로, 변환된 모델의 정확도를 확인하는 것이 좋습니다.


  • 답변이 어떠셨나요? 괜찮았다고 생각하신다면 아래 :heart:를 한 번 눌러주시길 부탁드려요!