[파이썬] Keras 모델 서빙 및 프로덕션 환경

소개

Keras는 간단하고 직관적인 API를 제공하는 인기 있는 딥러닝 프레임워크입니다. 개발자들은 Keras를 사용하여 모델을 만들고 훈련시킨 다음 이를 서빙(서비스 제공)하여 실시간 예측이나 추론을 수행할 수 있습니다. 이 글에서는 Keras 모델을 서빙하고 프로덕션 환경에서 활용하기 위한 방법을 알아보겠습니다.

Keras 모델 저장 및 로딩

Keras를 사용하여 훈련한 모델을 서빙하기 전에 먼저 저장해야 합니다. Keras는 모델을 HDF5 형식으로 저장하는 기능을 제공합니다.

from keras.models import load_model

model.save('model.h5')  # 모델 저장

loaded_model = load_model('model.h5')  # 모델 로딩

모델 서빙

Keras 모델을 서빙하는 가장 간단한 방법은 Flask와 같은 웹 프레임워크를 사용하는 것입니다. Flask는 간결하면서도 강력한 웹 프레임워크로, 모델의 API를 구축하는 데 사용됩니다.

from flask import Flask, request
import numpy as np

app = Flask(__name__)

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    input_data = np.array(data['input'])
    prediction = loaded_model.predict(input_data)
    return {'prediction': prediction.tolist()}

위의 예시 코드에서는 ‘/predict’ 엔드포인트를 생성하여 POST 요청을 받으면 입력 데이터를 받아 모델에서 예측을 수행한 다음 예측 결과를 반환합니다.

모델 프로덕션 환경 배포

실제 프로덕션 환경에서는 Flask와 같은 웹 프레임워크만으로 충분하지 않을 수 있습니다. 모델을 고성능 웹 서버와 함께 배포하기 위해 Gunicorn, uWSGI 등의 WSGI 서버를 사용할 수 있습니다.

$ gunicorn app:app

위의 명령어는 app.py 파일의 app 객체를 Gunicorn 서버에 올리는 명령어입니다. 이렇게 하면 Flask 웹 애플리케이션이 고성능 WSGI 서버 상에서 실행되므로 여러 사용자에게 동시에 서비스를 제공할 수 있습니다.

또한, 고성능 웹 서버와 함께 Docker 이미지를 사용하면 쉽게 모델을 컨테이너화하여 배포할 수 있습니다. 이를 통해 확장성이 뛰어난 프로덕션 환경을 구성할 수 있습니다.

마무리

Keras 모델을 서빙하고 프로덕션 환경에서 활용하는 방법을 살펴보았습니다. 이렇게 구성된 프로덕션 환경은 실시간 예측이나 추론을 수행하는데 적합하며, 고성능 웹 서버와 Docker를 활용하여 확장 가능한 시스템으로 만들 수 있습니다.