[POC] Implement callback for dask. #5612
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Proof of concept implementation for dask training callback. As it is not consistent with single node implementation, this is an early PR for review and discussion.
The rational behind a new style of callback function is that, the original one is modelled after R implementation. The R impl uses language environment for storing states, while Python doesn't have such facility so the original callback creates an artificial one to be consistent with R. I believe the new style is cleaner, native to Python, and easier customize. With the new interface, #5238 and #5495 can be easily implemented.
To provide a short introduction to new callback function, here is its interface:
All the other callbacks is sub-class of this
Callback
. This interface is suitable for both single node and distributed training. Function return value is whether training should be stopped,False
if not. By using a return value, we can deprecateEarlyStopException
, which is created for one particular callback.To-dos:
Callback
can be a wrapper of original callback, I need to port the implementation to non-dask training.Future plan
If the new design is approved, I would like to deprecate the following parameters:
fit
functioneval_set
,eval_metric
,early_stopping_rounds
,verbose
,sample_weight_eval_set
,train
functionevals
,feval
,maximize
,early_stopping_rounds
,evals_result
,verbose_eval=True
Related:
#4955
#3822