Skip to main content

Compute Config API Reference

Compute Config API Reference

Customer-hosted cloud features

note

Some features are only available on customer-hosted clouds. Reach out to support@anyscale.com for info.

Compute Config CLI

anyscale compute-config create

Usage

anyscale compute-config create [OPTIONS] [COMPUTE_CONFIG_FILE]

Create a new version of a compute config from a YAML file.

(1) To use the new schema defined at https://docs.anyscale.com/reference/compute-config-api#computeconfig, use the -f/--config-file flag:

anyscale compute-config create -f new_schema_config.yaml

(2) To use the old schema defined at https://docs.anyscale.com/reference/compute-config-api/#createclustercomputeconfig-legacy, use the positional argument:

anyscale compute-config create old_schema_config.yaml

Options

  • -n/--name: Name for the created compute config. This should not include a version tag. If a name is not provided, an anonymous compute config is generated. Anonymous compute configs are not accessible in the UI and can only be referenced by their ID.
  • -f/--config-file: Path to a YAML config file defining the compute config. Schema: https://docs.anyscale.com/reference/compute-config-api#computeconfig.

Examples

$ anyscale compute-config create -n my-compute-config -f compute_config.yaml
(anyscale +3.7s) Created compute config: 'my-compute-config:1'
(anyscale +3.7s) View the compute config in the UI: 'https://console.anyscale.com/v2/...'

$cat compute_config.yaml
head_node:
instance_type: m5.8xlarge
worker_nodes:
- instance_type: m5.8xlarge
min_nodes: 5
max_nodes: 5
market_type: ON_DEMAND # (Optional) Defaults to ON_DEMAND
- instance_type: g4dn.xlarge
min_nodes: 1
max_nodes: 10
market_type: PREFER_SPOT # (Optional) Defaults to ON_DEMAND
min_resources: # (Optional) Defaults to no minimum.
CPU: 1
GPU: 1
max_resources: # (Optional) Defaults to no maximum.
CPU: 6
GPU: 1

anyscale compute-config get

Usage

anyscale compute-config get [OPTIONS] [COMPUTE_CONFIG_NAME]

Get the details of a compute config.

The name can contain an optional version, e.g., 'name:version'. If no version is provided, the latest one will be returned.

Options

Examples

$ anyscale compute-config get -n my-compute-config
name: my-compute-config:1
id: cpt_buthu4glxj3azv4e287jad3ya3
config:
cloud: aviary-prod-us-east-1
head_node:
instance_type: m5.8xlarge
resources:
CPU: 0
GPU: 0
worker_nodes:
- instance_type: m5.8xlarge
name: m5.8xlarge
min_nodes: 5
max_nodes: 5
market_type: ON_DEMAND
- instance_type: g4dn.xlarge
name: g4dn.xlarge
min_nodes: 1
max_nodes: 10
market_type: PREFER_SPOT
min_resources:
CPU: 1
GPU: 1
max_resources:
CPU: 6
GPU: 1
enable_cross_zone_scaling: false
flags: {}

anyscale compute-config archive

Usage

anyscale compute-config archive [OPTIONS] [COMPUTE_CONFIG_NAME]

Archive all versions of a specified compute config.

Options

  • -n/--name: Name of the compute config to archive.
  • --compute-config-id/--id: ID of the compute config to archive. Alternative to name.

Examples

$ anyscale compute-config archive -n my-compute-config
(anyscale +2.3s) Compute config is successfully archived.

Compute Config SDK

anyscale.compute_config.create

Create a new version of a compute config.

Returns the full name of the registered compute config, including the version.

Arguments

  • config (ComputeConfig | MultiResourceComputeConfig): The config options defining the compute config.
  • name (str | None): The name of the compute config. This should not include a version tag. If a name is not provided, one will be automatically generated.

Returns: str

Examples

import anyscale
from anyscale.compute_config.models import ComputeConfig, HeadNodeConfig, MarketType, WorkerNodeGroupConfig

single_deployment_compute_config = ComputeConfig(
head_node=HeadNodeConfig(
instance_type="m5.8xlarge",
),
worker_nodes=[
WorkerNodeGroupConfig(
instance_type="m5.8xlarge",
min_nodes=5,
max_nodes=5,
),
WorkerNodeGroupConfig(
instance_type="m5.4xlarge",
min_nodes=1,
max_nodes=10,
market_type=MarketType.SPOT,
),
],
)
full_name: str = anyscale.compute_config.create(single_deployment_compute_config, name="my-single-deployment-compute-config")

multi_deployment_compute_config = MultiResourceComputeConfig(
configs=[
ComputeConfig(
cloud_resource="vm-aws-us-west-1",
head_node=HeadNodeConfig(
instance_type="m5.2xlarge",
),
worker_nodes=[
WorkerNodeGroupConfig(
instance_type="m5.4xlarge",
min_nodes=1,
max_nodes=10,
),
],
),
ComputeConfig(
cloud_resource="vm-aws-us-west-2",
head_node=HeadNodeConfig(
instance_type="m5.2xlarge",
),
worker_nodes=[
WorkerNodeGroupConfig(
instance_type="m5.4xlarge",
min_nodes=1,
max_nodes=10,
),
],
)
]
)
full_name: str = anyscale.compute_config.create(multi_deployment_compute_config, name="my-multi-deployment-compute-config")

anyscale.compute_config.get

Get the compute config with the specified name.

The name can contain an optional version tag, i.e., 'name:version'. If no version is provided, the latest one will be returned.

Arguments

  • name (str | None): The name of the compute config. This can inclue an optional version tag, i.e., 'name:version'. If no version tag is provided, the latest version will be returned.
  • include_archived (bool) = False: Whether to consider archived compute configs (defaults to False).

Returns: ComputeConfigVersion

Examples

import anyscale
from anyscale.compute_config.models import ComputeConfig

compute_config: ComputeConfig = anyscale.compute_config.get("my-compute-config")

anyscale.compute_config.archive

Archive a compute config and all of its versions.

The name can contain an optional version, e.g., 'name:version'. If no version is provided, the latest one will be archived.

Once a compute config is archived, its name will no longer be usable in the organization.

Arguments

  • name (str | None): Name of the compute config.

Examples

import anyscale

anyscale.compute_config.archive(name="my-compute-config")

Compute Config Models

ComputeConfig

Compute configuration for instance types and cloud resources for a cluster with a single cloud resource.

Fields

  • cloud (str | None): The Anyscale Cloud to run this workload on. If not provided, the organization default will be used (or, if running in a workspace, the cloud of the workspace).
  • cloud_resource (str | None): The cloud resource to use for this workload. Defaults to the primary cloud resource of the Cloud.
  • head_node (HeadNodeConfig | Dict | None): Configuration options for the head node of the cluster. Defaults to the cloud's default head node configuration.
  • worker_nodes (List[WorkerNodeGroupConfig | Dict] | None): Configuration options for the worker nodes of the cluster. If not provided, worker nodes will be automatically selected based on logical resource requests. To use a head-node only cluster, pass [] here.
  • min_resources (Dict[str, float] | None): Total minimum logical resources across all nodes in the cluster. Resources omitted from this field have no minimum.
  • max_resources (Dict[str, float] | None): Total maximum logical resources across all nodes in the cluster. Resources omitted from this field have no maximum.
  • zones (List[str] | None): Availability zones to consider for this cluster. Defaults to all zones in the cloud's region. By default all instances with user workloads scheduled on them will run in the same zone to save cost, unless enable_cross_zone_scaling is set.
  • enable_cross_zone_scaling (bool): Allow instances in the cluster to be run across multiple zones. This is recommended when running production services (for fault-tolerance in a zone failure scenario). It is not recommended for workloads that have a large amount of inter-zone communication due to the possibility of higher costs and degraded performance. When false, all instances with user workloads scheduled on them (e.g. all worker nodes in multi-node clusters) will run in the same zone to save cost.
  • advanced_instance_config (Dict[str, Any] | None): Advanced instance configurations that will be passed through to the cloud provider.
  • flags (Dict[str, Any] | None): Cluster-level flags specifying advanced or experimental options.
  • auto_select_worker_config (bool): Allow worker groups to be automatically configured based on the workload's logical resource requests. When false, worker groups must be explicitly configured.

Python Methods

def __init__(self, **fields) -> ComputeConfig
"""Construct a model with the provided field values set."""

def options(self, **fields) -> ComputeConfig
"""Return a copy of the model with the provided field values overwritten."""

def to_dict(self) -> Dict[str, Any]
"""Return a dictionary representation of the model."""

Examples

cloud: my-cloud
zones: # (Optional) Defaults to to all zones in a region.
- us-west-2a
- us-west-2b
head_node:
instance_type: m5.8xlarge
worker_nodes:
- instance_type: m5.8xlarge
min_nodes: 5
max_nodes: 5
market_type: PREFER_SPOT # (Optional) Defaults to ON_DEMAND
- instance_type: g5.4xlarge
min_nodes: 1
max_nodes: 10
market_type: SPOT # (Optional) Defaults to ON_DEMAND
min_resources: # (Optional) Defaults to no minimum.
CPU: 1
GPU: 1
CUSTOM_RESOURCE: 0
max_resources: # (Optional) Defaults to no maximum.
CPU: 6
GPU: 10
CUSTOM_RESOURCE: 10
enable_cross_zone_scaling: true # (Optional) Defaults to false.
advanced_instance_config: # (Optional) Defaults to no advanced configurations.
# AWS specific configuration example
BlockDeviceMappings:
- DeviceName: DEVICE_NAME
Ebs:
VolumeSize: VOLUME_SIZE
DeleteOnTermination: DELETE_ON_TERMINATION
IamInstanceProfile:
Arn: IAM_INSTANCE_PROFILE_ARN
NetworkInterfaces:
- SubnetId: SUBNET_ID
Groups:
- SECURITY_GROUP_ID
AssociatePublicIpAddress: ASSOCIATE_PUBLIC_IP
TagSpecifications:
- ResourceType: RESOURCE_TYPE
Tags:
- Key: TAG_KEY
Value: TAG_VALUE
# GCP specific configuration example
instance_properties:
disks:
- boot: BOOT_OPTION
auto_delete: AUTO_DELETE_OPTION
initialize_params:
disk_size_gb: DISK_SIZE_GB
service_accounts:
- email: SERVICE_ACCOUNT_EMAIL
scopes:
- SCOPE_URL
network_interfaces:
- subnetwork: SUBNETWORK_URL
access_configs:
- type: ACCESS_CONFIG_TYPE
labels:
LABEL_KEY: LABEL_VALUE

MultiResourceComputeConfig

EXPERIMENTAL. Compute configuration for a cluster with multiple possible cloud resources.

Fields

  • cloud (str | None): The Anyscale Cloud to run this workload on. If not provided, the organization default will be used (or, if running in a workspace, the cloud of the workspace).
  • configs (List[ComputeConfig | Dict]): List of compute configurations, one for each cloud resource.

Python Methods

def __init__(self, **fields) -> MultiResourceComputeConfig
"""Construct a model with the provided field values set."""

def options(self, **fields) -> MultiResourceComputeConfig
"""Return a copy of the model with the provided field values overwritten."""

def to_dict(self) -> Dict[str, Any]
"""Return a dictionary representation of the model."""

Examples

cloud: my-cloud
configs:
- cloud_resource: vm-aws-us-west-1
head_node:
instance_type: m5.2xlarge
worker_nodes:
- instance_type: m5.4xlarge
min_nodes: 1
max_nodes: 10
- cloud_resource: vm-aws-us-west-2
head_node:
instance_type: m5.2xlarge
worker_nodes:
- instance_type: m5.4xlarge
min_nodes: 1
max_nodes: 10

HeadNodeConfig

Configuration options for the head node of a cluster.

Fields

  • instance_type (str): Cloud provider instance type, e.g., m5.2xlarge on AWS or n2-standard-8 on GCP.
  • resources (Dict[str, float] | None): Logical resources that will be available on this node. Defaults to match the physical resources of the instance type.
  • labels (Dict[str, str] | None): Labels to associate the node with for scheduling purposes. Defaults to the list of Ray & Anyscale default labels.
  • advanced_instance_config (Dict[str, Any] | None): Advanced instance configurations that will be passed through to the cloud provider.
  • flags (Dict[str, Any] | None): Node-level flags specifying advanced or experimental options.
  • cloud_deployment (CloudDeployment | Dict[str, str] | None): Cloud deployment selectors for a node group; one or more selectors may be passed to target a specific deployment from all of a cloud's deployments.

Python Methods

def __init__(self, **fields) -> HeadNodeConfig
"""Construct a model with the provided field values set."""

def options(self, **fields) -> HeadNodeConfig
"""Return a copy of the model with the provided field values overwritten."""

def to_dict(self) -> Dict[str, Any]
"""Return a dictionary representation of the model."""

Examples

head_node:
instance_type: m5.8xlarge

WorkerNodeGroupConfig

Configuration options for a worker node group in a cluster.

Clusters can have multiple worker node groups that use different instance types or configurations.

Fields

  • instance_type (str): Cloud provider instance type, e.g., m5.2xlarge on AWS or n2-standard-8 on GCP.
  • resources (Dict[str, float] | None): Logical resources that will be available on this node. Defaults to match the physical resources of the instance type.
  • labels (Dict[str, str] | None): Labels to associate the node with for scheduling purposes. Defaults to the list of Ray & Anyscale default labels.
  • advanced_instance_config (Dict[str, Any] | None): Advanced instance configurations that will be passed through to the cloud provider.
  • flags (Dict[str, Any] | None): Node-level flags specifying advanced or experimental options.
  • cloud_deployment (CloudDeployment | Dict[str, str] | None): Cloud deployment selectors for a node group; one or more selectors may be passed to target a specific deployment from all of a cloud's deployments.
  • name (str | None): Unique name of this worker group. Defaults to a human-friendly representation of the instance type.
  • min_nodes (int): Minimum number of nodes of this type that will be kept running in the cluster.
  • max_nodes (int): Maximum number of nodes of this type that can be running in the cluster.
  • market_type (str | MarketType): The type of instances to use (see MarketType enum values for details).

Python Methods

def __init__(self, **fields) -> WorkerNodeGroupConfig
"""Construct a model with the provided field values set."""

def options(self, **fields) -> WorkerNodeGroupConfig
"""Return a copy of the model with the provided field values overwritten."""

def to_dict(self) -> Dict[str, Any]
"""Return a dictionary representation of the model."""

Examples

worker_nodes:
- instance_type: m5.8xlarge
min_nodes: 5
max_nodes: 5
- instance_type: m5.4xlarge
min_nodes: 1
max_nodes: 10
market_type: SPOT

MarketType

Market type of instances to use (on-demand vs. spot).

Values

  • ON_DEMAND: Use on-demand instances only.
  • SPOT: Use spot instances only.
  • PREFER_SPOT: Prefer to use spot instances, but fall back to on-demand if necessary. If on-demand instances are running and spot instances become available, the on-demand instances will be evicted and replaced with spot instances.

CloudDeployment

Cloud deployment selectors for a node group; one or more selectors may be passed to target a specific deployment from all of a cloud's deployments.

Fields

  • provider (str | None): Cloud provider name, e.g., aws or gcp.
  • region (str | None): Cloud provider region, e.g., us-west-2.
  • machine_pool (str | None): Machine pool name.
  • id (str | None): Cloud deployment ID from cloud setup.

Python Methods

def to_dict(self) -> Dict[str, Any]
"""Return a dictionary representation of the model."""

Examples

cloud_deployment:
provider: aws
region: us-west-2
machine_pool: machine-pool-name
id: cldrsrc_1234567890

ComputeConfigVersion

Details of a created version of a compute config.

Includes the config options and metadata such as the name, version, and ID.

Fields

  • name (str): Name of the compute config including the version tag, i.e., 'name:version'.
  • id (str): Unique ID of the compute config.
  • config (ComputeConfig | MultiResourceComputeConfig | None): The compute configuration.

Python Methods

def to_dict(self) -> Dict[str, Any]
"""Return a dictionary representation of the model."""

Examples

import anyscale
from anyscale.compute_config.models import (
ComputeConfigVersion
)

version: ComputeConfigVersion = anyscale.compute_config.get("my-compute-config")