def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) # evaluation specific variables self.observation_seen = 0 self.episode_reward = 0 self.checkpoint_steps = config['checkpoint_steps'] self._incomplete_experiences = TTLCache(InMemoryStorage()) self._incomplete_experiences.expired_entry_callback(self._observe_expired_incomplete_experience) self.experimental_reward = config.get('experimental_reward', False) agent_config = config['agent_config'] self.converter = CachingStrategyRLConverter() # action space: should cache: true or false # state space: [capacity (1), query key(1), query result set(num_indexes)] fields_in_state = len(CachingAgentSystemState.__slots__) self.agent = Agent.from_spec(agent_config, state_space=FloatBox(shape=(fields_in_state,)), action_space=IntBox(2)) self.logger = logging.getLogger(__name__) name = 'rl_caching_strategy' self.reward_logger = create_file_logger(name=f'{name}_reward_logger', result_dir=self.result_dir) self.loss_logger = create_file_logger(name=f'{name}_loss_logger', result_dir=self.result_dir) self.observation_logger = create_file_logger(name=f'{name}_observation_logger', result_dir=self.result_dir) self.entry_hits_logger = create_file_logger(name=f'{name}_entry_hits_logger', result_dir=self.result_dir) self.key_vocab = Vocabulary()
def __init__(self, observers: List[Observer], results_dir: str, cache_stats: CacheInformation): self.observers = observers self.episode_num = 0 self.cache_stats = cache_stats self.evaluation_logger = create_file_logger(result_dir=results_dir, name='evaluation_logger') self.end_of_episode_logger = create_file_logger( result_dir=results_dir, name='end_of_episode_logger')
def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) name = 'read_write_caching_strategy' self.observation_logger = create_file_logger( name=f'{name}_observation_logger', result_dir=self.result_dir) self.entry_hits_logger = create_file_logger( name=f'{name}_entry_hits_logger', result_dir=self.result_dir) self.observed_entries = {}
def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) self.supported_observations = { ObservationType.Hit, ObservationType.Miss, ObservationType.Invalidate } # evaluation specific variables self.observation_seen = 0 self.cum_reward = 0 self.checkpoint_steps = config['checkpoint_steps'] self._incomplete_experiences = TTLCache(InMemoryStorage()) self._incomplete_experiences.expired_entry_callback( self._observe_expiry_eviction) self.non_terminal_observations = { ObservationType.EvictionPolicy, ObservationType.Expiration } agent_config = config['agent_config'] self.maximum_ttl = config['max_ttl'] fields_in_state = len(MultiTaskAgentSystemState.__slots__) action_space = RLDict({ 'ttl': IntBox(low=0, high=self.maximum_ttl), 'eviction': IntBox(low=0, high=2) }) self.agent = Agent.from_spec( agent_config, state_space=FloatBox(shape=(fields_in_state, )), action_space=action_space) # TODO refactor into common RL interface for all strategies self.logger = logging.getLogger(__name__) name = 'rl_multi_strategy' self.reward_logger = create_file_logger(name=f'{name}_reward_logger', result_dir=self.result_dir) self.loss_logger = create_file_logger(name=f'{name}_loss_logger', result_dir=self.result_dir) self.ttl_logger = create_file_logger(name=f'{name}_ttl_logger', result_dir=self.result_dir) self.observation_logger = create_file_logger( name=f'{name}_observation_logger', result_dir=self.result_dir) self.performance_logger = create_file_logger( name=f'{name}_performance_logger', result_dir=self.result_dir) self.key_vocab = Vocabulary()
def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) self.ttl = self.config['ttl'] name = 'fixed_strategy' self.ttl_logger = create_file_logger(name=f'{name}_ttl_logger', result_dir=self.result_dir) self.observed_keys = {}
def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) self.lru = OrderedDict() self.logger = logging.getLogger(__name__) name = 'lru_eviction_strategy' self.performance_logger = create_file_logger( name=f'{name}_performance_logger', result_dir=result_dir) self._incomplete_experiences = TTLCache(InMemoryStorage()) self._incomplete_experiences.expired_entry_callback( self._observe_expired_incomplete_experience)
def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) # evaluation specific variables self.observation_seen = 0 self.episode_reward = 0 self.checkpoint_steps = config['checkpoint_steps'] self._incomplete_experiences = TTLCache(InMemoryStorage()) self._incomplete_experiences.expired_entry_callback( self._observe_expired_incomplete_experience) self.view_of_the_cache = {} # type: Dict[str, Dict[str, any]] self._end_episode_observation = { ObservationType.Invalidate, ObservationType.Miss, ObservationType.Expiration } # TODO refactor into common RL interface for all strategies # Agent configuration (can be shared with others) agent_config = config['agent_config'] fields_in_state = len(EvictionAgentSystemState.__slots__) self.converter = EvictionStrategyRLConverter(self.result_dir) # State: fields to observe in question # Action: to evict or not that key self.agent = Agent.from_spec( agent_config, state_space=FloatBox(shape=(fields_in_state, )), action_space=IntBox(low=0, high=2)) self.logger = logging.getLogger(__name__) name = 'rl_eviction_strategy' self.reward_logger = create_file_logger(name=f'{name}_reward_logger', result_dir=self.result_dir) self.loss_logger = create_file_logger(name=f'{name}_loss_logger', result_dir=self.result_dir) self.observation_logger = create_file_logger( name=f'{name}_observation_logger', result_dir=self.result_dir) self.key_vocab = Vocabulary()
def __init__(self, config: Dict[str, any], result_dir: str, cache_stats: CacheInformation): super().__init__(config, result_dir, cache_stats) self.observation_seen = 0 self.cum_reward = 0 self.checkpoint_steps = config['checkpoint_steps'] self._incomplete_experiences = TTLCache(InMemoryStorage()) self._incomplete_experiences.expired_entry_callback( self._observe_expiry_eviction) self.non_terminal_observations = { ObservationType.EvictionPolicy, ObservationType.Expiration } agent_config = config['agent_config'] self.maximum_ttl = config['max_ttl'] self.experimental_reward = config.get('experimental_reward', False) fields_in_state = len(TTLAgentSystemState.__slots__) self.agent = Agent.from_spec( agent_config, state_space=FloatBox(shape=(fields_in_state, )), action_space=FloatBox(low=0, high=self.maximum_ttl, shape=(1, ))) # TODO refactor into common RL interface for all strategies self.logger = logging.getLogger(__name__) name = 'rl_ttl_strategy' self.reward_logger = create_file_logger(name=f'{name}_reward_logger', result_dir=self.result_dir) self.loss_logger = create_file_logger(name=f'{name}_loss_logger', result_dir=self.result_dir) self.ttl_logger = create_file_logger(name=f'{name}_ttl_logger', result_dir=self.result_dir) self.observation_logger = create_file_logger( name=f'{name}_observation_logger', result_dir=self.result_dir) self.key_vocab = Vocabulary() self.errors = create_file_logger(name=f'{name}_error_logger', result_dir=self.result_dir)
def __init__(self, result_dir: str): self.vocabulary = Vocabulary(add_pad=True, add_unk=False) self.logger = logging.getLogger(__name__) name = 'rl_eviction_strategy' self.performance_logger = create_file_logger( name=f'{name}_performance_logger', result_dir=result_dir)