microsoft / NimbusML

Python machine learning package providing simple interoperability between ML.NET and scikit-learn components.
Other
282 stars 63 forks source link

Error loading a model that was saved with mlnet auto-train #201

Closed eerhardt closed 5 years ago

eerhardt commented 5 years ago

Describe the bug When using the mlnet auto-train tool to create a model, and then load that model using NimbusML, an exception is being thrown.

To Reproduce Steps to reproduce the behavior:

  1. Run mlnet auto-train --dataset ... --task ... to create an ML.NET .zip model file.
  2. Using NimbusML, attempt to load that model file and score some data like the following:
            pipe = Pipeline() 
            pipe.load_model(model_file_name)

            test_df = pd.read_csv(test_file_name)

            scores = pipe.predict(test_df, verbose=100)

Expected behavior Loading and scoring the model should work as expected.

Actual behavior You get an exception and scoring is not completed:

System.InvalidOperationException: Repository doesn't contain entry DataLoaderModel\Model.key
   at Microsoft.ML.RepositoryReader.OpenEntry(String dir, String name)

    Microsoft.ML.Core.dll!Microsoft.ML.RepositoryReader.OpenEntry(string dir, string name) Line 486 C#
>   Microsoft.ML.Data.dll!Microsoft.ML.Model.ModelFileUtils.LoadPipeline(Microsoft.ML.Runtime.IHostEnvironment env, Microsoft.ML.RepositoryReader rep, Microsoft.ML.Data.IMultiStreamSource files, bool extractInnerPipe) Line 66   C#
    Microsoft.ML.Data.dll!Microsoft.ML.Model.ModelFileUtils.LoadPipeline(Microsoft.ML.Runtime.IHostEnvironment env, System.IO.Stream modelStream, Microsoft.ML.Data.IMultiStreamSource files, bool extractInnerPipe) Line 49    C#
    Microsoft.ML.Data.dll!Microsoft.ML.EntryPoints.TransformModelImpl.TransformModelImpl(Microsoft.ML.Runtime.IHostEnvironment env, System.IO.Stream stream) Line 116   C#
    Microsoft.ML.Data.dll!Microsoft.ML.EntryPoints.PredictorModelImpl.PredictorModelImpl(Microsoft.ML.Runtime.IHostEnvironment env, System.IO.Stream stream) Line 49    C#
    DotNetBridge.dll!Microsoft.MachineLearning.DotNetBridge.Bridge.RunGraphCore(Microsoft.MachineLearning.DotNetBridge.Bridge.EnvironmentBlock* penv, Microsoft.ML.Runtime.IHostEnvironment env, string graphStr, int cdata, Microsoft.MachineLearning.DotNetBridge.Bridge.DataSourceBlock** ppdata)    Unknown
    DotNetBridge.dll!Microsoft.MachineLearning.DotNetBridge.Bridge.ExecCore(Microsoft.MachineLearning.DotNetBridge.Bridge.EnvironmentBlock* penv, Microsoft.ML.Runtime.IHost host, Microsoft.ML.Runtime.IChannel ch, string graph, int cdata, Microsoft.MachineLearning.DotNetBridge.Bridge.DataSourceBlock** ppdata)   Unknown
    DotNetBridge.dll!Microsoft.MachineLearning.DotNetBridge.Bridge.GenericExec(Microsoft.MachineLearning.DotNetBridge.Bridge.EnvironmentBlock* penv, sbyte* psz, int cdata, Microsoft.MachineLearning.DotNetBridge.Bridge.DataSourceBlock** ppdata) Unknown

Desktop (please complete the following information):

Additional context Add any other context about the problem here.

/cc @justinormont @ganik @artidoro

ganik commented 5 years ago

@najeeb-kazmi could you look into this issue pls. thx