MNIST Classifier API

An end-to-end MLOps pipeline showcasing model training, versioning with MLFlow, CI/CD deployment to Google Cloud Run, and interactive 3D visualization of CNN activations.

Instructions: Draw a digit and click "Predict!" to query the deployed model endpoint. The API returns predictions and layer activations, visualized in real-time 3D (use mouse to rotate/zoom).

Draw a Digit
Neural Network Activations

MLOps Pipeline Overview:

This project demonstrates a complete MLOps workflow: the model is trained on MNIST data, versioned in MLFlow Model Registry, and deployed to Google Cloud Run as a containerized FastAPI service. When you draw a digit, the request flows through the interactive canvas to the production endpoint, which returns predictions and internal layer activations for real-time 3D visualization.

%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#2d3748','primaryTextColor':'#fff','primaryBorderColor':'#2d3748','lineColor':'#2d3748','secondaryColor':'#2d3748','tertiaryColor':'#2d3748'}}}%% graph LR subgraph train["🔬 Training Environment"] T1[MNIST Dataset] T2[Training Script] T3[MLFlow Model Registry] end subgraph ui["👤 User Interface"] A[User] B[Interactive Canvas] C[3D Visualization] end subgraph prod["🚀 Production Environment"] D[FastAPI Service] E[Google Cloud Run] end T1 --> T2 T2 -->|Keras Model| T3 T3 -.->|Model| E A -->|Draws Digit| B B -.->|Predict| D D -->|Docker Container| E E -.->|Predictions + Activations| C style train fill:#fecaca,stroke:#ef4444,stroke-width:3px style ui fill:#fed7aa,stroke:#ed8936,stroke-width:3px style prod fill:#bfdbfe,stroke:#4299e1,stroke-width:3px classDef trainStyle fill:#ef4444,stroke:#dc2626,stroke-width:2px,color:#fff classDef uiStyle fill:#ed8936,stroke:#c05621,stroke-width:2px,color:#fff classDef prodStyle fill:#4299e1,stroke:#2b6cb0,stroke-width:2px,color:#fff class T1,T2,T3 trainStyle class A,B,C uiStyle class D,E prodStyle