wip - Add Sweepable Pipeline - #5019
Conversation
|
@LittleLittleCloud A method to perform automated hyperparameter tuning outside of using AutoML will be helpful. Was there a reason why you closed the PR? |
@mentorfloat |
|
@mentorfloat: You should be able to use just the hyperparameter optimization of the AutoML code if you either (1) prefeaturizing your dataset, or (2) by specifying an estimator chain as a prefeaturizer in the API call (sample). This will still do the model selection, but you can reduce the search space to only one trainer. E.g. only LightGBM. The main control missing from this method is specifying the exact range of the hyperparameters to search over. Another method for sweeping hyperparamers is using the command-line sweepers in MAML. The code is still in the repo, but I haven't tried if it works. The attached sweeping command (Sweep_SmartSweep.rsp) would be run as: The MAML sweep command is powerful, but exposing with a clean C# interface would be best. |
Allow users to sweep over pre-defined paramaters with similar API of creating/training a pipeline using sweepers defined in
Microsoft.ML.Sweeper.In the current state, only
RandomSweeperandGridSearchSweeperis provided, and other sweepers likeSMACwill be added soon.Right now, only one sweepable trainer is allowed in each pipeline, however, we can support multi-trainer easily with a few lines change.
One of a sample pipeline here, it uses
RandomSweeperover a user-defined paramater set and sweeps over 20 timesmachinelearning/test/Microsoft.ML.AutoML.Tests/AutoEstimatorChainTest.cs
Line 24 in 2ba9ec6
And part of it's Output
Why I create this PR
Auto sweeping parameter is quite a useful feature in Automate ML, AutoML.Net supports it internally but those API is not exposed and sweeping value is fixed, moreover, it only supports a few trainers. It will be great if ML.Net has some external API to allow users to sweep over trainer's parameters on the pipeline level.
What will be next
OptionBaseclass.