@@ -405,20 +405,22 @@ def default_extractors( # pylint: disable=invalid-name
405
405
Raises:
406
406
NotImplementedError: If eval_config contains mixed serving and eval models.
407
407
"""
408
+ if slice_spec and eval_config :
409
+ raise ValueError ('slice_spec is deprecated, only use eval_config' )
408
410
if eval_config is not None :
409
411
eval_config = _update_eval_config_with_defaults (eval_config ,
410
412
eval_shared_model )
411
- slice_spec = [
412
- slicer .SingleSliceSpec (spec = spec ) for spec in eval_config .slicing_specs
413
- ]
414
413
415
414
if _is_legacy_eval (eval_shared_model , eval_config ):
416
415
# Backwards compatibility for previous add_metrics_callbacks implementation.
416
+ if not eval_config and slice_spec :
417
+ eval_config = config .EvalConfig (
418
+ slicing_specs = [s .to_proto () for s in slice_spec ])
417
419
return [
418
420
predict_extractor .PredictExtractor (
419
421
eval_shared_model , materialize = materialize ),
420
422
slice_key_extractor .SliceKeyExtractor (
421
- slice_spec , materialize = materialize )
423
+ eval_config = eval_config , materialize = materialize )
422
424
]
423
425
elif eval_shared_model :
424
426
model_types = _model_types (eval_shared_model )
@@ -435,7 +437,7 @@ def default_extractors( # pylint: disable=invalid-name
435
437
tflite_predict_extractor .TFLitePredictExtractor (
436
438
eval_config = eval_config , eval_shared_model = eval_shared_model ),
437
439
slice_key_extractor .SliceKeyExtractor (
438
- slice_spec , materialize = materialize )
440
+ eval_config = eval_config , materialize = materialize )
439
441
]
440
442
elif constants .TF_LITE in model_types :
441
443
raise NotImplementedError (
@@ -451,7 +453,7 @@ def default_extractors( # pylint: disable=invalid-name
451
453
materialize = materialize ,
452
454
eval_config = eval_config ),
453
455
slice_key_extractor .SliceKeyExtractor (
454
- slice_spec , materialize = materialize )
456
+ eval_config = eval_config , materialize = materialize )
455
457
]
456
458
elif (eval_config and constants .TF_ESTIMATOR in model_types and
457
459
any (eval_constants .EVAL_TAG in m .model_loader .tags
@@ -470,15 +472,15 @@ def default_extractors( # pylint: disable=invalid-name
470
472
tensor_adapter_config = tensor_adapter_config ),
471
473
unbatch_extractor .UnbatchExtractor (),
472
474
slice_key_extractor .SliceKeyExtractor (
473
- slice_spec , materialize = materialize )
475
+ eval_config = eval_config , materialize = materialize )
474
476
]
475
477
else :
476
478
return [
477
479
input_extractor .InputExtractor (eval_config = eval_config ),
478
480
predict_extractor_v2 .PredictExtractor (
479
481
eval_config = eval_config , eval_shared_model = eval_shared_model ),
480
482
slice_key_extractor .SliceKeyExtractor (
481
- slice_spec , materialize = materialize )
483
+ eval_config = eval_config , materialize = materialize )
482
484
]
483
485
else :
484
486
if enable_batched_extractors :
@@ -487,13 +489,13 @@ def default_extractors( # pylint: disable=invalid-name
487
489
eval_config = eval_config ),
488
490
unbatch_extractor .UnbatchExtractor (),
489
491
slice_key_extractor .SliceKeyExtractor (
490
- slice_spec , materialize = materialize )
492
+ eval_config = eval_config , materialize = materialize )
491
493
]
492
494
else :
493
495
return [
494
496
input_extractor .InputExtractor (eval_config = eval_config ),
495
497
slice_key_extractor .SliceKeyExtractor (
496
- slice_spec , materialize = materialize )
498
+ eval_config = eval_config , materialize = materialize )
497
499
]
498
500
499
501
@@ -1117,6 +1119,7 @@ def single_model_analysis(
1117
1119
model_location : Text ,
1118
1120
data_location : Text ,
1119
1121
output_path : Text = None ,
1122
+ eval_config : Optional [config .EvalConfig ] = None ,
1120
1123
slice_spec : Optional [List [slicer .SingleSliceSpec ]] = None
1121
1124
) -> view_types .EvalResult :
1122
1125
"""Run model analysis for a single model on a single data set.
@@ -1130,7 +1133,8 @@ def single_model_analysis(
1130
1133
data_location: The location of the data files.
1131
1134
output_path: The directory to output metrics and results to. If None, we use
1132
1135
a temporary directory.
1133
- slice_spec: A list of tfma.slicer.SingleSliceSpec.
1136
+ eval_config: Eval config.
1137
+ slice_spec: Deprecated (use EvalConfig).
1134
1138
1135
1139
Returns:
1136
1140
An EvalResult that can be used with the TFMA visualization functions.
@@ -1141,8 +1145,11 @@ def single_model_analysis(
1141
1145
if not tf .io .gfile .exists (output_path ):
1142
1146
tf .io .gfile .makedirs (output_path )
1143
1147
1144
- eval_config = config .EvalConfig (
1145
- slicing_specs = [s .to_proto () for s in slice_spec ])
1148
+ if slice_spec and eval_config :
1149
+ raise ValueError ('slice_spec is deprecated, only use eval_config' )
1150
+ if slice_spec :
1151
+ eval_config = config .EvalConfig (
1152
+ slicing_specs = [s .to_proto () for s in slice_spec ])
1146
1153
1147
1154
return run_model_analysis (
1148
1155
eval_config = eval_config ,
0 commit comments