Ejemplo n.º 1
0
        /// <summary>
        /// Enable model monitoring for the <see cref="IModelStorageProvider"/>.
        /// Overrides the default model storage provider.
        /// </summary>
        /// <typeparam name="TData"></typeparam>
        /// <typeparam name="TPrediction"></typeparam>
        /// <param name="builder"></param>
        /// <param name="storageName">The name of the ML model in the storage provider.</param>
        /// <param name="modelStorageProvider">The model storage provider. The default model storage provider is <see cref="InMemoryModelStorageProvider"/>.</param>
        /// <returns></returns>
        public static IModelPredictionEngineBuilder <TData, TPrediction> WithStorageProvider <TData, TPrediction>(
            this IModelPredictionEngineBuilder <TData, TPrediction> builder,
            string storageName,
            IModelStorageProvider modelStorageProvider = null)
            where TData : class where TPrediction : class, new()
        {
            builder.Services.Configure(builder.ModelName, (Action <ModelPredictionEngineOptions <TData, TPrediction> >)((mlOptions) =>
            {
                mlOptions.CreateModel = (mlContext) =>
                {
                    if (modelStorageProvider == null)
                    {
                        modelStorageProvider = new InMemoryModelStorageProvider();
                    }

                    ChangeToken.OnChange(
                        () => modelStorageProvider.GetReloadToken(),
                        () => mlOptions.Reload());

                    return(GetTransfomer(storageName, mlContext, modelStorageProvider));
                };
            }));

            return(builder);
        }
Ejemplo n.º 2
0
 public ModelBuilderService(
     IModelCreationBuilder <TInput, TOutput, TResult> modelBuilder,
     IModelStorageProvider storageProvider,
     ILogger logger)
 {
     _modelBuilder    = modelBuilder ?? throw new ArgumentNullException(nameof(modelBuilder));
     _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
     _logger          = logger ?? throw new ArgumentNullException(nameof(logger));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="SpamModelBuilderService"/> class.
        /// </summary>
        /// <param name="spamModelBuilder"></param>
        /// <param name="storageProvider"></param>
        /// <param name="logger"></param>
        public SpamModelBuilderService(
            IModelCreationBuilder <SpamInput, SpamPrediction, MulticlassClassificationFoldsAverageMetricsResult> spamModelBuilder,
            IModelStorageProvider storageProvider,
            ILogger logger) : base(spamModelBuilder, storageProvider, logger)
        {
            _logger          = logger ?? throw new ArgumentNullException(nameof(logger));
            _modelBuilder    = spamModelBuilder ?? throw new ArgumentNullException(nameof(spamModelBuilder));
            _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));

            Name = nameof(SpamModelBuilderService);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SentimentModelBuilderService"/> class.
        /// </summary>
        /// <param name="sentimentModelBuilder"></param>
        /// <param name="storageProvider"></param>
        /// <param name="logger"></param>
        public SentimentModelBuilderService(
            IModelCreationBuilder <SentimentIssue, SentimentPrediction, BinaryClassificationMetricsResult> sentimentModelBuilder,
            IModelStorageProvider storageProvider,
            ILogger logger) : base(sentimentModelBuilder, storageProvider, logger)
        {
            _modelBuilder    = sentimentModelBuilder ?? throw new ArgumentNullException(nameof(sentimentModelBuilder));
            _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider));
            _logger          = logger ?? throw new ArgumentNullException(nameof(logger));

            Name = nameof(SentimentModelBuilderService);
        }
Ejemplo n.º 5
0
        private static ITransformer GetTransfomer(string storageName, ML.MLContext mlContext, IModelStorageProvider storage)
        {
            var model       = storage.LoadModelAsync(storageName, CancellationToken.None).GetAwaiter().GetResult();
            var transformer = mlContext.Model.Load(model, out var inputSchema);

            return(transformer);
        }
        /// <summary>
        /// Adds ML.NET based Sentiment model builder with <see cref="FileModelStorageProvider"/> as storage.
        /// </summary>
        /// <param name="services">The DI services.</param>
        /// <param name="modelStorageProvider">The model storage provider.</param>
        /// <returns></returns>
        public static IServiceCollection AddSentimentModelBuilder(this IServiceCollection services, IModelStorageProvider modelStorageProvider = null)
        {
            services.TryAddSingleton(new MLContext());

            if (modelStorageProvider == null)
            {
                modelStorageProvider = new FileModelStorageProvider();
            }

            services.TryAddScoped <IModelCreationBuilder <SentimentIssue, SentimentPrediction, BinaryClassificationMetricsResult>, SentimentModelBuilder>();
            services.AddScoped <IModelBuilderService, SentimentModelBuilderService>((sp) =>
            {
                var builder = sp.GetRequiredService <IModelCreationBuilder <SentimentIssue, SentimentPrediction, BinaryClassificationMetricsResult> >();
                var logger  = sp.GetRequiredService <ILogger <SentimentModelBuilderService> >();

                return(new SentimentModelBuilderService(builder, modelStorageProvider, logger));
            });

            return(services);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Adds ML.NET based Spam detection model builder with <see cref="FileModelStorageProvider"/> as storage.
        /// </summary>
        /// <param name="services">The DI services.</param>
        /// <param name="modelStorageProvider">The model storage provider.</param>
        /// <returns></returns>
        public static IServiceCollection AddSpamDetectionModelBuilder(this IServiceCollection services, IModelStorageProvider modelStorageProvider = null)
        {
            services.TryAddSingleton(new MLContext());

            if (modelStorageProvider == null)
            {
                modelStorageProvider = new FileModelStorageProvider();
            }

            services.TryAddScoped <IModelCreationBuilder <SpamInput, SpamPrediction, MulticlassClassificationFoldsAverageMetricsResult>, SpamModelBuilder>();

            services.AddScoped <IModelBuilderService, SpamModelBuilderService>((sp) =>
            {
                var builder = sp.GetRequiredService <IModelCreationBuilder <SpamInput, SpamPrediction, MulticlassClassificationFoldsAverageMetricsResult> >();
                var logger  = sp.GetRequiredService <ILogger <SpamModelBuilderService> >();

                return(new SpamModelBuilderService(builder, modelStorageProvider, logger));
            });

            return(services);
        }