gym environment simulating file cache.
Project description
gym-cache
OpenAI based Gym environments for training RL caching agent
install it:
pip install gym-cache
import it like this:
import gym
gym.make('gym_cache:Cache-v0')
observation space has following variables:
- six tokens (integers)
- file size [kB]
- how full is the cache at that moment
There are two discrete action environments (Cache-v0 and Cache-large-v0) and one continuous action environment (Cache-continuous-v0).
Data extractions and preprocessing
This is a two step procedure:
- extract raw data data/extract_data.py - change PQ, date range
- process raw data data/process_data.py - tokenizes filenames, generates unique fileIDs, sorts by access time.
Processed data should be copied to the directory where actor runs. It is a parque file (.pa) with one dataframe:
- index - access time (sorted)
- six tokens derived from the filename ('1', '2', '3', '4', '5', '6')
- filesize ('kB')
- unique file identifier ('fID')
Rewards
- always negative and correspond to cost to get the file - if it was cached it will be smaller
- files are cached irrespectively from what action actor performed for the file
- cleanup: environment memorizes actions. on cleanup it first deletes files judged not to be needed again (action 0 in discrete environments or smaller values in continues environment). If multiple files have the same action value, LRU one is removed first.
Possible technical implementation in XCache server
- There are additional containers in the pod.
- environment container
- recieves gstream pfc, and disk info
- recalculates new state, reward, tokenizes recieved gstream info.
- memorizes last state, actors actions for each file
- triggers cleanup at lower HWM then xcache itself. Loops through memorized paths and removes ones least probably needed.
- redis db - used by environment container to store actor responses
- actor container
- environment container
Miscalenious
To change environments:
- clone github repository
- make changes
- install locally:
python -m pip install --user -e .
orpython setup.py bdist_wheel python -m pip install dist\gym_cache-1.0.1-py3-none-any.whl
- to upload to pypi repository
create %USER%.pypirc file first.
python setup.py bdist_wheel python -m twine upload dist*
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file gym_cache-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: gym_cache-1.0.2-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6dfbf3c9c94f123ed0b77e45be98c4b36b86df5e129f883ed0505f0014acd38a |
|
MD5 | afbc61047075c503dfff2317f42f11b7 |
|
BLAKE2b-256 | 348be006caefd6f088046b53e5429fbdf15a16cb6e01a5b9fb011566622e8132 |