public async Task AutoMLExperiment_return_current_best_trial_when_ct_is_canceled_with_trial_completed_Async() { var context = new MLContext(1); var pipeline = context.Transforms.Concatenate("Features", "Features") .Append(context.Auto().Regression()); var dummyTrainer = new DummyTrialRunner(context, 1); var experiment = context.Auto().CreateExperiment(); experiment.SetPipeline(pipeline) .SetDataset(GetDummyData(), 10) .SetEvaluateMetric(RegressionMetric.RootMeanSquaredError, "Label") .SetTrainingTimeInSeconds(100) .SetTrialRunner(dummyTrainer); var cts = new CancellationTokenSource(); context.Log += (o, e) => { if (e.RawMessage.Contains("Update Completed Trial")) { cts.CancelAfter(100); } }; var res = await experiment.RunAsync(cts.Token); res.Metric.Should().BeGreaterThan(0); }
public async Task AutoMLExperiment_throw_timeout_exception_when_ct_is_canceled_and_no_trial_completed_Async() { var context = new MLContext(1); var pipeline = context.Transforms.Concatenate("Features", "Features") .Append(context.Auto().Regression()); var dummyTrainer = new DummyTrialRunner(context, 5); var experiment = context.Auto().CreateExperiment(); experiment.SetPipeline(pipeline) .SetDataset(GetDummyData(), 10) .SetEvaluateMetric(RegressionMetric.RootMeanSquaredError, "Label") .SetTrainingTimeInSeconds(1) .SetTrialRunner(dummyTrainer); var cts = new CancellationTokenSource(); context.Log += (o, e) => { if (e.RawMessage.Contains("Update Running Trial")) { cts.Cancel(); } }; var runExperimentAction = async() => await experiment.RunAsync(cts.Token); await runExperimentAction.Should().ThrowExactlyAsync <TimeoutException>(); }
public async Task AutoMLExperiment_finish_training_when_time_is_up_Async() { var context = new MLContext(1); var pipeline = context.Transforms.Concatenate("Features", "Features") .Append(context.Auto().Regression()); var dummyTrainer = new DummyTrialRunner(context, 1); var experiment = context.Auto().CreateExperiment(); experiment.SetPipeline(pipeline) .SetDataset(GetDummyData(), 10) .SetEvaluateMetric(RegressionMetric.RootMeanSquaredError, "Label") .SetTrainingTimeInSeconds(5) .SetTrialRunner(dummyTrainer); var cts = new CancellationTokenSource(); cts.CancelAfter(10 * 1000); var res = await experiment.RunAsync(cts.Token); res.Metric.Should().BeGreaterThan(0); cts.IsCancellationRequested.Should().BeFalse(); }