Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e7b74fa
Fix runpod type annotations
r4victor Jun 16, 2025
f373d6b
Add _generate_create_cluster_mutation
r4victor Jun 16, 2025
b089af5
feat: add create_cluster method to RunpodApiClient
r4victor Jun 16, 2025
38376db
feat: add delete_cluster method to RunpodApiClient
r4victor Jun 16, 2025
991e886
Use keyword arguments
r4victor Jun 17, 2025
07f1313
Implement run_jobs and terminate_compute_group
r4victor Jun 17, 2025
8c13be6
Merge branch 'master' into issue_2802_runpod_instant_clusters
r4victor Oct 10, 2025
852896f
Prototype compute.run_jobs calling
r4victor Oct 10, 2025
ed47824
Prototype compute group provisioning for multinode tasks
r4victor Oct 13, 2025
f538ea6
Add JobModel.waiting_master_job
r4victor Oct 14, 2025
12a1c13
Add ComputeGroupModel
r4victor Oct 15, 2025
6b36b96
Implement process_compute_groups to terminate compute groups
r4victor Oct 15, 2025
41fb7b9
Remove todo
r4victor Oct 15, 2025
1593b05
Fix comments
r4victor Oct 15, 2025
e987301
Set internal_ip
r4victor Oct 17, 2025
df0c9ce
Merge branch 'master' into issue_2802_runpod_instant_clusters
r4victor Oct 21, 2025
79b8dac
Merge branch 'master' into issue_2802_runpod_instant_clusters
r4victor Oct 21, 2025
6b1679b
Support Runpod Clusters offers
r4victor Oct 22, 2025
888a7ba
Respect supported pod_counts
r4victor Oct 22, 2025
e4e0ce8
Support registry_auth
r4victor Oct 22, 2025
7ee2643
Fix tests
r4victor Oct 22, 2025
2d4589a
Add feature flag DSTACK_FF_RUNPOD_CLUSTER_OFFERS_ENABLED
r4victor Oct 22, 2025
cb0cd54
Merge branch 'master' into issue_2802_runpod_instant_clusters
r4victor Oct 23, 2025
1844914
Remove hardcoded template_id
r4victor Oct 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ include = [
"src/dstack/_internal/server",
"src/dstack/_internal/core/services",
"src/dstack/_internal/core/backends/kubernetes",
"src/dstack/_internal/core/backends/runpod",
"src/dstack/_internal/cli/services/configurators",
"src/dstack/_internal/cli/commands",
]
Expand Down
19 changes: 19 additions & 0 deletions src/dstack/_internal/core/backends/base/compute.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,15 @@
from gpuhunt import CPUArchitecture

from dstack._internal import settings
from dstack._internal.core.backends.base.models import JobConfiguration
from dstack._internal.core.backends.base.offers import OfferModifier, filter_offers_by_requirements
from dstack._internal.core.consts import (
DSTACK_RUNNER_HTTP_PORT,
DSTACK_RUNNER_SSH_PORT,
DSTACK_SHIM_HTTP_PORT,
)
from dstack._internal.core.models.backends.base import BackendType
from dstack._internal.core.models.compute_groups import ComputeGroup, ComputeGroupProvisioningData
from dstack._internal.core.models.configurations import LEGACY_REPO_DIR
from dstack._internal.core.models.gateways import (
GatewayComputeConfiguration,
Expand Down Expand Up @@ -324,6 +326,23 @@ def _restrict_instance_offer_az_to_volumes_az(
]


class ComputeWithGroupProvisioningSupport(ABC):
@abstractmethod
def run_jobs(
self,
run: Run,
job_configurations: List[JobConfiguration],
instance_offer: InstanceOfferWithAvailability,
project_ssh_public_key: str,
project_ssh_private_key: str,
) -> ComputeGroupProvisioningData:
pass

@abstractmethod
def terminate_compute_group(self, compute_group: ComputeGroup):
pass


class ComputeWithPrivilegedSupport:
"""
Must be subclassed to support runs with `privileged: true`.
Expand Down
10 changes: 10 additions & 0 deletions src/dstack/_internal/core/backends/base/models.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
from pathlib import Path
from typing import List

from dstack._internal.core.models.common import CoreModel
from dstack._internal.core.models.runs import Job
from dstack._internal.core.models.volumes import Volume


class JobConfiguration(CoreModel):
job: Job
volumes: List[Volume]


def fill_data(values: dict, filename_field: str = "filename", data_field: str = "data") -> dict:
Expand Down
1 change: 1 addition & 0 deletions src/dstack/_internal/core/backends/base/offers.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"gcp-a4",
"gcp-g4-preview",
"gcp-dws-calendar-mode",
"runpod-cluster",
]


Expand Down
Loading