간단한 ML api server 띄우기 -2 hello flask
2023. 8. 30. 13:30ㆍ학습/Data Engineering
-1 에서는 pyenv 를 통한 환경을 구축하였다.
-2 에서는 간단한 ML 을 flask를 이용하여 웹에 띄워보겠다.
1. Hello flask
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/')
def welcome():
return 'HELLO, ML API SERVER'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
로컬호스트에 일단 flask 웹 서버를 띄웠다.
CLI 에서 확인하고 싶다면
curl http://localhost:5000
hello, my api server 를 보내준다.
2. 간단한 ML 추가
import numpy as np
from sklearn.linear_model import LinearRegression
from flask import Flask, request, jsonify
app = Flask(__name__)
np.random.seed(0)
X = np.random.rand(10, 1)
y = 2 * X + 1 + 0.1 * np.random.randn(10, 1)
model = LinearRegression()
model.fit(X, y)
@app.route('/')
def welcome():
return 'HELLO, ML API SERVER2'
@app.route('/predict', methods=['POST'])
def predict():
data = request.json
new_X = data['input']
y_pred = model.predict(np.array(float(new_X[0])).reshape(1, -1))
res = jsonify({'predicted_output': y_pred.tolist()})
return res
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
/predict 라는 페이지에 간단한 ML 코드를 추가하였다.
직접 접속하려고 하면 405 오류가 나온다.
127.0.0.1 - - [30/Aug/2023 13:25:32] "GET /predict HTTP/1.1" 405 -
405 error
서버가 요청 메서드를 알고 있지만 대상 리소스가 이 메서드를 지원하지 않음
대부분 get과 post에 관련되어서 발생한다.
하지만 위 코드는 문제가 없다.
CLI 에서
curl -d '{"input":["0.8"]}' -H "Content-Type: application/json" -X POST http://localhost:5000/predict
결과값을 받을수 있다.
이제 적재한 데이터를 적절히 쏴줄수 있다면 웹에 ML을 올릴수 있게 된것이다!
728x90
'학습 > Data Engineering' 카테고리의 다른 글
mysql에 적재된 data를 flask 웹에 띄우기 (+ 개선사항) (0) | 2023.09.05 |
---|---|
ubuntu에 PostgreSQL 설치 -1 (0) | 2023.09.01 |
간단한 ML api server 띄우기 - 1 환경설정(pyenv) (0) | 2023.08.30 |
리눅스에 아파치(apache) 서버 설치 (0) | 2023.08.29 |
Hadoop - 작동 원리, 장단점 (0) | 2023.08.29 |