Press ESC to exit fullscreen
πŸ“– Lesson ⏱️ 120 minutes

Model Deployment

Deploying ML models to production

Introduction

After training your machine learning model, the next step is to deploy it so others can use it in real-world applications. Deployment involves serving your model as an API so it can receive input data and return predictions.


Why Deploy a Model?

βœ… Allow users and applications to use your model easily.
βœ… Integrate machine learning into production systems.
βœ… Automate predictions for workflows and products.


Tools for Deployment

Popular options include:

  • FastAPI (lightweight, Python-based, easy to use)
  • Flask
  • Docker (for containerization)
  • Cloud services (AWS, GCP, Azure)

In this tutorial, we’ll use FastAPI for simplicity.


Example: Deploying a Scikit-Learn Model with FastAPI

1️⃣ Install Dependencies

In your project environment, install FastAPI and Uvicorn:

pip install fastapi uvicorn scikit-learn pandas

2️⃣ Train and Save Your Model

First, train and save your model using scikit-learn:

# train_model.py
import pandas as pd
from sklearn.linear_model import LinearRegression
import joblib

data = {
    'Hours': [1, 2, 3, 4, 5],
    'Scores': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)

X = df[['Hours']]
y = df['Scores']

model = LinearRegression()
model.fit(X, y)

# Save the model
joblib.dump(model, 'linear_model.pkl')

Run this script to save linear_model.pkl.


3️⃣ Create the FastAPI App

# app.py
from fastapi import FastAPI
from pydantic import BaseModel
import joblib

app = FastAPI()

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

# Request schema
class InputData(BaseModel):
    Hours: float

@app.post("/predict")
def predict(data: InputData):
    prediction = model.predict([[data.Hours]])
    return {"prediction": prediction[0]}

4️⃣ Run the FastAPI App

Run the server using Uvicorn:

uvicorn app:app --reload

Your API will be available at http://127.0.0.1:8000.


5️⃣ Test Your API

You can test your deployment using:

  • The interactive docs at http://127.0.0.1:8000/docs
  • Sending a POST request using curl or Postman:
curl -X POST "http://127.0.0.1:8000/predict" -H "Content-Type: application/json" -d '{"Hours": 6}'

Conclusion

πŸŽ‰ You have successfully:

βœ… Trained and saved a machine learning model.
βœ… Created a FastAPI application to serve your model.
βœ… Sent requests to get predictions from your deployed model.


What’s Next?

  • Explore Docker to containerize your FastAPI app for easier deployment.
  • Deploy to cloud platforms (AWS, GCP, Azure) for public access.
  • Learn about model monitoring to track performance in production.

Join our SuperML Community to share your deployment projects and get feedback!