Exemple #1
0
        public void TestMultiActionOfflineModeArgument()
        {
            var metaData = new ApplicationClientMetadata
            {
                TrainArguments            = "--cb_explore_adf --epsilon 0.3",
                InitialExplorationEpsilon = 1f
            };

            using (var ds = DecisionService.CreateJson(
                       new DecisionServiceConfiguration("")
            {
                OfflineMode = true, OfflineApplicationID = ""
            },
                       metaData))
            {
                ds.ChooseAction("", "{}");
            }
        }
Exemple #2
0
        public async Task InitialFullExplorationTest()
        {
            var recorder = new MyRecorder();

            using (var model = new MemoryStream())
            {
                using (var vw = new VowpalWabbit("--cb_explore_adf --epsilon 0.3"))
                {
                    vw.Learn(new[] { "1:-3:0.2 | b:2" });
                    vw.ID = "123";
                    vw.SaveModel(model);
                }

                var config = new DecisionServiceConfiguration("")
                {
                    OfflineMode = true, OfflineApplicationID = "", DevelopmentMode = true
                };
                var metaData = new ApplicationClientMetadata
                {
                    TrainArguments            = "--cb_explore_adf --epsilon 0.3",
                    InitialExplorationEpsilon = 1f
                };

                using (var ds = DecisionService.CreateJson(config, metaData: metaData).WithRecorder(recorder))
                {
                    var decision = await ds.ChooseRankingAsync("abc", "{\"a\":1,\"_multi\":[{\"b\":2}]}");

                    // since there's not a model loaded why should get 100% exploration
                    // Assert.AreEqual(1f, recorder.LastExplorerState.Probability);

                    model.Position = 0;
                    ds.UpdateModel(model);

                    decision = await ds.ChooseRankingAsync("abc", "{\"a\":1,\"_multi\":[{\"b\":2}, {\"b\":3}]}");

                    // Assert.AreNotEqual(1f, recorder.LastExplorerState.Probability);

                    var vwState = recorder.LastMapperState as VWState;
                    Assert.IsNotNull(vwState);
                    Assert.AreEqual("123", vwState.ModelId);
                }
            }
        }
Exemple #3
0
        public static void Initialize(string settingsUrl)
        {
            var telemetry = new TelemetryClient();

            var config = new DecisionServiceConfiguration(settingsUrl)
            {
                InteractionUploadConfiguration = new BatchingConfiguration
                {
                    MaxDuration       = TimeSpan.FromSeconds(2),
                    UploadRetryPolicy = BatchUploadRetryPolicy.ExponentialRetry
                },
                ModelPollFailureCallback = e => telemetry.TrackException(e, new Dictionary <string, string> {
                    { "Pool failure", "model" }
                }),
                SettingsPollFailureCallback = e => telemetry.TrackException(e, new Dictionary <string, string> {
                    { "Pool failure", "settings" }
                }),
                // AzureStorageConnectionString = ConfigurationManager.AppSettings[ApplicationMetadataStore.AKConnectionString]
            };

            client = DecisionService.CreateJson(config);
        }
        public static DecisionServiceClient <string> AddOrGetExisting(Action <byte[]> modelSuccessNotifier)
        {
            return(DecisionServiceStaticClient.AddOrGetExisting("single", _ =>
            {
                var telemetry = new TelemetryClient();
                string azureStorageConnectionString = ConfigurationManager.AppSettings[ApplicationMetadataStore.AKConnectionString];

                var storageAccount = CloudStorageAccount.Parse(azureStorageConnectionString);
                var blobClient = storageAccount.CreateCloudBlobClient();
                var settingsBlobContainer = blobClient.GetContainerReference(ApplicationBlobConstants.SettingsContainerName);
                var clientSettingsBlob = settingsBlobContainer.GetBlockBlobReference(ApplicationBlobConstants.LatestClientSettingsBlobName);

                //var settingsUrl = clientSettingsBlob.StorageUri.PrimaryUri.ToString();
                var settingsUrl = APIUtil.GetSettingsUrl();

                telemetry.TrackEvent($"DecisionServiceClient created: '{settingsUrl}'");

                var config = new DecisionServiceConfiguration(settingsUrl)
                {
                    InteractionUploadConfiguration = new BatchingConfiguration
                    {
                        MaxDuration = TimeSpan.FromSeconds(2),
                        UploadRetryPolicy = BatchUploadRetryPolicy.ExponentialRetry
                    },
                    ModelPollSuccessCallback = modelSuccessNotifier,
                    ModelPollFailureCallback = e => telemetry.TrackException(e, new Dictionary <string, string> {
                        { "Pool failure", "model" }
                    }),
                    SettingsPollFailureCallback = e => telemetry.TrackException(e, new Dictionary <string, string> {
                        { "Pool failure", "settings" }
                    }),
                    AzureStorageConnectionString = ConfigurationManager.AppSettings[ApplicationMetadataStore.AKConnectionString]
                };

                return DecisionService.CreateJson(config);
            }));
        }
 public static DecisionServiceClient <string> AddOrGetExisting(string settingsUrl)
 {
     return(DecisionServiceStaticClient.AddOrGetExisting(settingsUrl, _ => DecisionService.CreateJson(CreateConfiguration(settingsUrl))));
 }