Upload README.md
Browse files
README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
tags:
|
| 4 |
+
- cbc-reference-model
|
| 5 |
+
- mlops-100-day
|
| 6 |
+
- predictive-maintenance
|
| 7 |
+
- pytorch
|
| 8 |
+
- lstm
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
# CBC Reference Model: Turbofan Remaining Useful Life (C-MAPSS FD001)
|
| 12 |
+
|
| 13 |
+
> Pre-trained reference model for the **CBC [MLOps 100-Day Track](https://github.com/careerbytecode/cbc-learning-hub/tree/main/100-days/mlops)** (Capstone 4). Published twin of ML Development Capstone 4. **This is the one deep-learning reference model** — it ships as a torch `state_dict` + `model.py`, NOT a single joblib.
|
| 14 |
+
|
| 15 |
+
## Model details
|
| 16 |
+
- **Type:** single-layer LSTM (hidden 64) over a 30-cycle window of 15 normalized sensors -> scalar RUL (capped at 125).
|
| 17 |
+
- **Framework:** pytorch 2.12.0+cpu · **Serialization:** `manufacturing_lstm.pt` (state_dict) + `manufacturing_meta.joblib` (normalization + arch). Reconstruct with the shipped `model.py`.
|
| 18 |
+
- The LSTM is the rare counterpoint to the classical models: run-to-failure multivariate sensor sequences are the data shape deep learning is for. It beats an XGBoost baseline (RMSE 18.45) overall and decisively near failure.
|
| 19 |
+
|
| 20 |
+
## Intended use
|
| 21 |
+
Decision-support estimate of operational cycles remaining, to prioritize inspection/maintenance. NOT an automated ground-or-fly authority. Teaching/reference artifact.
|
| 22 |
+
|
| 23 |
+
## Training data
|
| 24 |
+
NASA C-MAPSS FD001 (100 train + 100 test run-to-failure engines, single operating condition). 15 non-flat sensors used. Simulated, no PII. NASA Open Data (public domain).
|
| 25 |
+
|
| 26 |
+
## Metrics (test = last cycle of each test engine vs RUL_FD001, scored once)
|
| 27 |
+
| Model | Test RMSE | Near-failure RUL[0,50) |
|
| 28 |
+
|---|---|---|
|
| 29 |
+
| XGBoost baseline | 18.45 | — |
|
| 30 |
+
| **LSTM (deployed)** | **14.88** | **4.78** |
|
| 31 |
+
|
| 32 |
+
The LSTM wins overall and is decisively better in the operationally critical near-failure band.
|
| 33 |
+
|
| 34 |
+
## How to load and predict
|
| 35 |
+
```python
|
| 36 |
+
from huggingface_hub import snapshot_download
|
| 37 |
+
import sys, json
|
| 38 |
+
d = snapshot_download("careerbytecode/mlops-ref-manufacturing-rul")
|
| 39 |
+
sys.path.insert(0, d + "/model"); sys.path.insert(0, d)
|
| 40 |
+
from model import load_model, predict_rul # needs torch installed
|
| 41 |
+
model, meta = load_model(d + "/model")
|
| 42 |
+
sample = json.load(open(d + "/sample_input.json"))
|
| 43 |
+
print(predict_rul(model, meta, sample["window"])) # predicted RUL (cycles)
|
| 44 |
+
```
|
| 45 |
+
**Serving requires `torch`** and the shipped `model.py` (the class definition) — a joblib load alone will not work.
|
| 46 |
+
|
| 47 |
+
## Limitations
|
| 48 |
+
- Trained on FD001 (one operating condition); FD002/FD004 (six conditions) need condition-aware normalization.
|
| 49 |
+
- RUL capped at 125: cannot distinguish a very-healthy from a merely-healthy engine, by design.
|
| 50 |
+
- Needs the full 30-cycle window + the training normalization stats to serve; a single reading is not enough. Simulated data — expect drift on real telemetry. Reference/teaching artifact only.
|
| 51 |
+
|
| 52 |
+
---
|
| 53 |
+
© 2015-2026 CareerByteCode. All rights reserved. | CC BY-NC-SA 4.0 (docs), MIT (code) | Authored by Raghavendra R, Platform Owner CareerByteCode, Solution Architect
|