@@ -218,6 +218,7 @@ def add_model(
218
218
dependent_dir : Optional [str ] = None ,
219
219
commit_message : str = None ,
220
220
project_id : str = None ,
221
+ explainability_tokenizer : Optional [callable ] = None ,
221
222
** kwargs ,
222
223
) -> Model :
223
224
"""Uploads a model to the Unbox platform.
@@ -275,6 +276,12 @@ def add_model(
275
276
is :obj:`ModelType.custom`.
276
277
commit_message : str, default None
277
278
Commit message for this version.
279
+ explainability_tokenizer: callable, default None
280
+ Optional custom tokenizer function that will be used exclusively by the explainability techniques.
281
+ This is **not** the tokenizer used by `function` (in case your `function` has a tokenizer as a kwarg).
282
+ The `explainability_tokenizer` should receive a list of sentences as input and return a list with lists of tokens.
283
+ E.g. `["Hello world", "San Francisco is hot today"]` as input and [["Hello", "world"], ["San Francisco", "is", "hot", "today"]]
284
+ as output.
278
285
**kwargs
279
286
Any additional keyword args you would like to pass to your ``predict_proba`` function.
280
287
@@ -589,6 +596,32 @@ def add_model(
589
596
+ "you may find it useful to debug it on the Jupyter notebook, to ensure it is working correctly before uploading it." ,
590
597
) from None
591
598
599
+ # explainability tokenizer
600
+ if not isinstance (explainability_tokenizer , Callable ):
601
+ raise UnboxValidationError (
602
+ f"- `{ explainability_tokenizer } ` specified as `explainability_tokenizer` is not callable. \n "
603
+ ) from None
604
+
605
+ if model_type != ModelType .custom :
606
+ try :
607
+ if task_type in [TaskType .TextClassification ]:
608
+ test_input = [
609
+ "Unbox is great!" ,
610
+ "Let's see if this function is ready for some error analysis" ,
611
+ ]
612
+ with HidePrints ():
613
+ function (model , test_input , ** kwargs )
614
+ except Exception as e :
615
+ exception_stack = "" .join (
616
+ traceback .format_exception (type (e ), e , e .__traceback__ )
617
+ )
618
+ raise UnboxResourceError (
619
+ context = "There is an issue with the specified `explainability_tokenizer`. \n " ,
620
+ message = f"It is failing with the following error: \n { exception_stack } " ,
621
+ mitigation = "Make sure your `explainability_tokenizer` receives a list of sentences as input and returns a list of lists of tokens "
622
+ + "as output. Additionally, you may find it useful to debug it on the Jupyter notebook, to ensure it is working correctly before uploading it." ,
623
+ ) from None
624
+
592
625
# Transformers resources
593
626
if model_type is ModelType .transformers :
594
627
if "tokenizer" not in kwargs :
0 commit comments