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

Model Deployment

Deploying ML models to production environments

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!