Spaces:
Sleeping
Sleeping
| # PneumoOps: Operations & Deployment Runbook | |
| This document contains all the essential commands for training, monitoring, deploying, and testing the PneumoOps pipeline. | |
| --- | |
| ## 1. Local Training & Monitoring | |
| Because the model is training in the background using `nohup` (No Hangup), **you can safely close your laptop or disconnect from the server.** The training process is detached from your local session and will continue running strictly on the server until it finishes 15 epochs. | |
| **To check the live training progress at any time:** | |
| ```bash | |
| tail -f training.log | |
| ``` | |
| *(Press `Ctrl+C` to exit the live view. The training will continue running behind the scenes.)* | |
| **If you need to manually stop the background training:** | |
| ```bash | |
| pkill -f train_chestmnist.py | |
| ``` | |
| --- | |
| ## 2. Docker Deployment (With Cybersecurity Patches) | |
| The `Dockerfile` has been hardened to drop root privileges (`appuser`) and automatically fetch the newest OS security patches upon building. | |
| **To build the secure container image:** | |
| ```bash | |
| docker compose build | |
| ``` | |
| **To start the full stack (FastAPI Backend + Gradio Frontend) securely in the background:** | |
| ```bash | |
| docker compose up -d | |
| ``` | |
| **To read the live Docker logs (useful for verifying the FastAPI startup):** | |
| ```bash | |
| docker compose logs -f | |
| ``` | |
| *(Note: Because of GitHub Actions, pushing to the `master` branch will automatically run this build and deploy the containers to your Hugging Face space!)* | |
| --- | |
| ## 3. Testing the Live Deployment | |
| Once the Docker containers are running (locally or on Hugging Face), you can probe them to test both Data Science metrics and DevOps/Platform performance. | |
| ### A. Testing API Health & Model Statistics | |
| Check what profiles and models the backend is serving, and view the embedded Brier scores. | |
| ```bash | |
| curl -s http://127.0.0.1:7860/health | jq | |
| ``` | |
| ### B. Triggering a Prediction (A/B Test + Drift Monitor) | |
| Pass a Chest X-ray image to the pipeline to see the A/B test router in action. The response will explicitly return the `drift_status` ("NORMAL" or "DRIFT_DETECTED") depending on statistical distribution checks. | |
| ```bash | |
| curl -X POST -F "file=@Screenshot_or_Xray.png" http://127.0.0.1:7860/predict | |
| ``` | |
| ### C. Scraping Platform DevOps Metrics | |
| Standard enterprise observability. Pull the raw Prometheus text logs to visualize live deployment performance. | |
| ```bash | |
| curl -s http://127.0.0.1:7860/metrics | grep "pneumoops" | |
| ``` | |
| You should actively look for: | |
| * `pneumoops_inference_latency_ms`: To compare PyTorch baseline speed vs ONNX optimizations. | |
| * `pneumoops_disease_predictions_total`: To see which of the 14 multi-label diseases are most frequently diagnosed. | |