RotaGuard RUL (LSTM)
Compact 1-layer/48-unit LSTM that maps a 30-cycle window of 17 scaled sensors/settings to a Remaining-Useful-Life
(RUL) estimate, trained on NASA C-MAPSS FD001. A LightGBM tabular baseline (rolling/lag features) is bundled
alongside for comparison — see eval_results.json for both.
Data honesty
NASA C-MAPSS is a turbofan-engine degradation simulation. It is used here as an engineering analog for a single-shaft gas turbine or centrifugal-compressor train (per the project plan) — this is explicitly not direct compressor/turbine field telemetry, and must not be marketed as such. For full industrial validity, a pilot deployment needs real vibration/process data from at least one customer asset for fine-tuning.
Both models here are intentionally small and CPU-fast (no HF Jobs GPU budget was available at training time) — they land in the "vanilla/untuned" range of the public FD001 literature, not state-of-the-art. See the citations below before quoting these numbers as a competitive benchmark.
Held-out test results (100 official FD001 test engines)
| Model | RMSE (cycles) | PHM08 Score |
|---|---|---|
| LSTM (primary, this repo) | 15.23 | 377.29 |
| LightGBM baseline (also included) | 18.11 | 623.24 |
Exact, reproducible numbers are in eval_results.json (regenerated by scripts/run_pipeline.py).
| Published baseline (public FD001 literature/repos) | RMSE (cycles) | Score | Source |
|---|---|---|---|
| Vanilla/untuned LSTM | ≥16.0 | — | multiple public FD001 write-ups |
| Regularized Random Forest | 12.57 | 252 | github.com/beebzy-droid/predictive-maintenance-cmapss |
| Tuned XGBoost | 11.62 | 207 | github.com/beebzy-droid/predictive-maintenance-cmapss |
| LSTM (2×50, from-scratch) | 14.51 | — | github.com/Gsebs/ml-health-forecasting-transformer |
| Deep LSTM (heavy preprocessing) | 7.78 | — | Asif et al. (2022), via beebzy-droid comparison table |
| Stacking ensemble (LSTM+CNN+CNN-LSTM+CNN-GRU→XGBoost) | 9.989 | — | arXiv:2608.27940 (2026), Table III |
Scoring function: Saxena, A., Goebel, K., Simon, D. & Eklund, N. (2008). Damage propagation modeling for aircraft engine run-to-failure simulation, PHM08 (asymmetric penalty — late/over-optimistic predictions cost more than early/conservative ones).
Known limitation: training targets use the standard piecewise RUL cap at 125 cycles. 11/100 FD001 test engines have true RUL above 125 cycles; the model systematically under-estimates remaining life for those — this is a documented property of the piecewise convention used across the RUL literature, not a defect specific to this model.
Files
rul_lstm.onnx/rul_lstm.pt— the LSTM (ONNX for CPU inference,.ptstate dict for retraining)rul_gbm.joblib— LightGBM tabular baselinerul_scaler.joblib—StandardScalerfit on FD001 train settings/sensorseval_results.json— RMSE/PHM08 score, training history, published-baseline citationsmanifest.json— feature order, window size, RUL cap
How to score an engine window
import onnxruntime as ort, numpy as np, joblib
scaler = joblib.load("rul_scaler.joblib")
sess = ort.InferenceSession("rul_lstm.onnx")
# window: (30, 17) already scaler-transformed settings+informative sensors, most-recent cycle last
rul = sess.run(None, {"window": window[None, :, :].astype("float32")})[0]
Related
- Dataset: alirezaaminzadeh/rotaguard-vibration-rul-features
- Vibration model: alirezaaminzadeh/rotaguard-vibration-classifier
- Space: alirezaaminzadeh/rotaguard-predictive-maintenance
- Product: aria-ai.ir
MIT · Aria AI Engineering Team