8000 GitHub - XinyuR1/doodad: Code for distributing code across computers.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

XinyuR1/doodad

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DOODAD

Linked repositories for IFT 3150

My Personal Configurations for this Project

# For Code Directory
BASE_CODE_DIR = "/home/liuronni/Documents/Github"

# Mounting Directories for doodad
CODE_DIRS_TO_MOUNT = [
    BASE_CODE_DIR + "/rlkit"
]
NON_CODE_DIRS_TO_MOUNT = [
]

# Log Directories for doodad
LOCAL_LOG_DIR = BASE_CODE_DIR + "/rlkit/data"
OUTPUT_DIR_FOR_DOODAD_TARGET = BASE_CODE_DIR + "/rlkit/data"

# For Docker Images
DOODAD_DOCKER_IMAGE = 'xinyur1/rlkit:version-cpu'
GPU_DOODAD_DOCKER_IMAGE = 'xinyur1/rlkit:version-gpu3'

# Host SSH
SSH_HOSTS = dict(
    arcade=dict(
        username='liuronni',
        hostname='arcade'
    ),
    blue=dict(
        username='ronnie',
        hostname='blue'
    ),
    green=dict(
        username='ronnie',
        hostname='green'
    )
)

# Outputs on the lab computer (log directories)
SSH_LOG_DIR = '~/shared/res'
SSH_TMP_DIR = '~/shared/tmp'

List of Changes for this Project

This project uses this library in order to run different experiments. Here are the list of changes that I've made compared to the montrealrobotic's version of doodad:

  • We will use these configurations for the Atari experiments from RLKIT.
  • Modify config.py for personal configurations (to the Ubuntu virtual machine).
  • Use the following docker images for Atari experiments that are available at Dockerhub: xinyur1/rlkit:version-cpu or xinyur1/rlkit:version-gpu3
  • Add the line ptu.set_gpu_mode(True) when using GPU by importing the function from rlkit.
  • Add the information related to comet_ml experiment since the Atari experiment will use this python file when the mode is either local, local_docker or ssh.
  • Add sudo keyword, so it doesn't refuse access while using a Docker container.
  • Add --pid = host when running a Docker Container with GPU.

doodad

A library for launching python programs on different machines. Currently supports running locally and over EC2 and SSH (via Docker) with minimal (if any) modification to your existing program.

EC2 code is based on rllab's code.

Setup

  • Add this repo to your pythonpath.
export PYTHONPATH=$PYTHONPATH:/path/to/this/repo
  • Install dependencies
pip install -r requirements.txt
  • (Optional) Set up EC2
python scripts/ec2_setup.py

Example

See ec2_launch_test.py for an example on how to run scripts on EC2, over SSH, or locally.

Tutorial

See the wiki

Changelog

17 March 2020 (v0.2.4)

  • Add doodad.easy_launch to make it very easy to run python functions across different modes supported by doodad.

04 March 2020 (v0.2.3)

  • SlurmConfig is only responsible for config.
  • Require user to explicitly specify whether or not they want to overwrite generated script in ScriptSlurmSingularity and BrcHighThroughputMode

26 February 2020 (v0.2.2)

  • Refactor slurm-based modes.
  • Add support for Berkeley Research Compute's high-throughput node.

TODOs

  • Add support for automatic experiment restarting (will require the user to write a save_state and restore_state function, or use something like CRIU)
  • Fix output directories when using docker showing up as root permissions.

doodad.easy_launch

The directory doodad.easy_launch is intended to make it very easy to launch experiments. Usage:

from doodad.easy_launch.python_function import run_experiment


def function(doodad_config, variant):
    print("The learning rate is", variant['learning_rate'])
    print("You are", variant['parameter'])
    print("Save to", doodad_config.base_log_dir)
    # save outputs (e.g. logs, parameter snapshots, etc.) to
    # doodad_config.base_log_dir

if __name__ == "__main__":
    variant = dict(
        learning_rate=1e-4,
        parameter='awesome',
    )
    run_experiment(
        function,
        exp_name='ec2-test-doodad-easy-launch',
        mode='ec2',
        variant=variant,
    )

To use it you well need to create a private version of the configuration file:

cp doodad/easy_launch/config.py doodad/easy_launch/config_private.py

About

Code for distributing code across computers.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 95.6%
  • Shell 4.4%
0