skypilot-nightly 1.0.0.dev20250729__py3-none-any.whl → 1.0.0.dev20250731__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- sky/__init__.py +2 -2
- sky/backends/backend_utils.py +4 -1
- sky/backends/cloud_vm_ray_backend.py +4 -3
- sky/catalog/__init__.py +3 -3
- sky/catalog/aws_catalog.py +12 -0
- sky/catalog/common.py +2 -2
- sky/catalog/data_fetchers/fetch_aws.py +13 -1
- sky/client/cli/command.py +448 -60
- sky/client/common.py +12 -9
- sky/clouds/nebius.py +1 -1
- sky/clouds/utils/gcp_utils.py +1 -1
- sky/clouds/vast.py +1 -2
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/chunks/1043-928582d4860fef92.js +1 -0
- sky/dashboard/out/_next/static/chunks/1141-3f10a5a9f697c630.js +11 -0
- sky/dashboard/out/_next/static/chunks/1559-6c00e20454194859.js +30 -0
- sky/dashboard/out/_next/static/chunks/1664-22b00e32c9ff96a4.js +1 -0
- sky/dashboard/out/_next/static/chunks/1871-1df8b686a51f3e3a.js +6 -0
- sky/dashboard/out/_next/static/chunks/2003.f90b06bb1f914295.js +1 -0
- sky/dashboard/out/_next/static/chunks/2350.fab69e61bac57b23.js +1 -0
- sky/dashboard/out/_next/static/chunks/2369.fc20f0c2c8ed9fe7.js +15 -0
- sky/dashboard/out/_next/static/chunks/2641.142718b6b78a6f9b.js +1 -0
- sky/dashboard/out/_next/static/chunks/3698-7874720877646365.js +1 -0
- sky/dashboard/out/_next/static/chunks/3785.95524bc443db8260.js +1 -0
- sky/dashboard/out/_next/static/chunks/3937.210053269f121201.js +1 -0
- sky/dashboard/out/_next/static/chunks/4725.42f21f250f91f65b.js +1 -0
- sky/dashboard/out/_next/static/chunks/4869.18e6a4361a380763.js +16 -0
- sky/dashboard/out/_next/static/chunks/4937.d6bf67771e353356.js +15 -0
- sky/dashboard/out/_next/static/chunks/5230-f3bb2663e442e86c.js +1 -0
- sky/dashboard/out/_next/static/chunks/5739-d67458fcb1386c92.js +8 -0
- sky/dashboard/out/_next/static/chunks/6135-d0e285ac5f3f2485.js +1 -0
- sky/dashboard/out/_next/static/chunks/616-3d59f75e2ccf9321.js +39 -0
- sky/dashboard/out/_next/static/chunks/6212-7bd06f60ba693125.js +13 -0
- sky/dashboard/out/_next/static/chunks/6601-234b1cf963c7280b.js +1 -0
- sky/dashboard/out/_next/static/chunks/691.6d99cbfba347cebf.js +55 -0
- sky/dashboard/out/_next/static/chunks/6989-983d3ae7a874de98.js +1 -0
- sky/dashboard/out/_next/static/chunks/6990-08b2a1cae076a943.js +1 -0
- sky/dashboard/out/_next/static/chunks/7411-b15471acd2cba716.js +41 -0
- sky/dashboard/out/_next/static/chunks/8969-9a8cca241b30db83.js +1 -0
- sky/dashboard/out/_next/static/chunks/9025.7937c16bc8623516.js +6 -0
- sky/dashboard/out/_next/static/chunks/938-40d15b6261ec8dc1.js +1 -0
- sky/dashboard/out/_next/static/chunks/9847.4c46c5e229c78704.js +30 -0
- sky/dashboard/out/_next/static/chunks/9984.78ee6d2c6fa4b0e8.js +1 -0
- sky/dashboard/out/_next/static/chunks/fd9d1056-86323a29a8f7e46a.js +1 -0
- sky/dashboard/out/_next/static/chunks/framework-cf60a09ccd051a10.js +33 -0
- sky/dashboard/out/_next/static/chunks/main-app-587214043926b3cc.js +1 -0
- sky/dashboard/out/_next/static/chunks/main-f15ccb73239a3bf1.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/_app-a67ae198457b9886.js +34 -0
- sky/dashboard/out/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-fa63e8b1d203f298.js +11 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-665fa5d96dd41d67.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters-956ad430075efee8.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/config-8620d099cbef8608.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/index-444f1804401f04ea.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/infra/[context]-9cfd875eecb6eaf5.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/infra-0fbdc9072f19fbe2.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-b25c109d6e41bcf4.js +11 -0
- sky/dashboard/out/_next/static/chunks/pages/jobs-6393a9edc7322b54.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/users-34d6bb10c3b3ee3d.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/volumes-225c8dae0634eb7f.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/workspace/new-92f741084a89e27b.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-4d41c9023287f59a.js +1 -0
- sky/dashboard/out/_next/static/chunks/pages/workspaces-e4cb7e97d37e93ad.js +1 -0
- sky/dashboard/out/_next/static/chunks/webpack-5adfc4d4b3db6f71.js +1 -0
- sky/dashboard/out/_next/static/oKqDxFQ88cquF4nQGE_0w/_buildManifest.js +1 -0
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/data/data_utils.py +25 -0
- sky/data/storage.py +1219 -1775
- sky/global_user_state.py +18 -8
- sky/jobs/__init__.py +3 -0
- sky/jobs/client/sdk.py +80 -3
- sky/jobs/controller.py +76 -25
- sky/jobs/recovery_strategy.py +80 -34
- sky/jobs/scheduler.py +68 -20
- sky/jobs/server/core.py +228 -136
- sky/jobs/server/server.py +40 -0
- sky/jobs/state.py +164 -31
- sky/jobs/utils.py +144 -68
- sky/logs/aws.py +4 -2
- sky/provision/kubernetes/utils.py +6 -4
- sky/provision/nebius/constants.py +3 -0
- sky/provision/vast/instance.py +2 -1
- sky/provision/vast/utils.py +9 -6
- sky/py.typed +0 -0
- sky/resources.py +24 -14
- sky/schemas/db/spot_jobs/002_cluster_pool.py +42 -0
- sky/serve/autoscalers.py +8 -0
- sky/serve/client/impl.py +188 -0
- sky/serve/client/sdk.py +12 -82
- sky/serve/constants.py +5 -1
- sky/serve/controller.py +5 -0
- sky/serve/replica_managers.py +112 -37
- sky/serve/serve_state.py +16 -6
- sky/serve/serve_utils.py +274 -77
- sky/serve/server/core.py +8 -525
- sky/serve/server/impl.py +709 -0
- sky/serve/service.py +13 -9
- sky/serve/service_spec.py +74 -4
- sky/server/constants.py +1 -1
- sky/server/requests/payloads.py +33 -0
- sky/server/requests/requests.py +18 -1
- sky/server/requests/serializers/decoders.py +12 -3
- sky/server/requests/serializers/encoders.py +13 -2
- sky/server/server.py +6 -1
- sky/skylet/events.py +9 -0
- sky/skypilot_config.py +24 -21
- sky/task.py +41 -11
- sky/templates/jobs-controller.yaml.j2 +3 -0
- sky/templates/sky-serve-controller.yaml.j2 +18 -2
- sky/users/server.py +1 -1
- sky/utils/command_runner.py +4 -2
- sky/utils/controller_utils.py +14 -10
- sky/utils/dag_utils.py +4 -2
- sky/utils/db/migration_utils.py +2 -4
- sky/utils/schemas.py +24 -19
- {skypilot_nightly-1.0.0.dev20250729.dist-info → skypilot_nightly-1.0.0.dev20250731.dist-info}/METADATA +1 -1
- {skypilot_nightly-1.0.0.dev20250729.dist-info → skypilot_nightly-1.0.0.dev20250731.dist-info}/RECORD +135 -130
- sky/dashboard/out/_next/static/Q2sVXboB_t7cgvntL-6nD/_buildManifest.js +0 -1
- sky/dashboard/out/_next/static/chunks/1043-869d9c78bf5dd3df.js +0 -1
- sky/dashboard/out/_next/static/chunks/1141-e49a159c30a6c4a7.js +0 -11
- sky/dashboard/out/_next/static/chunks/1559-18717d96ef2fcbe9.js +0 -30
- sky/dashboard/out/_next/static/chunks/1664-d65361e92b85e786.js +0 -1
- sky/dashboard/out/_next/static/chunks/1871-ea0e7283886407ca.js +0 -6
- sky/dashboard/out/_next/static/chunks/2003.b82e6db40ec4c463.js +0 -1
- sky/dashboard/out/_next/static/chunks/2350.23778a2b19aabd33.js +0 -1
- sky/dashboard/out/_next/static/chunks/2369.2d6e4757f8dfc2b7.js +0 -15
- sky/dashboard/out/_next/static/chunks/2641.74c19c4d45a2c034.js +0 -1
- sky/dashboard/out/_next/static/chunks/3698-9fa11dafb5cad4a6.js +0 -1
- sky/dashboard/out/_next/static/chunks/3785.59705416215ff08b.js +0 -1
- sky/dashboard/out/_next/static/chunks/3937.d7f1c55d1916c7f2.js +0 -1
- sky/dashboard/out/_next/static/chunks/4725.66125dcd9832aa5d.js +0 -1
- sky/dashboard/out/_next/static/chunks/4869.da729a7db3a31f43.js +0 -16
- sky/dashboard/out/_next/static/chunks/4937.d75809403fc264ac.js +0 -15
- sky/dashboard/out/_next/static/chunks/5230-df791914b54d91d9.js +0 -1
- sky/dashboard/out/_next/static/chunks/5739-5ea3ffa10fc884f2.js +0 -8
- sky/dashboard/out/_next/static/chunks/6135-2abbd0352f8ee061.js +0 -1
- sky/dashboard/out/_next/static/chunks/616-162f3033ffcd3d31.js +0 -39
- sky/dashboard/out/_next/static/chunks/6601-d4a381403a8bae91.js +0 -1
- sky/dashboard/out/_next/static/chunks/691.488b4aef97c28727.js +0 -55
- sky/dashboard/out/_next/static/chunks/6989-eab0e9c16b64fd9f.js +0 -1
- sky/dashboard/out/_next/static/chunks/6990-f64e03df359e04f7.js +0 -1
- sky/dashboard/out/_next/static/chunks/7411-2cc31dc0fdf2a9ad.js +0 -41
- sky/dashboard/out/_next/static/chunks/8969-8e0b2055bf5dd499.js +0 -1
- sky/dashboard/out/_next/static/chunks/9025.4a9099bdf3ed4875.js +0 -6
- sky/dashboard/out/_next/static/chunks/938-7ee806653aef0609.js +0 -1
- sky/dashboard/out/_next/static/chunks/9847.387abf8a14d722db.js +0 -30
- sky/dashboard/out/_next/static/chunks/9984.0460de9d3adf5582.js +0 -1
- sky/dashboard/out/_next/static/chunks/fd9d1056-61f2257a9cd8b32b.js +0 -1
- sky/dashboard/out/_next/static/chunks/framework-efc06c2733009cd3.js +0 -33
- sky/dashboard/out/_next/static/chunks/main-app-68c028b1bc5e1b72.js +0 -1
- sky/dashboard/out/_next/static/chunks/main-c0a4f1ea606d48d2.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/_app-da491665d4289aae.js +0 -34
- sky/dashboard/out/_next/static/chunks/pages/_error-c72a1f77a3c0be1b.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-2186770cc2de1623.js +0 -11
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]-95afb019ab85801c.js +0 -6
- sky/dashboard/out/_next/static/chunks/pages/clusters-3d4be4961e1c94eb.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/config-a2673b256b6d416f.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/index-89e7daf7b7df02e0.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/infra/[context]-a90b4fe4616dc501.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/infra-0d3d1f890c5d188a.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-dc0299ffefebcdbe.js +0 -16
- sky/dashboard/out/_next/static/chunks/pages/jobs-49f790d12a85027c.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/users-6790fcefd5487b13.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/volumes-61ea7ba7e56f8d06.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/workspace/new-5629d4e551dba1ee.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/workspaces/[name]-6bcd4b20914d76c9.js +0 -1
- sky/dashboard/out/_next/static/chunks/pages/workspaces-5f7fe4b7d55b8612.js +0 -1
- sky/dashboard/out/_next/static/chunks/webpack-a305898dc479711e.js +0 -1
- /sky/dashboard/out/_next/static/{Q2sVXboB_t7cgvntL-6nD → oKqDxFQ88cquF4nQGE_0w}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250729.dist-info → skypilot_nightly-1.0.0.dev20250731.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250729.dist-info → skypilot_nightly-1.0.0.dev20250731.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250729.dist-info → skypilot_nightly-1.0.0.dev20250731.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250729.dist-info → skypilot_nightly-1.0.0.dev20250731.dist-info}/top_level.txt +0 -0
sky/__init__.py
CHANGED
|
@@ -5,7 +5,7 @@ from typing import Optional
|
|
|
5
5
|
import urllib.request
|
|
6
6
|
|
|
7
7
|
# Replaced with the current commit when building the wheels.
|
|
8
|
-
_SKYPILOT_COMMIT_SHA = '
|
|
8
|
+
_SKYPILOT_COMMIT_SHA = '913f9dd651a2c363231eef760675f1dae49270a1'
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def _get_git_commit():
|
|
@@ -35,7 +35,7 @@ def _get_git_commit():
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
__commit__ = _get_git_commit()
|
|
38
|
-
__version__ = '1.0.0.
|
|
38
|
+
__version__ = '1.0.0.dev20250731'
|
|
39
39
|
__root_dir__ = os.path.dirname(os.path.abspath(__file__))
|
|
40
40
|
|
|
41
41
|
|
sky/backends/backend_utils.py
CHANGED
|
@@ -36,6 +36,7 @@ from sky.jobs import utils as managed_job_utils
|
|
|
36
36
|
from sky.provision import common as provision_common
|
|
37
37
|
from sky.provision import instance_setup
|
|
38
38
|
from sky.provision.kubernetes import utils as kubernetes_utils
|
|
39
|
+
from sky.serve import serve_utils
|
|
39
40
|
from sky.server.requests import requests as requests_lib
|
|
40
41
|
from sky.skylet import constants
|
|
41
42
|
from sky.usage import usage_lib
|
|
@@ -2625,7 +2626,9 @@ def is_controller_accessible(
|
|
|
2625
2626
|
failed to be connected.
|
|
2626
2627
|
"""
|
|
2627
2628
|
if (managed_job_utils.is_consolidation_mode() and
|
|
2628
|
-
controller == controller_utils.Controllers.JOBS_CONTROLLER
|
|
2629
|
+
controller == controller_utils.Controllers.JOBS_CONTROLLER
|
|
2630
|
+
) or (serve_utils.is_consolidation_mode() and
|
|
2631
|
+
controller == controller_utils.Controllers.SKY_SERVE_CONTROLLER):
|
|
2629
2632
|
cn = 'local-controller-consolidation'
|
|
2630
2633
|
return backends.LocalResourcesHandle(
|
|
2631
2634
|
cluster_name=cn,
|
|
@@ -3209,9 +3209,10 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3209
3209
|
self._open_ports(handle)
|
|
3210
3210
|
|
|
3211
3211
|
# Capture task YAML and command
|
|
3212
|
-
|
|
3212
|
+
user_specified_task_config = None
|
|
3213
3213
|
if task is not None:
|
|
3214
|
-
|
|
3214
|
+
user_specified_task_config = task.to_yaml_config(
|
|
3215
|
+
use_user_specified_yaml=True)
|
|
3215
3216
|
|
|
3216
3217
|
with timeline.Event('backend.provision.post_process'):
|
|
3217
3218
|
global_user_state.add_or_update_cluster(
|
|
@@ -3220,7 +3221,7 @@ class CloudVmRayBackend(backends.Backend['CloudVmRayResourceHandle']):
|
|
|
3220
3221
|
set(task.resources),
|
|
3221
3222
|
ready=True,
|
|
3222
3223
|
config_hash=config_hash,
|
|
3223
|
-
task_config=
|
|
3224
|
+
task_config=user_specified_task_config,
|
|
3224
3225
|
)
|
|
3225
3226
|
usage_lib.messages.usage.update_final_cluster_status(
|
|
3226
3227
|
status_lib.ClusterStatus.UP)
|
sky/catalog/__init__.py
CHANGED
|
@@ -91,7 +91,7 @@ def list_accelerator_counts(
|
|
|
91
91
|
region_filter: Optional[str] = None,
|
|
92
92
|
quantity_filter: Optional[int] = None,
|
|
93
93
|
clouds: CloudFilter = None,
|
|
94
|
-
) -> Dict[str, List[
|
|
94
|
+
) -> Dict[str, List[float]]:
|
|
95
95
|
"""Lists all accelerators offered by Sky and available counts.
|
|
96
96
|
|
|
97
97
|
Returns: A dictionary of canonical accelerator names mapped to a list
|
|
@@ -107,12 +107,12 @@ def list_accelerator_counts(
|
|
|
107
107
|
require_price=False)
|
|
108
108
|
if not isinstance(results, list):
|
|
109
109
|
results = [results]
|
|
110
|
-
accelerator_counts: Dict[str, Set[
|
|
110
|
+
accelerator_counts: Dict[str, Set[float]] = collections.defaultdict(set)
|
|
111
111
|
for result in results:
|
|
112
112
|
for gpu, items in result.items():
|
|
113
113
|
for item in items:
|
|
114
114
|
accelerator_counts[gpu].add(item.accelerator_count)
|
|
115
|
-
ret: Dict[str, List[
|
|
115
|
+
ret: Dict[str, List[float]] = {}
|
|
116
116
|
for gpu, counts in accelerator_counts.items():
|
|
117
117
|
ret[gpu] = sorted(counts)
|
|
118
118
|
return ret
|
sky/catalog/aws_catalog.py
CHANGED
|
@@ -38,14 +38,26 @@ _DEFAULT_INSTANCE_FAMILY = [
|
|
|
38
38
|
# CPU: Intel Ice Lake 8375C.
|
|
39
39
|
# Memory: 4 GiB RAM per 1 vCPU;
|
|
40
40
|
'm6i',
|
|
41
|
+
# This is the latest general-purpose instance family as of Jul 2025.
|
|
42
|
+
# CPU: Intel Sapphire Rapids.
|
|
43
|
+
# Memory: 4 GiB RAM per 1 vCPU;
|
|
44
|
+
'm7i',
|
|
41
45
|
# This is the latest memory-optimized instance family as of Mar 2023.
|
|
42
46
|
# CPU: Intel Ice Lake 8375C
|
|
43
47
|
# Memory: 8 GiB RAM per 1 vCPU;
|
|
44
48
|
'r6i',
|
|
49
|
+
# This is the latest memory-optimized instance family as of Jul 2025.
|
|
50
|
+
# CPU: Intel Sapphire Rapids.
|
|
51
|
+
# Memory: 8 GiB RAM per 1 vCPU;
|
|
52
|
+
'r7i',
|
|
45
53
|
# This is the latest compute-optimized instance family as of Mar 2023.
|
|
46
54
|
# CPU: Intel Ice Lake 8375C
|
|
47
55
|
# Memory: 2 GiB RAM per 1 vCPU;
|
|
48
56
|
'c6i',
|
|
57
|
+
# This is the latest compute-optimized instance family as of Jul 2025.
|
|
58
|
+
# CPU: Intel Sapphire Rapids.
|
|
59
|
+
# Memory: 2 GiB RAM per 1 vCPU;
|
|
60
|
+
'c7i',
|
|
49
61
|
]
|
|
50
62
|
_DEFAULT_NUM_VCPUS = 8
|
|
51
63
|
_DEFAULT_MEMORY_CPU_RATIO = 4
|
sky/catalog/common.py
CHANGED
|
@@ -51,7 +51,7 @@ class InstanceTypeInfo(NamedTuple):
|
|
|
51
51
|
cloud: str
|
|
52
52
|
instance_type: Optional[str]
|
|
53
53
|
accelerator_name: str
|
|
54
|
-
accelerator_count:
|
|
54
|
+
accelerator_count: float
|
|
55
55
|
cpu_count: Optional[float]
|
|
56
56
|
device_memory: Optional[float]
|
|
57
57
|
memory: Optional[float]
|
|
@@ -631,7 +631,7 @@ def list_accelerators_impl(
|
|
|
631
631
|
df = df[df['Region'].str.contains(region_filter,
|
|
632
632
|
case=case_sensitive,
|
|
633
633
|
regex=True)]
|
|
634
|
-
df['AcceleratorCount'] = df['AcceleratorCount'].astype(
|
|
634
|
+
df['AcceleratorCount'] = df['AcceleratorCount'].astype(float)
|
|
635
635
|
if quantity_filter is not None:
|
|
636
636
|
df = df[df['AcceleratorCount'] == quantity_filter]
|
|
637
637
|
grouped = df.groupby('AcceleratorName')
|
|
@@ -46,7 +46,7 @@ ALL_REGIONS = [
|
|
|
46
46
|
'eu-west-1',
|
|
47
47
|
'eu-west-2',
|
|
48
48
|
'eu-south-1',
|
|
49
|
-
|
|
49
|
+
'eu-south-2',
|
|
50
50
|
'eu-west-3',
|
|
51
51
|
'eu-north-1',
|
|
52
52
|
'me-south-1',
|
|
@@ -78,6 +78,10 @@ PRICING_TABLE_URL_FMT = 'https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws
|
|
|
78
78
|
# the permission to query the offerings of the instance.
|
|
79
79
|
# Ref: https://aws.amazon.com/ec2/instance-types/p4/
|
|
80
80
|
P4DE_REGIONS = ['us-east-1', 'us-west-2']
|
|
81
|
+
# g6f instances have fractional GPUs, but the API returns Count: 1 under
|
|
82
|
+
# GpuInfo. However, the GPU memory is properly scaled. Taking the instance GPU
|
|
83
|
+
# divided by the total memory of an L4 will give us the fraction of the GPU.
|
|
84
|
+
L4_GPU_MEMORY = 22888
|
|
81
85
|
|
|
82
86
|
regions_enabled: Optional[Set[str]] = None
|
|
83
87
|
|
|
@@ -313,6 +317,14 @@ def _get_instance_types_df(region: str) -> Union[str, 'pd.DataFrame']:
|
|
|
313
317
|
# AWS API is 'NVIDIA', which is incorrect. See #4652.
|
|
314
318
|
acc_name = 'H200'
|
|
315
319
|
acc_count = 8
|
|
320
|
+
if (row['InstanceType'].startswith('g6f') or
|
|
321
|
+
row['InstanceType'].startswith('gr6f')):
|
|
322
|
+
# These instance actually have only fractional GPUs, but the API
|
|
323
|
+
# returns Count: 1 under GpuInfo. We need to check the GPU
|
|
324
|
+
# memory to get the actual fraction of the GPU.
|
|
325
|
+
# See also Standard_NV{vcpu}ads_A10_v5 support on Azure.
|
|
326
|
+
fraction = row['GpuInfo']['TotalGpuMemoryInMiB'] / L4_GPU_MEMORY
|
|
327
|
+
acc_count = round(fraction, 3)
|
|
316
328
|
return pd.Series({
|
|
317
329
|
'AcceleratorName': acc_name,
|
|
318
330
|
'AcceleratorCount': acc_count,
|