setting unmarshal = FALSE not ensures that all models are in unmarshaled form (resample(), benchmark()). This is just easier to reason about
models are now also marshaled for prediction, i.e. for callr encapsulation and parallel prediction (I made a wrong assumption + somehow did not properly test this assumption)
the marshaling of models for prediction happens automatically during Learner$predict(), but the model will be restored to its state before prediction.
the logic for the marshaling in the worker was refactored and is now much easier to understand
The LearnerClassifDebug now got an argument called check_pid that is FALSE by default. If this is set to TRUE, the unmarshal_model() method for model_classif_debug sets the marshal_pid slot of the model. The private $.predict() method of LearnerClassifDebug then checks that the marhsal_pid is equal to Sys.getpid(). This lets us test that the unmarshaling is executed correctly for the prediction.
Summary:
unmarshal = FALSE
not ensures that all models are in unmarshaled form (resample()
,benchmark()
). This is just easier to reason aboutLearner$predict()
, but the model will be restored to its state before prediction.LearnerClassifDebug
now got an argument calledcheck_pid
that isFALSE
by default. If this is set toTRUE
, theunmarshal_model()
method formodel_classif_debug
sets themarshal_pid
slot of the model. The private$.predict()
method ofLearnerClassifDebug
then checks that themarhsal_pid
is equal toSys.getpid()
. This lets us test that the unmarshaling is executed correctly for the prediction.