- Notifications
You must be signed in to change notification settings - Fork1
WebSocket server that exposes an API to train AI agents on OpenAI Gym and gym-api-like Environments
License
jscriptcoder/Gymie-Server
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
WebSocket server that exposes an API to train AI agents onOpenAI Gym and gym-api like environments such asGym Retro orUnity ML-Agents, this last one with the help ofgym wrapper
Gymie can be installed using:
$ pip install gymie
or by cloning therepo and pip-installing in editable mode from the folder:
$ git clone https://github.com/jscriptcoder/Gymie-Server.gitCloning into'Gymie-Server'......$cd Gymie-Server/$ pip install -e.Obtaining file:///path/to/Gymie-Server...Successfully installed gymie
You can start the server from the command line:
$ python -m gymie --host 0.0.0.0 --port 5000(84581) wsgi starting up on http://0.0.0.0:5000
or programmatically:
importgymiegymie.start('localhost',9000)
A client can communicate with Gymie via JSON, with the following format:
{"method":"api_method_name","params": {"param1":"string","param2":6,"param3":true,"param4": [] }}
make
: Instantiates an environment.
// Params:{"env_id":"CartPole-v1","seed":0// optional}// Response:{"instance_id":"unique-id"}
step
: Performs a step on the environment.
// Params:{"instance_id":"instance-id""action":[1,0,1]// MultiBinary action}// Response:[[...],// next state-2.0,// rewardfalse,// done{...},// info]
reset
: Resets the environment.
// Params:{"instance_id":"instance-id"}// Response:[...]// initial state
close
: Closes the environment.
// Params:{"instance_id":"instance-id"}// Response:true
observation_space
: Generates a dictionary with observation space info.
// Params:{"instance_id":"instance-id"}// Response for Discreate observation space:{"name":"Discreate","n":4}// Response for Box (Continuous) observation space:{"name":"Box","shape":[3],"low":[-5,-5,-5],"high":[5,5,5]}// Response for MultiBinary observation space:{"name":"MultiBinary","n":5,"shape":[5]}// TODO MultiDiscrete
action_space
: Generates a dictionary with action space info.
// Params:{"instance_id":"instance-id"}// Response for Discreate actions:{"name":"Discreate","n":4}// Response for Box (Continuous) actions:{"name":"Box","shape":[2],"low":[-1,-1],"high":[1,1]}
action_sample
: Generates a random action.
// Params:{"instance_id":"instance-id"}// Response for Discrete actions:2// Response for Continuous actions:[1.52,-3.67]
@override
: Decorator to override internal functionality. It takes a string, function's name, as an argument. This is useful if we want to use different gym-like wrappers. For example, both Gym Retro and Unity ML-Agents have different ways to instantiate an environment. You can take a look at the tests to see how it's done forGym Retro andUnity ML-Agents (with the help ofgym-unity). At the moment there are two internal functions that can be overriden,get_env
andprocess_step
.
defoverride(func_name:str)->Callable
importretrofromgymieimportoverridefromgym_unity.envsimportUnityToGymWrapperfrommlagents_envs.environmentimportUnityEnvironment,UnityEnvironmentException@override('get_env')defretro_get_env(env_id,seed=None):"""Instantiates a Gym environment"""try:env=retro.make(game=env_id)exceptFileNotFoundError:raiseEnvironmentNotFoundelse:ifseed:env.seed(seed)returnenv@override('process_step')defunity_process_step(step):"""Does some processing of the step"""observation,reward,done,info=stepreturnobservation.tolist(),float(reward),done, {}
start
: This function takes two arguments, host and port, and starts the server, listening onws://host:port
defstart (host:str='0.0.0.0',port:int=5000)->None
importgymiegymie.start('localhost',8080)
You can run all the tests by executingrun_tests.sh
script:
$ ./run_tests.sh
In order to runtest_gymie_retro.py
you need to havegym-retro package installed. Fortests/test_gymie_unity.py
, you needmlagents-envs andgym-unity.
MIT License - Copyright (c) 2020 Francisco Ramos
About
WebSocket server that exposes an API to train AI agents on OpenAI Gym and gym-api-like Environments
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.