# A cluster setup for ML / RLlib workloads. Note that this uses pytorch by default. # If you want to use tensorflow, change pytorch_p36 to tensorflow_p36 below. # # Important: Make sure to run "source activate pytorch_p36" in your sessions to # activate the right conda environment. Otherwise you won't be able to import ray. # cluster_name: ml # The minimum number of workers nodes to launch in addition to the head # node. This number should be >= 0. min_workers: 0 # The maximum number of workers nodes to launch in addition to the head # node. This takes precedence over min_workers. max_workers: 0 # The autoscaler will scale up the cluster faster with higher upscaling speed. # E.g., if the task requires adding more nodes then autoscaler will gradually # scale up the cluster in chunks of upscaling_speed*currently_running_nodes. # This number should be > 0. upscaling_speed: 1.0 # This executes all commands on all nodes in the docker container, # and opens all the necessary ports to support the Ray cluster. # Empty string means disabled. docker: image: "" # e.g., rayproject/ray-ml:latest container_name: "" # e.g. ray_docker # If true, pulls latest version of image. Otherwise, `docker run` will only pull the image # if no cached version is present. pull_before_run: True run_options: [] # Extra options to pass into "docker run" # Example of running a GPU head with CPU workers # head_image: "rayproject/ray-ml:latest-gpu" # worker_image: "rayproject/ray-ml:latest" # If a node is idle for this many minutes, it will be removed. idle_timeout_minutes: 5 # Cloud-provider specific configuration. provider: type: aws region: us-west-2 # Availability zone(s), comma-separated, that nodes may be launched in. # Nodes will be launched in the first listed availability zone and will # be tried in the subsequent availability zones if launching fails. availability_zone: us-west-2a,us-west-2b # Whether to allow node reuse. If set to False, nodes will be terminated # instead of stopped. cache_stopped_nodes: True # If not present, the default is True. # How Ray will authenticate with newly launched nodes. auth: ssh_user: ubuntu # By default Ray creates a new private keypair, but you can also use your own. # If you do so, make sure to also set "KeyName" in the head and worker node # configurations below. # ssh_private_key: /path/to/your/key.pem # Tell the autoscaler the allowed node types and the resources they provide. # The key is the name of the node type, which is just for debugging purposes. # The node config specifies the launch config and physical instance type. available_node_types: ray.head.default: node_config: InstanceType: m4.16xlarge ImageId: latest_dlami # You can provision additional disk space with a conf as follows BlockDeviceMappings: - DeviceName: /dev/sda1 Ebs: VolumeSize: 140 ray.worker.default: node_config: InstanceType: m4.16xlarge ImageId: latest_dlami # Comment this in to use spot nodes. # InstanceMarketOptions: # MarketType: spot # # Additional options can be found in the boto docs, e.g. # # SpotOptions: # # MaxPrice: MAX_HOURLY_PRICE # # Additional options in the boto docs. # Files or directories to copy to the head and worker nodes. The format is a # dictionary from REMOTE_PATH: LOCAL_PATH, e.g. file_mounts: { # "/path1/on/remote/machine": "/path1/on/local/machine", # "/path2/on/remote/machine": "/path2/on/local/machine", } # Files or directories to copy from the head node to the worker nodes. The format is a # list of paths. The same path on the head node will be copied to the worker node. # This behavior is a subset of the file_mounts behavior. In the vast majority of cases # you should just use file_mounts. Only use this if you know what you're doing! cluster_synced_files: [] # Whether changes to directories in file_mounts or cluster_synced_files in the head node # should sync to the worker node continuously file_mounts_sync_continuously: False # List of commands that will be run before `setup_commands`. If docker is # enabled, these commands will run outside the container and before docker # is setup. initialization_commands: [] # List of shell commands to run to set up nodes. setup_commands: # Note: if you're developing Ray, you probably want to create an AMI that # has your Ray repo pre-cloned. Then, you can replace the pip installs # below with a git checkout (and possibly a recompile). - source activate pytorch_p36 && pip install -U ray - source activate pytorch_p36 && pip install -U ray[rllib] ray[tune] ray # Consider uncommenting these if you also want to run apt-get commands during setup # - sudo pkill -9 apt-get || true # - sudo pkill -9 dpkg || true # - sudo dpkg --configure -a # Custom commands that will be run on the head node after common setup. head_setup_commands: - pip install 'boto3>=1.4.8' # 1.4.8 adds InstanceMarketOptions # Custom commands that will be run on worker nodes after common setup. worker_setup_commands: [] # Command to start ray on the head node. You don't need to change this. head_start_ray_commands: - source activate pytorch_p36 && ray stop - ulimit -n 65536; source activate pytorch_p36 && ray start --head --port=6379 --object-manager-port=8076 --autoscaling-config=~/ray_bootstrap_config.yaml # Command to start ray on worker nodes. You don't need to change this. worker_start_ray_commands: - source activate pytorch_p36 && ray stop - ulimit -n 65536; source activate pytorch_p36 && ray start --address=$RAY_HEAD_IP:6379 --object-manager-port=8076