Training pipeline stuck on fit method in ml.net

512 views Asked by At

I am trying to build a Chatbot using ML.net. While using model array to train using SdcaMaximumEntropy algorithm to train the model, it got stuck in particular line of code. Here is the console application code,

using System;
using System.Linq;
using Microsoft.ML;
using Microsoft.ML.Data;

namespace mlConsole
{
    class Program
    {
        static MLContext mlContext = new MLContext(seed: 0);
        static ITransformer trainedModel;
        static PredictionEngine<QnAModel, AnswerPrediction> predEngine;
        static IEstimator<ITransformer> pipeline;
        static IDataView dataView;
        public static string TrainedModelPath { get; set; }

        static void Main(string[] args)
        {
            QnAModel[] objQnAModel = new QnAModel[] {
                new QnAModel 
                { 
                    Question = "Do you ever get hurt", 
                    Answer = "I dont't have body" 
                },
                new QnAModel
                {
                    Question = "Do you ever cry",
                    Answer = "I don't have body"
                }
            };
            BuildAndTrainModel(objQnAModel);
        }

        public static void BuildAndTrainModel(QnAModel[] QnAModelCollection)
        {
            if(QnAModelCollection != null && QnAModelCollection.Count() > 0)//(!File.Exists(TrainedModelPath)) 
            {
                dataView = mlContext.Data.LoadFromEnumerable(QnAModelCollection); //mlContext.Data.LoadFromTextFile<QnAModel>(QnAFilePath);
                pipeline = ProcessData();
                var trainingPipeline = pipeline.Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy("Label", "Fetures"))
                                        .Append(mlContext.Transforms.Conversion.MapKeyToValue("PredictedLabel"));

                trainedModel = trainingPipeline.Fit(dataView);
                Console.WriteLine("Success");
                Console.ReadLine();
            }
        }

        private static IEstimator<ITransformer> ProcessData()
        {
            var pipeline = mlContext.Transforms.Conversion.MapValueToKey(inputColumnName: "Answer", outputColumnName: "Label")
                            .Append(mlContext.Transforms.Text.FeaturizeText(inputColumnName:"Question", outputColumnName: "QuestionFeaturized"))
                            .Append(mlContext.Transforms.Concatenate("Fetures", "QuestionFeaturized"))
                            .AppendCacheCheckpoint(mlContext);
            return pipeline;
        }
    }
    public class QnAModel
    {
        [LoadColumn(0)]
        public string Question { get; set; }
        [LoadColumn(1)]
        public string Answer { get; set; }
    }

    public class AnswerPrediction
    {
        [ColumnName("PredictedLabel")]
        public string Answer { get; set; }
    }
}

I have used .net core with Microsoft.ML version 1.5.2 library. It got stuck in below line of code.

trainedModel = trainingPipeline.Fit(dataView);

Can anyone have any idea on this?

0

There are 0 answers