# An unique identifier for the head node and workers of this cluster. cluster_name: default # The maximum number of workers nodes to launch in addition to the head # node. max_workers: 2 # 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 object means disabled. docker: {} # If a node is idle for this many minutes, it will be removed. idle_timeout_minutes: 5 # Cloud-provider specific configuration. provider: type: azure # https://azure.microsoft.com/en-us/global-infrastructure/locations location: westus2 resource_group: ray-cluster # set subscription id otherwise the default from az cli will be used # subscription_id: 00000000-0000-0000-0000-000000000000 # set unique subnet mask or a random mask will be used # subnet_mask: 10.0.0.0/16 # set unique id for resources in this cluster # if not set a default id will be generated based on the resource group and cluster name # unique_id: RAY1 # Availability zones for VM placement (comma-separated). Examples: # availability_zone: "1,2,3" # Use zones 1, 2, and 3 # availability_zone: "1" # Use only zone 1 # availability_zone: "none" # Explicitly disable zones availability_zone: "auto" # Let Azure automatically pick zones # How Ray will authenticate with newly launched nodes. auth: ssh_user: ubuntu # SSH keys will be auto-generated with Ray-specific names if not specified # Uncomment and specify custom paths if you want to use different existing keys: # ssh_private_key: /path/to/your/key.pem # ssh_public_key: /path/to/your/key.pub # More specific customization to node configurations can be made using the ARM template azure-vm-template.json file # See documentation here: https://docs.microsoft.com/en-us/azure/templates/microsoft.compute/2019-03-01/virtualmachines # Changes to the local file will be used during deployment of the head node, however worker nodes deployment occurs # on the head node, so changes to the template must be included in the wheel file used in setup_commands section below # 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: resources: {"CPU": 2} # Provider-specific config, e.g. instance type. node_config: azure_arm_parameters: vmSize: Standard_D2s_v3 # List images https://docs.microsoft.com/en-us/azure/virtual-machines/linux/cli-ps-findimage imagePublisher: microsoft-dsvm imageOffer: ubuntu-2204 imageSku: 2204-gen2 imageVersion: latest # Head node: explicitly disable availability zones availability_zone: "none" ray.worker.default: # The minimum number of nodes of this type to launch. # This number should be >= 0. min_workers: 0 # The resources provided by this node type. resources: {"CPU": 2} # Provider-specific config, e.g. instance type. node_config: azure_arm_parameters: vmSize: Standard_D2s_v3 # List images https://docs.microsoft.com/en-us/azure/virtual-machines/linux/cli-ps-findimage imagePublisher: microsoft-dsvm imageOffer: ubuntu-2204 imageSku: 2204-gen2 imageVersion: latest # comment lines below to not use Spot instances priority: Spot # set a maximum price for spot instances if desired # billingProfile: # maxPrice: -1 # Workers: inherit provider availability_zone setting # Options: "1,2,3" for specific zones, "none" to disable zones, # or "auto" to let Azure pick zones automatically # Specify the node type of the head node (as configured above). head_node_type: ray.head.default # 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 # Patterns for files to exclude when running rsync up or rsync down rsync_exclude: [] # Pattern files to use for filtering out files when running rsync up or rsync down. The file is searched for # in the source directory and recursively through all subdirectories. For example, if .gitignore is provided # as a value, the behavior will match git's behavior for finding and using .gitignore files. rsync_filter: [] # 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: # get rid of annoying Ubuntu message - touch ~/.sudo_as_admin_successful # 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). # Note: The Ubuntu 22.04 dsvm image has a few venvs already configured but # they all contain python modules that are not compatible with Ray at the moment. - (which conda && echo 'eval "$(conda shell.bash hook)"' >> ~/.bashrc) || true - conda tos accept - conda create -n ray-env python=3.10 -y - conda activate ray-env && echo 'conda activate ray-env' >> ~/.bashrc - which ray || pip install -U "ray[default] @ https://s3-us-west-2.amazonaws.com/ray-wheels/latest/ray-3.0.0.dev0-cp310-cp310-manylinux2014_x86_64.whl" # 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 -U azure-core==1.35.0 azure-identity==1.23.1 azure-mgmt-compute==35.0.0 azure-mgmt-network==29.0.0 azure-mgmt-resource==24.0.0 azure-common==1.1.28 msrest==0.7.1 msrestazure==0.6.4.post1 # 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: - ray stop - ulimit -n 65536; ray start --head --port=6379 --object-manager-port=8076 --autoscaling-config=~/ray_bootstrap_config.yaml --dashboard-host=0.0.0.0 # Command to start ray on worker nodes. You don't need to change this. worker_start_ray_commands: - ray stop - ulimit -n 65536; ray start --address=$RAY_HEAD_IP:6379 --object-manager-port=8076