check-retraining-needed Evaluates whether a model requires retraining based on drift detection, scheduled intervals, or manual triggers.
Overview Property Value Trigger Step Functions state machine Runtime Python 3.11 Timeout 60 seconds Memory 256 MB
{
"model_name" : "PascalStrategy" , # Required
"force" : false , # Optional, forces retraining
"manual_trigger" : false # Optional, marks as manual request
}
Output Schema {
"model_name" : "PascalStrategy" ,
"decision" : "NEEDS_RETRAINING" , # NEEDS_RETRAINING | RECENTLY_TRAINED | NO_RETRAINING
"trigger" : "DRIFT_DETECTED" , # MANUAL | DRIFT_DETECTED | SCHEDULED
"reason" : "Significant drift detected (PSI: 0.35)" ,
"hours_since_retrain" : 168.5 ,
"days_since_retrain" : 7 ,
"drift_severity" : "SIGNIFICANT" ,
"drift_psi" : 0.35
}
Environment Variables Variable Required Default Description DYNAMODB_TABLE_NAME Yes - State repository table DRIFT_STATE_TABLE No "tradai-drift-state" Drift state table RETRAINING_STATE_TABLE No "tradai-retraining-state" Retraining state table RETRAINING_INTERVAL_DAYS No 7 Days between scheduled retraining MIN_HOURS_BETWEEN_RETRAINING No 24 Minimum hours between attempts
Decision Logic flowchart TD
A[Start] --> B{Force flag?}
B -->|Yes| C[NEEDS_RETRAINING: MANUAL]
B -->|No| D{Check drift state}
D -->|Significant drift| E[NEEDS_RETRAINING: DRIFT_DETECTED]
D -->|No drift| F{Days since last?}
F -->|>= interval| G{Hours since last?}
G -->|>= minimum| H[NEEDS_RETRAINING: SCHEDULED]
G -->|< minimum| I[RECENTLY_TRAINED]
F -->|< interval| J[NO_RETRAINING] Key Features Checks drift severity against thresholds Validates minimum interval between retraining attempts Supports forced retraining and manual triggers Returns decision rationale for audit trail Step Functions Integration {
"CheckRetraining" : {
"Type" : "Task" ,
"Resource" : "arn:aws:lambda:...:check-retraining-needed" ,
"Parameters" : {
"model_name.$" : "$.model_name" ,
"force.$" : "$.force"
},
"Next" : "EvaluateDecision"
},
"EvaluateDecision" : {
"Type" : "Choice" ,
"Choices" : [
{
"Variable" : "$.decision" ,
"StringEquals" : "NEEDS_RETRAINING" ,
"Next" : "TriggerRetraining"
}
],
"Default" : "SkipRetraining"
}
}