Part VIII: Industrial, Energy, and Infrastructure Sensor AI
Chapter 36: Predictive Maintenance and Prognostics

Fleet-scale deployment

"A perfect remaining-life estimate for one pump is a research paper. Ten thousand mediocre estimates, ranked so the right three technicians drive to the right three sites tomorrow, is a business."

A Logistically Minded AI Agent

Why one good model is not a maintenance program

Everything earlier in this chapter produced a remaining-useful-life (RUL) estimate and an uncertainty interval for a single asset. Fleet-scale deployment is the moment that stops being enough. A wind operator watches ten thousand turbines, a rail network tens of thousands of axle bearings, a cloud provider millions of disks. The question is no longer "how long until this bearing fails" but "given every asset's prediction, its uncertainty, its cost of failure, and the fact that I have four crews and one crane, what should the fleet do this week." That reframing changes the engineering. You now need models that generalize across machine variants you have never labeled, a serving path that survives intermittent connectivity, a retraining loop that notices when a firmware update silently shifts every sensor, and above all a way to turn a column of RUL numbers into a ranked work queue. This section is about the systems and decisions that live between a working prognostic model and a fleet that is measurably cheaper and safer to run.

This section assumes you already have a per-asset RUL model with calibrated uncertainty from Section 36.6, and understands the maintenance decision economics developed there. It leans heavily on operations infrastructure taught later: the model registry, monitoring, and rollout machinery of Chapter 69, the streaming and online-inference patterns of Chapter 60, and the distribution-shift detection of Chapter 66. Here we specialize those tools to the prognostics setting, where the label (an actual failure) is scarce, delayed by months, and expensive to earn.

A fleet is not one machine repeated N times

The tempting assumption is that a fleet is homogeneous, so one model trained on pooled data serves all. Real fleets are stratified. Turbines of the same model sit at different altitudes and wind classes; identical pumps move slurry at one plant and clean water at another; two nominally matched compressors run different duty cycles. These differences shift the sensor distribution enough that a single global model is systematically miscalibrated for the extremes. The standard response is a three-tier hierarchy. A global model, trained on the whole fleet, captures the shared physics of degradation and gives every asset a usable prediction on day one. A cohort model, fit per machine variant, operating regime, or site, corrects the group-level bias. A per-asset adaptation, often just a learned offset or a short online-updated residual, absorbs the individuality of one unit that has always run a little hot. Formally, if \(g\) is the global predictor and \(X\) a sensor window, the deployed estimate is \(\hat{r}(X) = g(X) + b_{\text{cohort}} + \delta_{\text{asset}}\), where the correction terms are cheap, fit from little data, and updated far more often than the expensive global backbone.

This hierarchy is also the answer to cold-start. A brand-new asset with zero failure history cannot train its own model, but it inherits the global and cohort tiers immediately and starts accumulating a per-asset residual as it runs. Foundation-model embeddings (Section 36.5) strengthen the global tier precisely because they transfer across variants without per-fleet retraining, and graph-structured models that share information between neighboring or similar assets, developed in Chapter 54, can propagate a degradation signal observed on one unit to its lookalikes before they fail.

At fleet scale, ranking quality beats point-estimate accuracy

A prognostic team's instinct is to minimize RUL error (RMSE or the asymmetric scoring function). But the fleet operator never acts on an absolute RUL; they act on a priority order. Two models with identical RMSE can produce wildly different maintenance value if one ranks the truly urgent assets to the top of the queue and the other scatters them. The metric that predicts business outcome is therefore a ranking or decision metric, expected avoided cost per crew-visit, or the precision of the top-\(k\) most-urgent list, not raw regression error. A model that is uniformly biased but preserves the correct order can outperform an unbiased but noisier one.

From RUL column to work queue: risk-ranked triage

The core fleet operation is triage: convert every asset's predictive distribution into a single actionable priority, then sort. The right priority is not the smallest RUL. It weights urgency by consequence and by confidence. A useful, defensible score is the expected cost of deferring action over the next planning window \(H\), which combines the failure probability inside that window with the cost of an unplanned failure and discounts by how sure the model is. Given a per-asset failure-time distribution and a failure cost \(c_i\), the deferral risk is \(\rho_i = c_i \cdot P(T_i \le H)\), and the crew is dispatched down the sorted \(\rho_i\) list until the week's capacity is spent. This is the fleet analogue of the single-asset economics in Section 36.6, and it is what makes calibrated uncertainty non-negotiable: a model that is overconfident about \(P(T_i \le H)\) will send crews to the wrong sites. The snippet below turns a batch of predictive quantiles into a ranked, capacity-limited dispatch list.

import numpy as np
import pandas as pd

def triage(rul_samples, failure_cost, horizon_h, crew_capacity):
    # rul_samples: (n_assets, n_mc) posterior draws of remaining useful life (hours)
    # P(fail within horizon) from the predictive distribution, not a point estimate
    p_fail = (rul_samples <= horizon_h).mean(axis=1)
    deferral_risk = failure_cost * p_fail                 # expected cost of waiting
    order = np.argsort(-deferral_risk)                    # most urgent first
    dispatch = order[:crew_capacity]                      # this week's work orders
    return pd.DataFrame({
        "asset": order,
        "p_fail_H": p_fail[order],
        "risk": deferral_risk[order],
        "dispatch": np.isin(order, dispatch),
    })

rng = np.random.default_rng(0)
rul = rng.gamma(shape=4, scale=120, size=(2000, 500))    # 2000 assets, 500 MC draws
cost = rng.choice([5e3, 4e4, 2e5], size=2000)            # heterogeneous failure cost
queue = triage(rul, cost, horizon_h=168, crew_capacity=12)
print(queue.head(12))
Fleet triage: predictive RUL draws become a risk-ranked work queue. The failure probability is read from the distribution's mass below the planning horizon (168 hours), scaled by each asset's failure cost, then capacity-truncated to the crews available. Point RUL never appears; only the distribution and the cost do.

Right tool: batch serving and drift monitoring off the shelf

The triage logic is a dozen lines, but the surrounding plumbing, scoring thousands of assets on a schedule, versioning the model that produced each score, and alerting when input distributions drift, is where naive code balloons into hundreds of lines of cron jobs, feature-store queries, and hand-rolled histogram comparisons. A serving-and-monitoring stack such as a feature store plus an evidently-style drift monitor collapses that to a handful of declarative calls: register the model, point the batch job at the feature view, and declare the reference distribution to watch. You write the risk score; the library handles scheduling, lineage, and the population-stability report, cutting the operational surface from roughly 300 lines to about 30 and giving you an audit trail Chapter 69 will insist on.

A wind fleet that learned to trust the queue, not the number

An offshore wind operator ran per-turbine gearbox RUL models that scored well on held-out RMSE, yet crews kept returning from dispatched visits finding healthy gearboxes while two unlisted units failed mid-quarter. The audit found two fleet-scale faults. First, a firmware rollout six weeks earlier had rescaled the vibration channel on one turbine variant by a constant, silently shifting every embedding for that cohort; the global model, blind to the shift, drifted into overconfidence there. Second, the team dispatched on smallest predicted RUL, ignoring that a nacelle visit offshore costs far more for the far-shore string, so cheap-to-reach healthy units kept jumping the queue. Switching to a deferral-risk ranking that multiplied failure probability by per-string visit cost, and adding a population-stability alarm on each channel that auto-quarantined a cohort's predictions when its input histogram moved, cut wasted vessel trips by a third in one season and caught the next firmware-induced shift within a day instead of a quarter.

Serving, connectivity, and the retraining loop

Where the model runs is a systems decision driven by latency and connectivity, not accuracy. Prognostics is forgiving on latency, a RUL that updates hourly is fine, so most fleets favor a hybrid split: a light edge model computes features and screens for fast-moving anomalies on the asset even when the link drops, while the heavy global backbone and the fleet-wide triage run in the cloud on batched telemetry. The edge tier borrows directly from Chapter 59, and when raw sensor streams cannot leave the site for privacy or bandwidth reasons, the global model can still improve through the federated updates of Chapter 64, sharing gradients rather than data.

The retraining loop is the part teams most often get wrong. Failures are the label, and they arrive months after the window that predicted them, so a fleet accumulates ground truth slowly and asymmetrically: you learn a lot from the assets you let run to failure and almost nothing about the ones you repaired early (their true RUL is censored, exactly the survival-analysis problem of Section 36.3). Retraining must therefore respect censoring, use a strict time-and-asset split so a future failure never leaks backward into training, and be triggered by evidence, not the calendar. The trigger is drift plus label accrual: retrain when monitored input distributions have moved beyond a threshold or when enough new confirmed failures have banked to sharpen the tails.

Common pitfall: the maintenance action erases its own evidence

Predictive maintenance creates a feedback loop that quietly poisons future training. Every asset the model flags gets repaired before it fails, so the very trajectories the model is most confident about never produce a failure label; the training set fills with the failures the model missed. Over successive retrains the model can look worse on failure recall while actually working, because it is being graded only on its own blind spots. Log every intervention as a censored event and account for it explicitly, or the loop will train you toward a model that only predicts the failures you are already bad at.

Frontier: one prognostic backbone for a whole heterogeneous fleet

The active research direction is replacing the per-variant model zoo with a single conditioned foundation backbone. Time-series foundation models (TimesFM, Moirai, and the MOMENT encoder family from Chapter 19) are being probed and lightly fine-tuned to serve every cohort from one set of weights, with metadata (asset type, duty cycle, site) injected as covariates so the cohort correction becomes conditioning rather than a separate model. Paired with conformal prediction (Chapter 18) for distribution-free RUL intervals that stay valid across variants, and continual on-fleet adaptation, the goal is a deploy-once prognostic service that a new asset class joins without a bespoke training project. The open problems are honest cross-variant calibration and detecting when the backbone is confidently wrong on a machine type it never saw.

Exercise: rank, do not regress

Take an N-CMAPSS multi-unit dataset and split it by unit and time. (1) Train a single global RUL model and record its RMSE and the standard asymmetric prognostics score. (2) Build the deferral-risk triage from the code above, assigning each unit a synthetic but heterogeneous failure cost, and evaluate top-\(k\) precision: of the \(k\) units your queue dispatches, how many actually fail within the horizon. (3) Now degrade the model by adding a constant bias to one variant's predictions and re-measure both RMSE and top-\(k\) precision. Report which metric moves more, and explain to an operator why the ranking metric is the one to defend at the budget meeting. (4) Add a population-stability check that flags the biased variant from its inputs alone, before any failure confirms the drift.

Self-check

  1. Why can two RUL models with identical RMSE deliver very different maintenance value across a fleet, and what metric captures the difference?
  2. Explain the three-tier global/cohort/per-asset hierarchy and how it solves the cold-start problem for a brand-new asset.
  3. How does successful predictive maintenance bias its own future training data, and what bookkeeping prevents the resulting degradation?

Lab 36

build an RUL predictor on C-MAPSS/N-CMAPSS; compare regression metrics against maintenance utility.

Bibliography

Prognostics benchmarks and fleet datasets

Saxena, A., Goebel, K., Simon, D., & Eklund, N. (2008). Damage Propagation Modeling for Aircraft Engine Run-to-Failure Simulation. International Conference on Prognostics and Health Management (PHM).

The C-MAPSS turbofan dataset that became the standard multi-unit RUL benchmark; the original source of the asymmetric scoring function this section contrasts with ranking metrics.

Arias Chao, M., Kulkarni, C., Goebel, K., & Fink, O. (2021). Aircraft Engine Run-to-Failure Dataset under Real Flight Conditions for Prognostics and Diagnostics. Data.

N-CMAPSS, the larger, more realistic successor with heterogeneous flight profiles, the dataset the lab and exercise use to force genuine cross-unit generalization.

Fleet-scale prognostics and transfer

Fink, O., Wang, Q., Svensen, M., Dersin, P., Lee, W.-J., & Ducoffe, M. (2020). Potential, Challenges and Future Directions for Deep Learning in Prognostics and Health Management Applications. Engineering Applications of Artificial Intelligence.

A field-shaping survey that names fleet heterogeneity, transfer across units, and scarce labels as the central deployment obstacles this section addresses.

Lei, Y., Li, N., Guo, L., Li, N., Yan, T., & Lin, J. (2018). Machinery Health Prognostics: A Systematic Review from Data Acquisition to RUL Prediction. Mechanical Systems and Signal Processing.

A comprehensive review of the RUL pipeline; useful for placing fleet deployment as the final stage after acquisition, feature construction, and modeling.

Foundation models for time series (the fleet backbone)

Das, A., Kong, W., Sen, R., & Zhou, Y. (2024). A Decoder-Only Foundation Model for Time-Series Forecasting (TimesFM). ICML.

The pretrained forecaster whose embeddings and zero-shot behavior underpin the deploy-once, serve-every-cohort direction in the frontier callout.

Goswami, M., Szafer, K., Choudhry, A., Cai, Y., Li, S., & Dubrawski, A. (2024). MOMENT: A Family of Open Time-Series Foundation Models. ICML.

An encoder-style foundation model with a first-class embedding mode, the practical backbone for a single conditioned model spanning heterogeneous fleet variants.

Woo, G., Liu, C., Kumar, A., Xiong, C., Savarese, S., & Sahoo, D. (2024). Unified Training of Universal Time Series Forecasting Transformers (Moirai). ICML.

A multivariate foundation model that ingests all sensor channels jointly, relevant when fleet faults appear as changing cross-sensor correlations.

Operations, drift, and calibrated decisions

Angelopoulos, A. N., & Bates, S. (2021). A Gentle Introduction to Conformal Prediction and Distribution-Free Uncertainty Quantification. Foundations and Trends in Machine Learning.

The reference for distribution-free RUL intervals that remain valid across fleet variants, the calibration backbone for trustworthy triage.

Breck, E., Cai, S., Nielsen, E., Salib, M., & Sculley, D. (2017). The ML Test Score: A Rubric for ML Production Readiness and Technical Debt Reduction. IEEE Big Data.

A production-readiness checklist that names data drift, training-serving skew, and feedback loops, the operational failure modes the retraining-loop discussion warns against.

What's Next

In Chapter 37, we step back from predicting time-to-failure and ask a prior question: how do we detect that a machine has left its healthy regime at all, often with no failure examples to learn from. Condition monitoring and anomaly detection supply the fast, label-light alarms that sit upstream of the prognostic queue this section built.