Skip to content

Commit

Permalink
Merge pull request #158 from zuoxingdong/add_ddpg2
Browse files Browse the repository at this point in the history
update OpenAI-ES
  • Loading branch information
zuoxingdong committed May 6, 2019
2 parents 842ed32 + d528791 commit 451bf0b
Show file tree
Hide file tree
Showing 77 changed files with 102 additions and 16 deletions.
18 changes: 10 additions & 8 deletions baselines/openaies/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@
from lagom.envs.wrappers import VecMonitor
from lagom.envs.wrappers import VecStandardizeObservation

from openaies import OpenAIES
from agent import Agent
from .openaies import OpenAIES
from .agent import Agent


config = Config(
{'cuda': False,
'log.dir': 'logs/default',
'log.freq': 10,
'checkpoint.freq': 50,
'checkpoint.num': 3,

'env.id': 'HalfCheetah-v3',#Grid(['HalfCheetah-v3', 'Hopper-v3', 'Walker2d-v3', 'Swimmer-v3']),
'env.id': Grid(['HalfCheetah-v3', 'Hopper-v3', 'Walker2d-v3', 'Swimmer-v3']),
'env.standardize_obs': False,

'nn.sizes': [64, 64],
Expand Down Expand Up @@ -76,7 +76,7 @@ def initializer(config, seed, device):
env = make_env(config, seed)
env = VecMonitor(env)
if config['env.standardize_obs']:
env = VecStandardizeObservation(env, clip=10.)
env = VecStandardizeObservation(env, clip=5.)
global agent
agent = Agent(config, env, device)

Expand Down Expand Up @@ -114,12 +114,13 @@ def run(config, seed, device):
'antithetic': config['train.antithetic'],
'rank_transform': config['train.rank_transform']})
train_logs = []
checkpoint_count = 0
with ProcessPoolExecutor(max_workers=config['train.popsize'], initializer=initializer, initargs=(config, seed, device)) as executor:
print('Finish initialization. Training starts...')
for generation in range(config['train.generations']):
start_time = time.perf_counter()
solutions = es.ask()
out = list(executor.map(fitness, solutions))
out = list(executor.map(fitness, solutions, chunksize=4))
Rs, Hs = zip(*out)
es.tell(solutions, [-R for R in Rs])
logger = Logger()
Expand All @@ -131,9 +132,10 @@ def run(config, seed, device):
train_logs.append(logger.logs)
if generation == 0 or (generation+1)%config['log.freq'] == 0:
logger.dump(keys=None, index=0, indent=0, border='-'*50)
if generation == 0 or (generation+1)%config['checkpoint.freq'] == 0:
if (generation+1) >= int(config['train.generations']*(checkpoint_count/(config['checkpoint.num'] - 1))):
agent.from_vec(torch.from_numpy(es.result.xbest).float())
agent.checkpoint(logdir, generation+1)
checkpoint_count += 1
pickle_dump(obj=train_logs, f=logdir/'train_logs', ext='.pkl')
return None

Expand All @@ -142,4 +144,4 @@ def run(config, seed, device):
run_experiment(run=run,
config=config,
seeds=[1770966829, 1500925526, 2054191100],
num_worker=os.cpu_count())
num_worker=5)
Binary file modified baselines/openaies/logs/default/0/1500925526/agent_1.pth
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"initial_reset_timestamp": 1557149739.7226458, "timestamps": [1557149748.523486], "episode_lengths": [1000], "episode_rewards": [1912.6200380948023], "episode_types": ["t", "t"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"stats": "openaigym.episode_batch.0.1855909.stats.json", "videos": [["openaigym.video.0.1855909.video000000.mp4", "openaigym.video.0.1855909.video000000.meta.json"], ["openaigym.video.0.1855909.video000001.mp4", "openaigym.video.0.1855909.video000001.meta.json"]], "env_info": {"gym_version": "0.12.1", "env_id": "HalfCheetah-v3"}}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"episode_id": 0, "content_type": "video/mp4", "encoder_version": {"backend": "ffmpeg", "version": "b'ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers\\nbuilt with gcc 7 (Ubuntu 7.3.0-16ubuntu3)\\nconfiguration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared\\nlibavutil 55. 78.100 / 55. 78.100\\nlibavcodec 57.107.100 / 57.107.100\\nlibavformat 57. 83.100 / 57. 83.100\\nlibavdevice 57. 10.100 / 57. 10.100\\nlibavfilter 6.107.100 / 6.107.100\\nlibavresample 3. 7. 0 / 3. 7. 0\\nlibswscale 4. 8.100 / 4. 8.100\\nlibswresample 2. 9.100 / 2. 9.100\\nlibpostproc 54. 7.100 / 54. 7.100\\n'", "cmdline": ["ffmpeg", "-nostats", "-loglevel", "error", "-y", "-r", "20", "-f", "rawvideo", "-s:v", "500x500", "-pix_fmt", "rgb24", "-i", "-", "-vf", "scale=trunc(iw/2)*2:trunc(ih/2)*2", "-vcodec", "libx264", "-pix_fmt", "yuv420p", "/home/zuo/Code/tmp/lagom/baselines/openaies/logs/default/0/1500925526/anim/openaigym.video.0.1855909.video000000.mp4"]}}
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"episode_id": 1, "content_type": "video/mp4", "encoder_version": {"backend": "ffmpeg", "version": "b'ffmpeg version 3.4.4-0ubuntu0.18.04.1 Copyright (c) 2000-2018 the FFmpeg developers\\nbuilt with gcc 7 (Ubuntu 7.3.0-16ubuntu3)\\nconfiguration: --prefix=/usr --extra-version=0ubuntu0.18.04.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared\\nlibavutil 55. 78.100 / 55. 78.100\\nlibavcodec 57.107.100 / 57.107.100\\nlibavformat 57. 83.100 / 57. 83.100\\nlibavdevice 57. 10.100 / 57. 10.100\\nlibavfilter 6.107.100 / 6.107.100\\nlibavresample 3. 7. 0 / 3. 7. 0\\nlibswscale 4. 8.100 / 4. 8.100\\nlibswresample 2. 9.100 / 2. 9.100\\nlibpostproc 54. 7.100 / 54. 7.100\\n'", "cmdline": ["ffmpeg", "-nostats", "-loglevel", "error", "-y", "-r", "20", "-f", "rawvideo", "-s:v", "500x500", "-pix_fmt", "rgb24", "-i", "-", "-vf", "scale=trunc(iw/2)*2:trunc(ih/2)*2", "-vcodec", "libx264", "-pix_fmt", "yuv420p", "/home/zuo/Code/tmp/lagom/baselines/openaies/logs/default/0/1500925526/anim/openaigym.video.0.1855909.video000001.mp4"]}}
Binary file not shown.
Binary file not shown.
Binary file modified baselines/openaies/logs/default/0/1770966829/agent_1.pth
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified baselines/openaies/logs/default/0/2054191100/agent_1.pth
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
4 changes: 2 additions & 2 deletions baselines/openaies/logs/default/0/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ ID: 0
cuda: false
log.dir: logs/default
log.freq: 10
checkpoint.freq: 50
env.id: HalfCheetah-v3
checkpoint.num: 3
env.standardize_obs: false
nn.sizes:
- 64
Expand All @@ -24,3 +23,4 @@ train.sigma_scheduler_args:
- 0
train.antithetic: false
train.rank_transform: true
env.id: HalfCheetah-v3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
26 changes: 26 additions & 0 deletions baselines/openaies/logs/default/1/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
ID: 1
cuda: false
log.dir: logs/default
log.freq: 10
checkpoint.num: 3
env.standardize_obs: false
nn.sizes:
- 64
- 64
env.clip_action: true
agent.std0: 0.5
train.generations: 1000
train.popsize: 64
train.mu0: 0.0
train.std0: 1.0
train.lr: 0.1
train.lr_decay: 1.0
train.min_lr: 1.0e-06
train.sigma_scheduler_args:
- 1.0
- 0.01
- 450
- 0
train.antithetic: false
train.rank_transform: true
env.id: Hopper-v3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
26 changes: 26 additions & 0 deletions baselines/openaies/logs/default/2/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
ID: 2
cuda: false
log.dir: logs/default
log.freq: 10
checkpoint.num: 3
env.standardize_obs: false
nn.sizes:
- 64
- 64
env.clip_action: true
agent.std0: 0.5
train.generations: 1000
train.popsize: 64
train.mu0: 0.0
train.std0: 1.0
train.lr: 0.1
train.lr_decay: 1.0
train.min_lr: 1.0e-06
train.sigma_scheduler_args:
- 1.0
- 0.01
- 450
- 0
train.antithetic: false
train.rank_transform: true
env.id: Walker2d-v3
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
26 changes: 26 additions & 0 deletions baselines/openaies/logs/default/3/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
ID: 3
cuda: false
log.dir: logs/default
log.freq: 10
checkpoint.num: 3
env.standardize_obs: false
nn.sizes:
- 64
- 64
env.clip_action: true
agent.std0: 0.5
train.generations: 1000
train.popsize: 64
train.mu0: 0.0
train.std0: 1.0
train.lr: 0.1
train.lr_decay: 1.0
train.min_lr: 1.0e-06
train.sigma_scheduler_args:
- 1.0
- 0.01
- 450
- 0
train.antithetic: false
train.rank_transform: true
env.id: Swimmer-v3
Binary file modified baselines/openaies/logs/default/configs.pkl
Binary file not shown.
Binary file added baselines/openaies/logs/default/result.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 8 additions & 6 deletions baselines/openaies/logs/default/source_files/experiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
{'cuda': False,
'log.dir': 'logs/default',
'log.freq': 10,
'checkpoint.freq': 50,
'checkpoint.num': 3,

'env.id': 'HalfCheetah-v3',#Grid(['HalfCheetah-v3', 'Hopper-v3', 'Walker2d-v3', 'Swimmer-v3']),
'env.id': Grid(['HalfCheetah-v3', 'Hopper-v3', 'Walker2d-v3', 'Swimmer-v3']),
'env.standardize_obs': False,

'nn.sizes': [64, 64],
Expand Down Expand Up @@ -76,7 +76,7 @@ def initializer(config, seed, device):
env = make_env(config, seed)
env = VecMonitor(env)
if config['env.standardize_obs']:
env = VecStandardizeObservation(env, clip=10.)
env = VecStandardizeObservation(env, clip=5.)
global agent
agent = Agent(config, env, device)

Expand Down Expand Up @@ -114,12 +114,13 @@ def run(config, seed, device):
'antithetic': config['train.antithetic'],
'rank_transform': config['train.rank_transform']})
train_logs = []
checkpoint_count = 0
with ProcessPoolExecutor(max_workers=config['train.popsize'], initializer=initializer, initargs=(config, seed, device)) as executor:
print('Finish initialization. Training starts...')
for generation in range(config['train.generations']):
start_time = time.perf_counter()
solutions = es.ask()
out = list(executor.map(fitness, solutions))
out = list(executor.map(fitness, solutions, chunksize=4))
Rs, Hs = zip(*out)
es.tell(solutions, [-R for R in Rs])
logger = Logger()
Expand All @@ -131,9 +132,10 @@ def run(config, seed, device):
train_logs.append(logger.logs)
if generation == 0 or (generation+1)%config['log.freq'] == 0:
logger.dump(keys=None, index=0, indent=0, border='-'*50)
if generation == 0 or (generation+1)%config['checkpoint.freq'] == 0:
if (generation+1) >= int(config['train.generations']*(checkpoint_count/(config['checkpoint.num'] - 1))):
agent.from_vec(torch.from_numpy(es.result.xbest).float())
agent.checkpoint(logdir, generation+1)
checkpoint_count += 1
pickle_dump(obj=train_logs, f=logdir/'train_logs', ext='.pkl')
return None

Expand All @@ -142,4 +144,4 @@ def run(config, seed, device):
run_experiment(run=run,
config=config,
seeds=[1770966829, 1500925526, 2054191100],
num_worker=os.cpu_count())
num_worker=5)

0 comments on commit 451bf0b

Please sign in to comment.