@@ -264,37 +264,52 @@ fn train_joint(
264
264
) ;
265
265
266
266
let mut deploy = true ;
267
+
267
268
match automatic_deploy {
268
269
// Deploy only if metrics are better than previous model.
269
270
Some ( true ) | None => {
270
271
if let Ok ( Some ( deployed_metrics) ) = deployed_metrics {
271
- let deployed_metrics = deployed_metrics. 0 . as_object ( ) . unwrap ( ) ;
272
- let deployed_metric = deployed_metrics
273
- . get ( & project. task . default_target_metric ( ) )
274
- . unwrap ( )
275
- . as_f64 ( )
276
- . unwrap ( ) ;
277
- info ! (
278
- "Comparing to deployed model {}: {:?}" ,
279
- project. task. default_target_metric( ) ,
280
- deployed_metric
281
- ) ;
282
- if project. task . value_is_better (
283
- deployed_metric,
284
- new_metrics
285
- . get ( & project. task . default_target_metric ( ) )
286
- . unwrap ( )
287
- . as_f64 ( )
288
- . unwrap ( ) ,
289
- ) {
272
+ if let Some ( deployed_metrics_obj) = deployed_metrics. 0 . as_object ( ) {
273
+ let default_target_metric = project. task . default_target_metric ( ) ;
274
+ let deployed_metric = deployed_metrics_obj
275
+ . get ( & default_target_metric)
276
+ . and_then ( |v| v. as_f64 ( ) ) ;
277
+ info ! (
278
+ "Comparing to deployed model {}: {:?}" ,
279
+ default_target_metric, deployed_metric
280
+ ) ;
281
+ if let ( Some ( deployed_metric_value) , Some ( new_metric_value) ) = (
282
+ deployed_metric,
283
+ new_metrics. get ( & default_target_metric) . and_then ( |v| v. as_f64 ( ) ) ,
284
+ ) {
285
+ if project. task . value_is_better ( deployed_metric_value, new_metric_value) {
286
+ warning ! (
287
+ "New model's {} is not better than old model: {} is not better than {}" ,
288
+ & project. task. default_target_metric( ) ,
289
+ new_metric_value,
290
+ deployed_metric_value
291
+ ) ;
292
+ deploy = false ;
293
+ }
294
+ } else {
295
+ warning ! ( "Failed to retrieve or parse deployed/new metrics for {}. Ensure train/test split results in both positive and negative label records." ,
296
+ & project. task. default_target_metric( ) ) ;
297
+ deploy = false ;
298
+ }
299
+ } else {
300
+ warning ! ( "Failed to parse deployed model metrics. Ensure train/test split results in both positive and negative label records." ) ;
290
301
deploy = false ;
291
302
}
303
+ } else {
304
+ warning ! ( "Failed to obtain currently deployed model metrics. Check if the deployed model metrics are available and correctly formatted." ) ;
305
+ deploy = false ;
292
306
}
293
307
}
294
-
295
- Some ( false ) => deploy = false ,
308
+ Some ( false ) => {
309
+ warning ! ( "Automatic deployment disabled via configuration." ) ;
310
+ deploy = false ;
311
+ }
296
312
} ;
297
-
298
313
if deploy {
299
314
project. deploy ( model. id , Strategy :: new_score) ;
300
315
} else {
0 commit comments