Skip to content
/ RTX Public
forked from Starofall/RTX

Realtime experiment framework for self-adaptions in a big data environment

License

Notifications You must be signed in to change notification settings

iliasger/RTX

This branch is 19 commits ahead of, 1 commit behind Starofall/RTX:master.

Folders and files

NameName
Last commit message
Last commit date
Apr 19, 2021
Dec 13, 2022
Mar 22, 2017
Jan 16, 2017
Mar 19, 2021
Feb 8, 2017
Jan 16, 2017
Jan 16, 2017
Dec 14, 2017
Jan 16, 2017
Dec 13, 2022
Mar 19, 2021
Dec 13, 2022

Repository files navigation

Real-Time Experimentation (RTX)

Banner

Description

Real-Time Experimentation (RTX) tool allows for self-adaptation based on analysis of real time (streaming) data. RTX is particularly useful in analyzing operational data in a Big Data environement.

Minimal Setup

  • Download the RTX code
  • Run python setup.py install to download all dependencies
  • To run example experiments, first install CrowdNav
  • To use Spark as a PreProcessor you also need to install Spark and set SPARK_HOME

Getting Started Guide

A first guide is available at this wiki page

Abstractions

RTX has the following abstractions that can be implemented for any given service:

  • PreProcessor - To handle Big Data volumes of data, this is used to reduce the volume
    • Example: Spark
  • DataProviders - A source of data to be used in an experiment
    • Example: KafkaDataProvider, HTTPRequestDataProvider
  • ChangeProviders - Communicates experiment knobs/variables to the target system
    • Example: KafkaChangeProvider, HTTPRequestChangeProvider
  • ExecutionStrategy - Define the process of an experiment
    • Example: Sequential, Gauss-Process-Self-Optimizing, Linear
  • ExperimentDefinition - A experiment is defined in a python file
    • See ./experiment-specification/experiment.py

Supported execution strategies

  • ExperimentsSeq - Runs a list of experiments one after another

    experiments_seq = [
        ...
        {
            "ignore_first_n_results": 100,
            "sample_size": 100,
            "knobs": {
                "exploration_percentage": 0.0
            }
        }
        ...
    ]
    
  • SelfOptimizer - Runs multiple experiments and tries to find the best value for the knobs

    self_optimizer = {
        # Currently only Gauss Process
        "method": "gauss_process",
        # If new changes are not instantly visible, we want to ignore some results after state changes
        "ignore_first_n_results": 1000,
        # How many samples of data to receive for one run
        "sample_size": 1000,
        # The variables to modify
        "knobs": {
            # defines a [from-to] interval that will be used by the optimizer
            "max_speed_and_length_factor": [0.5, 1.5],
            "average_edge_duration_factor": [0.5, 1.5],
        }
    }
    
  • StepExplorer - Goes through the ranges in steps (useful for graphs/heatmaps)

    step_explorer = {
        # If new changes are not instantly visible, we want to ignore some results after state changes
        "ignore_first_n_results": 10,
        # How many samples of data to receive for one run
        "sample_size": 10,
        # The variables to modify
        "knobs": {
            # defines a [from-to] interval and step
            "exploration_percentage": ([0.0, 0.2], 0.1),
            "freshness_cut_off_value": ([100, 400], 100)
        }
    }
    

About

Realtime experiment framework for self-adaptions in a big data environment

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 93.4%
  • Scala 4.5%
  • JavaScript 1.1%
  • Other 1.0%