Skip to content

[Epic] Support clusters (aka pools of reserved instances) #790

Closed

Description

@peterschmidt85

When using on-demand instances, one of the biggest challenges is the uncertainty of their availability at the time of need. For example, if you plan to use an instance for a specific task, such as a development environment or a service, stopping the run could result in the instance no longer being available. This can be problematic, especially if you need an instance on short notice.

To address this issue, reserving an instance in advance can provide several benefits. Firstly, reserved instances can be obtained at a good price. Secondly, by maintaining reserved instances in a pool, you can ensure the availability of the instance when needed.

How it may work:

$ dstack cluster create [--name|-n NAME]

The cluster `orb-galaxy-1` is created.

Then, you can add or remove instances to it:

$ dstack cluster add --gpu 24GB --nodes 3

If you want to create a cluster already with some instances, e.g. you can use dstack cluster create --gpu 24GB --nodes 3.

Finally, and most importantly, the dstack run command will allow passing a cluster (e.g. --cluster orb-galaxy-1). In this case, it will re-use the instances from the cluster.

Benefits

  1. You can provision an instance in advance and work with it, without fear of losing access to the instance, between restarts of your workloads.
  2. You can now reserve multiple instances with good GPUs at a low price in advance, perfect for team collaboration.
  3. This particular feature can benefit any user, irrespective of their provider. For instance, whether you're using Lambda or Vast, you can utilize dstack solely for this feature—reserving on-demand instances.
  4. By using this feature, we can offer dstack Cloud users reserved instances
  5. In the future, this feature might serve as the foundation for additional new features, such as auto-scaling of services, multi-node training, and serverless functionalities.

Activity

  1. peterschmidt85 commented on Nov 24, 2023

    @peterschmidt85
    ContributorAuthor

    UPDATE:

    • Currently, this feature can be fully supported only for VM-based cloud providers (most providers).
    • For Docker-only providers (such as Vast.ai), this feature can only be supported with limitations (e.g., the Docker image is pre-selected).
    • Prior to beginning work on this feature, I suggest a quick research of how this feature may work in terms of UX if the user is using resolved instances from their cloud provider (incl. dstack Cloud).
  2. peterschmidt85 commented on Dec 4, 2023

    @peterschmidt85
    ContributorAuthor

    UPDATE:

    • Allow to easily connect own servers to a cluster
  3. changed the title [-]Support clusters (aka pools of reserved instances)[/-] [+][Epic] Support clusters (aka pools of reserved instances)[/+] on Dec 23, 2023
  4. peterschmidt85 commented on Jan 23, 2024

    @peterschmidt85
    ContributorAuthor

    This issue is stale because it has been open for 30 days with no activity.

  5. peterschmidt85 commented on Feb 25, 2024

    @peterschmidt85
    ContributorAuthor

    This issue is stale because it has been open for 30 days with no activity.

  6. peterschmidt85 commented on Feb 26, 2024

    @peterschmidt85
    ContributorAuthor

    @TheBits Should this issue be closed?

  7. TheBits commented on Mar 7, 2024

    @TheBits
    Contributor

    Yes. Pools feature added in version 0.16.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions