การนำโมเดล AI ไปใช้งานจริงด้วย Flask, FastAPI, หรือ Docker
การพัฒนาโมเดล AI นั้นเป็นเพียงส่วนหนึ่งของกระบวนการทั้งหมด การนำโมเดลไปใช้งานจริง (Model Deployment) เป็นขั้นตอนที่สำคัญไม่แพ้กัน เพราะช่วยให้โมเดลสามารถให้บริการแก่ผู้ใช้หรือระบบอื่น ๆ ได้ ในบทความนี้เราจะมาดูวิธีการนำโมเดล AI ไปใช้งานจริงด้วยเครื่องมือยอดนิยม เช่น Flask, FastAPI และ Docker
1. การนำโมเดลไปใช้งานด้วย Flask
Flask คืออะไร?
Flask เป็นเว็บเฟรมเวิร์กแบบ Lightweight ที่ใช้งานง่ายและเหมาะสำหรับการสร้าง API เพื่อให้บริการโมเดล AI
ตัวอย่างการใช้ Flask สำหรับ Model Deployment
from flask import Flask, request, jsonify
import pickle
import numpy as np
# โหลดโมเดลที่เทรนไว้
model = pickle.load(open('model.pkl', 'rb'))
app = Flask(__name__)
@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
features = np.array(data['features']).reshape(1, -1)
prediction = model.predict(features)
return jsonify({'prediction': prediction.tolist()})
if __name__ == '__main__':
app.run(debug=True)
Code language: Python (python)
วิธีรันเซิร์ฟเวอร์ Flask
บันทึกโค้ดเป็น
app.py
แล้วรันคำสั่ง:
python app.py
Code language: CSS (css)
API จะสามารถเข้าถึงได้ผ่าน
http://127.0.0.1:5000/predict
2. การนำโมเดลไปใช้งานด้วย FastAPI
FastAPI คืออะไร?
FastAPI เป็นเฟรมเวิร์กที่เร็วและมีประสิทธิภาพสูงกว่า Flask โดยรองรับการใช้งานแบบ asynchronous
ตัวอย่างการใช้ FastAPI สำหรับ Model Deployment
from fastapi import FastAPI
from pydantic import BaseModel
import pickle
import numpy as np
# โหลดโมเดลที่เทรนไว้
model = pickle.load(open('model.pkl', 'rb'))
app = FastAPI()
class ModelInput(BaseModel):
features: list
@app.post('/predict')
def predict(data: ModelInput):
features = np.array(data.features).reshape(1, -1)
prediction = model.predict(features)
return {'prediction': prediction.tolist()}
if __name__ == '__main__':
import uvicorn
uvicorn.run(app, host='127.0.0.1', port=8000)
Code language: Python (python)
วิธีรันเซิร์ฟเวอร์ FastAPI
บันทึกโค้ดเป็น
main.py
แล้วรันคำสั่ง:
uvicorn main:app --reload
Code language: Python (python)
API จะสามารถเข้าถึงได้ผ่าน
http://127.0.0.1:8000/predict
3. การนำโมเดลไปใช้งานด้วย Docker
Docker คืออะไร?
Docker เป็นแพลตฟอร์มสำหรับการทำ Containerization ซึ่งช่วยให้สามารถนำโมเดล AI ไปใช้งานได้ในทุกสภาพแวดล้อมโดยไม่ต้องกังวลเรื่อง dependency
ตัวอย่างการใช้ Docker สำหรับ Model Deployment
3.1 สร้างไฟล์
Dockerfile
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Code language: Python (python)
3.2 สร้างไฟล์
requirements.txt
flask
numpy
scikit-learn
pickle5
Code language: Python (python)
3.3 สร้างและรัน Docker Container
docker build -t model-deployment .
docker run -p 5000:5000 model-deployment
Code language: Python (python)
สรุป
- Flask เหมาะสำหรับการใช้งานที่ต้องการความง่ายและรวดเร็ว
- FastAPI ให้ประสิทธิภาพที่สูงขึ้นและรองรับ asynchronous
- Docker ช่วยให้สามารถ deploy โมเดลในสภาพแวดล้อมที่ควบคุมได้ง่าย
คุณสามารถเลือกเครื่องมือที่เหมาะสมกับโครงการของคุณเพื่อให้สามารถนำโมเดลไปใช้งานจริงได้อย่างมีประสิทธิภาพ!