Online predictions are worse than offline tests, though the model is unchanged. Preprocessing is coded separately in training and serving. What is the likely cause?
Why A is the answer
Training-serving skew
Separate preprocessing paths are the classic cause of training-serving skew. Share the logic to fix it.
In detail
- Separate preprocessing code makes features differ.
- That is training-serving skew.
- Log serving inputs and compare them.
Use case
An illustrative scenario, not a real incident.
Python cleans text in training, and Java cleans it in serving, with small differences. Accuracy falls live, and shared code fixes it.
See it in different ways
flowchart TD A["Model issue"] --> B["Skew: training and serving data differ"] A --> C["Data drift: inputs change over time"] A --> D["Concept drift: the relationship changes"] A --> E["Attribution drift: feature importance shifts"]
mindmap
root((Decay))
Data drift
Inputs changed
Concept drift
Relationship changed
Skew
Training differs from serving
Attribution drift
Feature importance movedmindmap
root(("Preprocessing"))
n1["Training"]
n2["Python cleanup"]
n3["Serving"]
n4["Different Java cleanup"]Key point: Separate preprocessing causes skew.
Why the other options are wrong
- B. Too few epochs during training
- That would show in offline tests.
- C. Slow hardware on the serving nodes
- Slow hardware does not reduce accuracy.
- D. Concept drift in the live data
- Drift is a change over time in the world.

