129 lines
6.2 KiB
YAML
129 lines
6.2 KiB
YAML
cluster_name: network_interfaces
|
|
|
|
max_workers: 2
|
|
|
|
provider:
|
|
type: aws
|
|
# Ensure that all Security Group IDs associated with your network interfaces
|
|
# below are available in this region. If you are using Elastic Fabric
|
|
# Adaptors (EFA) with your network interfaces, then ensure that the
|
|
# available instance types in this region support EFA. To see the available
|
|
# instance types that support EFA in a Region, use the
|
|
# describe-instance-types command with the --region option and the
|
|
# appropriate Region code:
|
|
# aws ec2 describe-instance-types --region us-east-2 --filters Name=network-info.efa-supported,Values=true --query "InstanceTypes[*].[InstanceType]" --output text
|
|
region: us-west-2
|
|
|
|
# Note that availability zones can be omitted when using custom network
|
|
# interfaces with all node types, since each node will always be launched in
|
|
# the availability zone shared by its network interface subnets.
|
|
# If some of your node types have network interfaces configured and others
|
|
# do not, then node types without network interfaces will be limited to
|
|
# launching only in subnets available in the given availability zones.
|
|
# availability_zone: us-west-2a, us-west-2b, us-west-2c
|
|
|
|
# The example network interfaces below don't associate public IP addresses
|
|
# with Ray cluster nodes, so we need to explicitly tell Ray to connect to
|
|
# them via their private IP addresses. This also means that any instance
|
|
# running "ray up" or otherwise communicating with cluster nodes must be
|
|
# located in the same VPC to succeed. This line should be omitted if your
|
|
# network interfaces use public IP addresses.
|
|
use_internal_ips: True
|
|
|
|
auth:
|
|
ssh_user: ubuntu
|
|
|
|
# One or more NetworkInterfaces may be optionally defined for both head and
|
|
# worker nodes. Each NetworkInterface must minimally contain an associated
|
|
# DeviceIndex, SubnetID, and SecurityGroupID.
|
|
|
|
# For more information, see the "NetworkInterfaces" parameter of:
|
|
# https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.ServiceResource.create_instances
|
|
|
|
available_node_types:
|
|
ray.head.default:
|
|
resources: {}
|
|
node_config:
|
|
NetworkInterfaces:
|
|
- DeviceIndex: 0 # Primary network interface.
|
|
SubnetId: subnet-0000000 # Replace with your Subnet ID.
|
|
# Head node network interfaces can optionally associate fixed private
|
|
# addresses with the head node.
|
|
PrivateIpAddress: 172.31.64.10 # Replace with an IP in your subnet.
|
|
Groups:
|
|
- sg-00000000 # Replace with your Security Group ID.
|
|
|
|
# Multiple network interfaces can optionally be attached to a single
|
|
# node. Each interface can be assigned a different subnet, but each
|
|
# subnet should be in the same availability zone.
|
|
# For more information, see:
|
|
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html
|
|
# When assigning multiple network interfaces to a node, the network
|
|
# interfaces CANNOT have associated public IP addresses.
|
|
- DeviceIndex: 1 # Secondary network interface.
|
|
SubnetId: subnet-11111111 # Replace with your Subnet ID.
|
|
PrivateIpAddress: 172.31.16.10 # Replace with an IP in your subnet.
|
|
Groups:
|
|
- sg-11111111 # Replace with your Security Group ID.
|
|
- DeviceIndex: 2 # Tertiary network interface.
|
|
SubnetId: subnet-11111111 # (Same as deviceIndex-1)
|
|
PrivateIpAddress: 172.31.16.11 # Replace with an IP in your subnet.
|
|
Groups:
|
|
- sg-11111111 # (Same as deviceIndex-1)
|
|
|
|
# Use any node and instance type with default network interface types.
|
|
ImageId: latest_dlami
|
|
InstanceType: m5.large
|
|
|
|
ray.worker.efa:
|
|
min_workers: 0
|
|
max_workers: 1
|
|
resources: {}
|
|
node_config:
|
|
# Worker node network interfaces should always use auto-assigned private
|
|
# IP addresses from their associated subnets to avoid conflicts between
|
|
# multiple workers trying to use the same private IP.
|
|
NetworkInterfaces:
|
|
- DeviceIndex: 0 # Primary network interface.
|
|
NetworkCardIndex: 0 # NetworkCard index else defaults to ZERO by ec2 API
|
|
AssociatePublicIpAddress: False # Omit to let your Subnet auto-assign a public IP (if enabled).
|
|
SubnetId: subnet-22222222 # Replace with your actual Subnet ID
|
|
Groups:
|
|
- sg-22222222 # Replace with your actual Security Group ID.
|
|
InterfaceType: efa # Use EFA for higher throughput and lower latency.
|
|
- DeviceIndex: 1 # Secondary interface.
|
|
NetworkCardIndex: 1 # NetworkCard index else defaults to ZERO by ec2 API
|
|
AssociatePublicIpAddress: False # Omit to let your Subnet auto-assign a public IP (if enabled).
|
|
SubnetId: subnet-22222222 # (Must be same AZ, subnetId can be same)
|
|
Groups:
|
|
- sg-22222222 # (Must be self-referenced with ALL traffic)
|
|
InterfaceType: efa # Use EFA for higher throughput and lower latency.
|
|
|
|
# Use an AMI and instance type that supports Elastic Fabric Adapters (EFA).
|
|
# When using EFA, ideally all your cluster nodes should be Linux instances
|
|
# in the same subnet. This allows your EFA interfaces to leverage their
|
|
# OS-bypass capabilities and communicate directly with the device. See:
|
|
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html
|
|
# In this case, we'll use EFA with NCCL on the latest Ubuntu Deep Learning
|
|
# AMI and a supported network-optimized GPU instance type.
|
|
# See: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start-nccl-dlami.html
|
|
ImageId: latest_dlami
|
|
InstanceType: p3dn.24xlarge
|
|
|
|
ray.worker.default:
|
|
min_workers: 0
|
|
max_workers: 1
|
|
resources: {}
|
|
node_config:
|
|
NetworkInterfaces:
|
|
- DeviceIndex: 0 # Primary network interface.
|
|
AssociatePublicIpAddress: False # Omit to let your Subnet auto-assign a public IP (if enabled).
|
|
SubnetId: subnet-33333333 # Replace with your actual Subnet ID
|
|
Groups:
|
|
- sg-33333333 # Replace with your actual Security Group ID.
|
|
|
|
ImageId: latest_dlami
|
|
InstanceType: m5.large
|
|
|
|
head_node_type: ray.head.default
|