dotnet / dotnet/machinelearning
Cannot access internal method 'MLContext.CancelExecution()'
- Dominant language
- C#
- Stars
- 9.4k
- Forks
- 2k
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 11
Description
I have a memory leak issue, and find this similar issue, but `CancelExecution` in internal.
[BestFriend]
internal void CancelExecution() => ((ICancelable) this._env).CancelExecution();
full code
MLContext context = new MLContext();
bool useGpu = false;
OnnxScoringEstimator pipeline = context.Transforms.ApplyOnnxModel(
modelFile: _modelInfo.ModelPath,
shapeDictionary: shape.ToDictionary(),
inputColumnNames: new[] { ColumnNames.Input.InputIds, ColumnNames.Input.AttentionMask, },
outputColumnNames: new[] { ColumnNames.Output.LastHiddenState, },
gpuDeviceId: useGpu ? 0 : (int?)null,
fallbackToCpu: true
);
var inputSchemaDef = ToInputSchemaDefinition(shape);
var trainingDataView = context.Data.LoadFromEnumerable(new List() { }, inputSchemaDef);
using var transformer = pipeline.Fit(trainingDataView);
var outputSchemaDef = ToOutputSchemaDefinition(shape);
using var predictionEngine = context.Model.CreatePredictionEngine(transformer, inputSchemaDefinition: inputSchemaDef, outputSchemaDefinition: outputSchemaDef);
var predictionResult = predictionEngine.Predict(inputData);
@fischja It could be the last trial still running even after automl experiment times out, could you try cancelling context and run again
```csharp
for (int i = 0; i < 5; i++)
{
MLContext ml = new MLContext();
List trainingDataList = Enumerable.Range(0, 10000).Select(x => new MyData()).ToList();
IDataView trainingData = ml.Data.LoadFromEnumerable(trainingDataList);
var result = ml
.Auto()
.CreateRegressionExperiment(maxExperimentTimeInSeconds: 20)
.Execute(trainData: trainingData, numberOfCVFolds: 3, labelColumnName: "Y");
ml.CancelExecution();
}
```
_Originally posted by @LittleLittleCloud in https://github.com/dotnet/machinelearning/issues/6188#issuecomment-1121407624_
Contributor guide
Assessment
This issue has not been assessed yet.