[python] Flask를 이용한 머신러닝 모델 배포 방법

이 블로그 포스트에서는 Python의 Flask 프레임워크를 사용하여 머신러닝 모델을 배포하는 방법에 대해 알아보겠습니다.

1. Flask란?

Flask는 Python으로 작성된 웹 애플리케이션 및 마이크로서비스를 빠르고 쉽게 개발할 수 있도록 해주는 경량화된 웹 프레임워크입니다.

2. 머신러닝 모델 생성

우선, 머신러닝 모델을 학습시키고 저장합니다. 이 예시에서는 Python의 scikit-learn 라이브러리를 사용하여 모델을 만들고 저장하는 방법을 보여줄 것입니다.

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import joblib

# Load the iris dataset
iris = datasets.load_iris()
X, y = iris.data, iris.target

# Split the dataset
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train the model
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Save the model to a file
joblib.dump(model, 'model.pkl')

위 코드는 iris 데이터셋을 사용하여 Logistic Regression 모델을 학습시키고, 해당 모델을 model.pkl 파일로 저장하는 예시입니다.

3. Flask 애플리케이션 개발

이제 Flask를 사용하여 머신러닝 모델을 배포할 웹 애플리케이션을 개발합니다. 먼저 Flask를 설치하고, 필요한 파일을 작성합니다.

pip install flask

다음으로, Flask 애플리케이션을 작성합니다. 이 예시에서는 POST 요청으로 데이터를 받아 모델을 활용하여 예측값을 반환하는 간단한 예시를 작성해볼 것입니다.

from flask import Flask, request, jsonify
import joblib
import numpy as np

app = Flask(__name__)

# Load the model
model = joblib.load('model.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    prediction = model.predict([np.array(data['input'])])
    return jsonify({'prediction': prediction.tolist()})

if __name__ == '__main__':
    app.run(debug=True)

위 코드는 POST 요청으로 받은 데이터를 모델에 입력으로 활용하여 예측값을 반환하는 간단한 Flask 애플리케이션 예시입니다.

4. 웹 애플리케이션 배포

Flask 웹 애플리케이션을 로컬 서버에서 실행한 후, 해당 앱을 웹 호스팅 플랫폼에 배포하여 모델을 외부에서도 접근할 수 있도록 만들 수 있습니다.

위 방법으로 Flask를 이용하여 머신러닝 모델을 배포하는 방법을 살펴봤습니다. Python의 Flask를 이용하면 머신러닝 모델을 간단하게 웹 애플리케이션으로 배포할 수 있으며, 이를 활용하여 다양한 머신러닝 기반 서비스를 구현할 수 있습니다.

이상으로 Flask를 이용한 머신러닝 모델 배포 방법에 대해 알아보았습니다.

참고 문헌: