modal 0.73.11__py3-none-any.whl → 0.73.13__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.
- modal/_runtime/gpu_memory_snapshot.py +1 -4
- modal/client.pyi +2 -2
- modal/gpu.py +3 -8
- {modal-0.73.11.dist-info → modal-0.73.13.dist-info}/METADATA +1 -1
- {modal-0.73.11.dist-info → modal-0.73.13.dist-info}/RECORD +13 -13
- modal_proto/api.proto +0 -1
- modal_proto/api_pb2.py +426 -426
- modal_proto/api_pb2.pyi +1 -4
- modal_version/_version_generated.py +1 -1
- {modal-0.73.11.dist-info → modal-0.73.13.dist-info}/LICENSE +0 -0
- {modal-0.73.11.dist-info → modal-0.73.13.dist-info}/WHEEL +0 -0
- {modal-0.73.11.dist-info → modal-0.73.13.dist-info}/entry_points.txt +0 -0
- {modal-0.73.11.dist-info → modal-0.73.13.dist-info}/top_level.txt +0 -0
@@ -36,15 +36,12 @@ def toggle():
|
|
36
36
|
logger.debug(f"Toggling CUDA checkpoint state for PID {pid}")
|
37
37
|
|
38
38
|
try:
|
39
|
-
cuda_checkpoint_lock_timeout_ms = 5 * 1000
|
40
39
|
subprocess.run(
|
41
40
|
[
|
42
41
|
CUDA_CHECKPOINT_PATH,
|
43
42
|
"--toggle",
|
44
43
|
"--pid",
|
45
44
|
str(pid),
|
46
|
-
"--timeout",
|
47
|
-
str(cuda_checkpoint_lock_timeout_ms),
|
48
45
|
],
|
49
46
|
check=True,
|
50
47
|
capture_output=True,
|
@@ -68,7 +65,6 @@ def get_state() -> CudaCheckpointState:
|
|
68
65
|
|
69
66
|
# Parse output to get state
|
70
67
|
state_str = result.stdout.strip().lower()
|
71
|
-
logger.debug(f"Raw state output: {state_str}")
|
72
68
|
return CudaCheckpointState(state_str)
|
73
69
|
|
74
70
|
except subprocess.CalledProcessError as e:
|
@@ -86,6 +82,7 @@ def wait_for_state(target_state: CudaCheckpointState, timeout_secs: float = 5.0)
|
|
86
82
|
|
87
83
|
if current_state == target_state:
|
88
84
|
logger.debug(f"Target state {target_state.value} reached")
|
85
|
+
break
|
89
86
|
|
90
87
|
if current_state == CudaCheckpointState.FAILED:
|
91
88
|
raise CudaCheckpointException(f"CUDA process state is {current_state}")
|
modal/client.pyi
CHANGED
@@ -27,7 +27,7 @@ class _Client:
|
|
27
27
|
_snapshotted: bool
|
28
28
|
|
29
29
|
def __init__(
|
30
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.
|
30
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.13"
|
31
31
|
): ...
|
32
32
|
def is_closed(self) -> bool: ...
|
33
33
|
@property
|
@@ -85,7 +85,7 @@ class Client:
|
|
85
85
|
_snapshotted: bool
|
86
86
|
|
87
87
|
def __init__(
|
88
|
-
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.
|
88
|
+
self, server_url: str, client_type: int, credentials: typing.Optional[tuple[str, str]], version: str = "0.73.13"
|
89
89
|
): ...
|
90
90
|
def is_closed(self) -> bool: ...
|
91
91
|
@property
|
modal/gpu.py
CHANGED
@@ -12,14 +12,12 @@ class _GPUConfig:
|
|
12
12
|
type: "api_pb2.GPUType.V" # Deprecated, at some point
|
13
13
|
count: int
|
14
14
|
gpu_type: str
|
15
|
-
memory: int = 0
|
16
15
|
|
17
16
|
def _to_proto(self) -> api_pb2.GPUConfig:
|
18
17
|
"""Convert this GPU config to an internal protobuf representation."""
|
19
18
|
return api_pb2.GPUConfig(
|
20
19
|
type=self.type,
|
21
20
|
count=self.count,
|
22
|
-
memory=self.memory,
|
23
21
|
gpu_type=self.gpu_type,
|
24
22
|
)
|
25
23
|
|
@@ -73,17 +71,14 @@ class A100(_GPUConfig):
|
|
73
71
|
size: Union[str, None] = None, # Select GB configuration of GPU device: "40GB" or "80GB". Defaults to "40GB".
|
74
72
|
):
|
75
73
|
if size == "40GB" or not size:
|
76
|
-
super().__init__(api_pb2.GPU_TYPE_A100, count, "A100-40GB"
|
74
|
+
super().__init__(api_pb2.GPU_TYPE_A100, count, "A100-40GB")
|
77
75
|
elif size == "80GB":
|
78
|
-
super().__init__(api_pb2.GPU_TYPE_A100_80GB, count, "A100-80GB"
|
76
|
+
super().__init__(api_pb2.GPU_TYPE_A100_80GB, count, "A100-80GB")
|
79
77
|
else:
|
80
78
|
raise ValueError(f"size='{size}' is invalid. A100s can only have memory values of 40GB or 80GB.")
|
81
79
|
|
82
80
|
def __repr__(self):
|
83
|
-
|
84
|
-
return f"GPU(A100-80GB, count={self.count})"
|
85
|
-
else:
|
86
|
-
return f"GPU(A100-40GB, count={self.count})"
|
81
|
+
return f"GPU({self.gpu_type}, count={self.count})"
|
87
82
|
|
88
83
|
|
89
84
|
class A10G(_GPUConfig):
|
@@ -21,7 +21,7 @@ modal/app.py,sha256=MaWCYgNx8y2GQhmaXQBMKKAAfCYfdxrdYs6zCBoJzwI,44628
|
|
21
21
|
modal/app.pyi,sha256=lxiuWzE_OLb3WHg-H7Pek9DGBuCUzZ55P594VhJL5LA,26113
|
22
22
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
23
23
|
modal/client.py,sha256=8SQawr7P1PNUCq1UmJMUQXG2jIo4Nmdcs311XqrNLRE,15276
|
24
|
-
modal/client.pyi,sha256=
|
24
|
+
modal/client.pyi,sha256=iN1HdOxRFw1Xq2eLnhlYAm36HxUiLxMIw01L0CCyR30,7593
|
25
25
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
26
26
|
modal/cloud_bucket_mount.pyi,sha256=30T3K1a89l6wzmEJ_J9iWv9SknoGqaZDx59Xs-ZQcmk,1607
|
27
27
|
modal/cls.py,sha256=kNnZrBYVXOhgEXU0rDWk2Hr-bQRrsZkMKDgC-TD_6Bs,31063
|
@@ -41,7 +41,7 @@ modal/file_io.pyi,sha256=NTRft1tbPSWf9TlWVeZmTlgB5AZ_Zhu2srWIrWr7brk,9445
|
|
41
41
|
modal/file_pattern_matcher.py,sha256=1cZ4V2wSLiaXqAqStETSwp3bzDD6QZOt6pmmjk3Okz4,6505
|
42
42
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
43
43
|
modal/functions.pyi,sha256=YflJx4BhzmJLJzpVWbuAMv0Qv63Mgb3r9qZqrgBEr1w,14289
|
44
|
-
modal/gpu.py,sha256=
|
44
|
+
modal/gpu.py,sha256=emiPRWAgr10f5twtUhC3kBZQZ91fZ74VNdePy7YAspE,7267
|
45
45
|
modal/image.py,sha256=ekE2693foy30Xi1LM3swKZPW6HuaACj-OBvfspVSyIE,91509
|
46
46
|
modal/image.pyi,sha256=kdJzy1eaxNPZeCpE0TMYYLhJ6UWmkfRDeb_vzngJUoQ,26462
|
47
47
|
modal/io_streams.py,sha256=QkQiizKRzd5bnbKQsap31LJgBYlAnj4-XkV_50xPYX0,15079
|
@@ -85,7 +85,7 @@ modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
85
85
|
modal/_runtime/asgi.py,sha256=c4hmaMW1pLo-cm7ouriJjieuFm4ZF6D2LMy0638sfOs,22139
|
86
86
|
modal/_runtime/container_io_manager.py,sha256=L6qv-Mo3mN3ttR5GX-G36cUhH_oz8wdP5WG0HT5FFzg,44619
|
87
87
|
modal/_runtime/execution_context.py,sha256=E6ofm6j1POXGPxS841X3V7JU6NheVb8OkQc7JpLq4Kg,2712
|
88
|
-
modal/_runtime/gpu_memory_snapshot.py,sha256=
|
88
|
+
modal/_runtime/gpu_memory_snapshot.py,sha256=tA3m1d1cwnmHpvpCeN_WijDd6n8byn7LWlpicbIxiOI,3144
|
89
89
|
modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
|
90
90
|
modal/_runtime/user_code_imports.py,sha256=zl_Mq9dsrVF62x3w-iNK1YAhZKYAXeFaGpd4G7AySTc,14746
|
91
91
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
@@ -154,10 +154,10 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
154
154
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
155
155
|
modal_global_objects/mounts/python_standalone.py,sha256=EsC-hdPtiAPOwgW9emHN6muNUkrJwR8dYxroVArxHxM,1841
|
156
156
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
157
|
-
modal_proto/api.proto,sha256=
|
157
|
+
modal_proto/api.proto,sha256=0sTvOLxxQPMLMLN5YDreXf8KhLhZF3xDOBDkz3wnmdI,85243
|
158
158
|
modal_proto/api_grpc.py,sha256=FYGqDegM_w_qxdtlxum8k31mDibKoMvmNxv_p9cKdKs,109056
|
159
|
-
modal_proto/api_pb2.py,sha256=
|
160
|
-
modal_proto/api_pb2.pyi,sha256=
|
159
|
+
modal_proto/api_pb2.py,sha256=XQDiHbY5FwTt4y_mdFnGmKajgRk8ABhDygcdZQ-FDWw,311068
|
160
|
+
modal_proto/api_pb2.pyi,sha256=InI2402-j9scYBCnlNTFSb8lmstfGeUqNar-2IteJdQ,415264
|
161
161
|
modal_proto/api_pb2_grpc.py,sha256=DNp0Et5i_Ey4dKx_1o1LRtYhyWYyT0NzTcAY4EcHn-c,235765
|
162
162
|
modal_proto/api_pb2_grpc.pyi,sha256=RI6tWC3L8EIN4-izFSEGPPJl5Ta0lXPNuHUJaWAr35s,54892
|
163
163
|
modal_proto/modal_api_grpc.py,sha256=UG8WJU81afrWPwItWB4Ag64E9EpyREMpBbAVGVEYJiM,14550
|
@@ -171,10 +171,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
171
171
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
172
|
modal_version/__init__.py,sha256=wiJQ53c-OMs0Xf1UeXOxQ7FwlV1VzIjnX6o-pRYZ_Pk,470
|
173
173
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
174
|
-
modal_version/_version_generated.py,sha256=
|
175
|
-
modal-0.73.
|
176
|
-
modal-0.73.
|
177
|
-
modal-0.73.
|
178
|
-
modal-0.73.
|
179
|
-
modal-0.73.
|
180
|
-
modal-0.73.
|
174
|
+
modal_version/_version_generated.py,sha256=2drcLOG3ZiHBj7SzNwPG-zzUN85-bt5e0PFZoJnajJg,149
|
175
|
+
modal-0.73.13.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
176
|
+
modal-0.73.13.dist-info/METADATA,sha256=obTzgYG7UDe0iMbJLuSi6T5qU_QpxZQBi0uTMnSEF7w,2330
|
177
|
+
modal-0.73.13.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
178
|
+
modal-0.73.13.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
179
|
+
modal-0.73.13.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
180
|
+
modal-0.73.13.dist-info/RECORD,,
|