trainml 0.5.17__py3-none-any.whl → 1.0.1__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.
- examples/local_storage.py +0 -2
- tests/integration/test_checkpoints_integration.py +4 -3
- tests/integration/test_datasets_integration.py +5 -3
- tests/integration/test_jobs_integration.py +33 -27
- tests/integration/test_models_integration.py +7 -3
- tests/integration/test_volumes_integration.py +2 -2
- tests/unit/cli/test_cli_checkpoint_unit.py +312 -1
- tests/unit/cloudbender/test_nodes_unit.py +112 -0
- tests/unit/cloudbender/test_providers_unit.py +96 -0
- tests/unit/cloudbender/test_regions_unit.py +106 -0
- tests/unit/cloudbender/test_services_unit.py +141 -0
- tests/unit/conftest.py +23 -10
- tests/unit/projects/test_project_data_connectors_unit.py +39 -0
- tests/unit/projects/test_project_datastores_unit.py +37 -0
- tests/unit/projects/test_project_members_unit.py +46 -0
- tests/unit/projects/test_project_services_unit.py +65 -0
- tests/unit/projects/test_projects_unit.py +16 -0
- tests/unit/test_auth_unit.py +17 -2
- tests/unit/test_checkpoints_unit.py +256 -71
- tests/unit/test_datasets_unit.py +218 -68
- tests/unit/test_exceptions.py +133 -0
- tests/unit/test_gpu_types_unit.py +11 -1
- tests/unit/test_jobs_unit.py +1014 -95
- tests/unit/test_main_unit.py +20 -0
- tests/unit/test_models_unit.py +218 -70
- tests/unit/test_trainml_unit.py +627 -3
- tests/unit/test_volumes_unit.py +211 -70
- tests/unit/utils/__init__.py +1 -0
- tests/unit/utils/test_transfer_unit.py +4260 -0
- trainml/__init__.py +1 -1
- trainml/checkpoints.py +56 -57
- trainml/cli/__init__.py +6 -3
- trainml/cli/checkpoint.py +18 -57
- trainml/cli/dataset.py +17 -57
- trainml/cli/job/__init__.py +89 -67
- trainml/cli/job/create.py +51 -24
- trainml/cli/model.py +14 -56
- trainml/cli/volume.py +18 -57
- trainml/datasets.py +50 -55
- trainml/jobs.py +269 -69
- trainml/models.py +51 -55
- trainml/trainml.py +159 -114
- trainml/utils/__init__.py +1 -0
- trainml/utils/auth.py +641 -0
- trainml/utils/transfer.py +647 -0
- trainml/volumes.py +48 -53
- {trainml-0.5.17.dist-info → trainml-1.0.1.dist-info}/METADATA +3 -3
- {trainml-0.5.17.dist-info → trainml-1.0.1.dist-info}/RECORD +52 -46
- {trainml-0.5.17.dist-info → trainml-1.0.1.dist-info}/LICENSE +0 -0
- {trainml-0.5.17.dist-info → trainml-1.0.1.dist-info}/WHEEL +0 -0
- {trainml-0.5.17.dist-info → trainml-1.0.1.dist-info}/entry_points.txt +0 -0
- {trainml-0.5.17.dist-info → trainml-1.0.1.dist-info}/top_level.txt +0 -0
trainml/volumes.py
CHANGED
|
@@ -10,7 +10,7 @@ from .exceptions import (
|
|
|
10
10
|
SpecificationError,
|
|
11
11
|
TrainMLException,
|
|
12
12
|
)
|
|
13
|
-
from .
|
|
13
|
+
from trainml.utils.transfer import upload, download
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class Volumes(object):
|
|
@@ -56,7 +56,9 @@ class Volumes(object):
|
|
|
56
56
|
return volume
|
|
57
57
|
|
|
58
58
|
async def remove(self, id, **kwargs):
|
|
59
|
-
await self.trainml._query(
|
|
59
|
+
await self.trainml._query(
|
|
60
|
+
f"/volume/{id}", "DELETE", dict(**kwargs, force=True)
|
|
61
|
+
)
|
|
60
62
|
|
|
61
63
|
|
|
62
64
|
class Volume:
|
|
@@ -120,56 +122,45 @@ class Volume:
|
|
|
120
122
|
)
|
|
121
123
|
return resp
|
|
122
124
|
|
|
123
|
-
async def get_connection_utility_url(self):
|
|
124
|
-
resp = await self.trainml._query(
|
|
125
|
-
f"/volume/{self._id}/download",
|
|
126
|
-
"GET",
|
|
127
|
-
dict(project_uuid=self._project_uuid),
|
|
128
|
-
)
|
|
129
|
-
return resp
|
|
130
|
-
|
|
131
|
-
def get_connection_details(self):
|
|
132
|
-
if self._volume.get("vpn"):
|
|
133
|
-
details = dict(
|
|
134
|
-
entity_type="volume",
|
|
135
|
-
project_uuid=self._volume.get("project_uuid"),
|
|
136
|
-
cidr=self._volume.get("vpn").get("cidr"),
|
|
137
|
-
ssh_port=self._volume.get("vpn").get("client").get("ssh_port"),
|
|
138
|
-
input_path=(
|
|
139
|
-
self._volume.get("source_uri")
|
|
140
|
-
if self.status in ["new", "downloading"]
|
|
141
|
-
else None
|
|
142
|
-
),
|
|
143
|
-
output_path=(
|
|
144
|
-
self._volume.get("output_uri")
|
|
145
|
-
if self.status == "exporting"
|
|
146
|
-
else None
|
|
147
|
-
),
|
|
148
|
-
)
|
|
149
|
-
else:
|
|
150
|
-
details = dict()
|
|
151
|
-
return details
|
|
152
|
-
|
|
153
125
|
async def connect(self):
|
|
154
|
-
if self.status in ["
|
|
155
|
-
|
|
156
|
-
"
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
self.trainml, entity_type="volume", id=self.id, entity=self
|
|
163
|
-
)
|
|
164
|
-
await connection.start()
|
|
165
|
-
return connection.status
|
|
126
|
+
if self.status not in ["downloading", "exporting"]:
|
|
127
|
+
if self.status == "new":
|
|
128
|
+
await self.wait_for("downloading")
|
|
129
|
+
else:
|
|
130
|
+
raise SpecificationError(
|
|
131
|
+
"status",
|
|
132
|
+
f"You can only connect to downloading or exporting volumes.",
|
|
133
|
+
)
|
|
166
134
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
135
|
+
# Refresh to get latest entity data
|
|
136
|
+
await self.refresh()
|
|
137
|
+
|
|
138
|
+
if self.status == "downloading":
|
|
139
|
+
# Upload task - get auth_token, hostname, and source_uri from volume
|
|
140
|
+
auth_token = self._volume.get("auth_token")
|
|
141
|
+
hostname = self._volume.get("hostname")
|
|
142
|
+
source_uri = self._volume.get("source_uri")
|
|
143
|
+
|
|
144
|
+
if not auth_token or not hostname or not source_uri:
|
|
145
|
+
raise SpecificationError(
|
|
146
|
+
"status",
|
|
147
|
+
f"Volume in downloading status missing required connection properties (auth_token, hostname, source_uri).",
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
await upload(hostname, auth_token, source_uri)
|
|
151
|
+
elif self.status == "exporting":
|
|
152
|
+
# Download task - get auth_token, hostname, and output_uri from volume
|
|
153
|
+
auth_token = self._volume.get("auth_token")
|
|
154
|
+
hostname = self._volume.get("hostname")
|
|
155
|
+
output_uri = self._volume.get("output_uri")
|
|
156
|
+
|
|
157
|
+
if not auth_token or not hostname or not output_uri:
|
|
158
|
+
raise SpecificationError(
|
|
159
|
+
"status",
|
|
160
|
+
f"Volume in exporting status missing required connection properties (auth_token, hostname, output_uri).",
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
await download(hostname, auth_token, output_uri)
|
|
173
164
|
|
|
174
165
|
async def remove(self, force=False):
|
|
175
166
|
await self.trainml._query(
|
|
@@ -208,7 +199,9 @@ class Volume:
|
|
|
208
199
|
if msg_handler:
|
|
209
200
|
msg_handler(data)
|
|
210
201
|
else:
|
|
211
|
-
timestamp = datetime.fromtimestamp(
|
|
202
|
+
timestamp = datetime.fromtimestamp(
|
|
203
|
+
int(data.get("time")) / 1000
|
|
204
|
+
)
|
|
212
205
|
print(
|
|
213
206
|
f"{timestamp.strftime('%m/%d/%Y, %H:%M:%S')}: {data.get('msg').rstrip()}"
|
|
214
207
|
)
|
|
@@ -237,7 +230,7 @@ class Volume:
|
|
|
237
230
|
async def wait_for(self, status, timeout=300):
|
|
238
231
|
if self.status == status:
|
|
239
232
|
return
|
|
240
|
-
valid_statuses = ["downloading", "ready", "archived"]
|
|
233
|
+
valid_statuses = ["downloading", "ready", "exporting", "archived"]
|
|
241
234
|
if not status in valid_statuses:
|
|
242
235
|
raise SpecificationError(
|
|
243
236
|
"status",
|
|
@@ -252,7 +245,9 @@ class Volume:
|
|
|
252
245
|
)
|
|
253
246
|
POLL_INTERVAL_MIN = 5
|
|
254
247
|
POLL_INTERVAL_MAX = 60
|
|
255
|
-
POLL_INTERVAL = max(
|
|
248
|
+
POLL_INTERVAL = max(
|
|
249
|
+
min(timeout / 60, POLL_INTERVAL_MAX), POLL_INTERVAL_MIN
|
|
250
|
+
)
|
|
256
251
|
retry_count = math.ceil(timeout / POLL_INTERVAL)
|
|
257
252
|
count = 0
|
|
258
253
|
while count < retry_count:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: trainml
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: trainML client SDK and command line utilities
|
|
5
5
|
Home-page: https://github.com/trainML/trainml-cli
|
|
6
6
|
Author: trainML
|
|
@@ -12,8 +12,8 @@ Classifier: Programming Language :: Python :: 3
|
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.8
|
|
13
13
|
Requires-Python: >=3.8
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
|
-
Requires-Dist: aiodocker
|
|
16
15
|
Requires-Dist: aiohttp
|
|
16
|
+
Requires-Dist: aiofiles
|
|
17
17
|
Requires-Dist: boto3
|
|
18
18
|
Requires-Dist: Click (>8)
|
|
19
19
|
Requires-Dist: python-jose[cryptography]
|
|
@@ -190,7 +190,7 @@ To list all datasets:
|
|
|
190
190
|
trainml dataset list
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
To connect to a job that
|
|
193
|
+
To connect to a job that uses the "local" file transfer method:
|
|
194
194
|
|
|
195
195
|
```
|
|
196
196
|
trainml job connect <job ID or name>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
examples/create_dataset_and_training_job.py,sha256=Ht6soyBZxt8qA9Fp6zAW2syGEdasvyYp-qvQqE18g6k,1178
|
|
3
|
-
examples/local_storage.py,sha256=
|
|
3
|
+
examples/local_storage.py,sha256=vI67RbDjWvXovUv9ahoj81KJIJxXdIU2J4PwT_vCalI,1687
|
|
4
4
|
examples/training_inference_pipeline.py,sha256=SNr4RFT9y69F9G9tMD8ONUbJmXRFrq1yxynq-FbfEf8,2334
|
|
5
5
|
tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
tests/integration/conftest.py,sha256=otgb7lZu62_5zAMAsPpr0U2j0h5lApPlDRCiu7ZfDr8,1135
|
|
7
|
-
tests/integration/test_checkpoints_integration.py,sha256=
|
|
8
|
-
tests/integration/test_datasets_integration.py,sha256=
|
|
7
|
+
tests/integration/test_checkpoints_integration.py,sha256=pUu8PyBdnpJjHhcFe76SqgOvhNbNAiLk1dFXvKiwPpg,3219
|
|
8
|
+
tests/integration/test_datasets_integration.py,sha256=TfyAMBjLrIVRW-3h0mox69ll7P-_5KQMSyX8toTR2k0,3518
|
|
9
9
|
tests/integration/test_environments_integration.py,sha256=0IckhJvQhd8j4Ouiu0hMq2b7iA1dbZpZYmknyfWjsFM,1403
|
|
10
10
|
tests/integration/test_gpu_types_integration.py,sha256=V2OncokZWWVq_l5FSmKEDM4EsWrmpB-zKiVPt-we0aY,1256
|
|
11
|
-
tests/integration/test_jobs_integration.py,sha256=
|
|
12
|
-
tests/integration/test_models_integration.py,sha256=
|
|
13
|
-
tests/integration/test_volumes_integration.py,sha256=
|
|
11
|
+
tests/integration/test_jobs_integration.py,sha256=AQnnoSR75Qqm2XouEUCiVt-6wQbxf8c7iVY9c16lAmQ,25386
|
|
12
|
+
tests/integration/test_models_integration.py,sha256=VAyiXel3E8dAizDALpYYtgazek07y-tIErIhGIS8BXc,2924
|
|
13
|
+
tests/integration/test_volumes_integration.py,sha256=0_D0-mY72_UdZH6clwl-hGwg-yqF8c7mJ70cyyHaBH0,3268
|
|
14
14
|
tests/integration/cloudbender/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
tests/integration/cloudbender/conftest.py,sha256=jBYUHKJioI-WHM-d0Y4lq5pD4LiOPINj6K9kQkgaGWY,777
|
|
16
16
|
tests/integration/cloudbender/test_providers_integration.py,sha256=mQn2dr4oMpctCVCVs53G5P0Raa0U2uBxEYjZtFFSvTg,1327
|
|
@@ -26,21 +26,22 @@ tests/integration/projects/test_projects_members_integration.py,sha256=bEc9AqC-Y
|
|
|
26
26
|
tests/integration/projects/test_projects_secrets_integration.py,sha256=dnIT0KiHnXBVP-azfw8MCspTjX7q1ic03rz8XZNijvU,1520
|
|
27
27
|
tests/integration/projects/test_projects_services_integration.py,sha256=3DpOtVMIdG_Icp4s7JxMT70ZDKC1wMD8imkKjlQChb0,1569
|
|
28
28
|
tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
tests/unit/conftest.py,sha256=
|
|
30
|
-
tests/unit/test_auth_unit.py,sha256=
|
|
31
|
-
tests/unit/test_checkpoints_unit.py,sha256=
|
|
29
|
+
tests/unit/conftest.py,sha256=7pLqYwSo2ApqWNtBTj7SQwSGl1R2haxOCoUyUzoFkl8,35592
|
|
30
|
+
tests/unit/test_auth_unit.py,sha256=o6mqzEmqWqvWirMitcHZtn_ScNoQ5jZ20HWrA4OVnPs,1413
|
|
31
|
+
tests/unit/test_checkpoints_unit.py,sha256=dAgzXVmdqUyYrzysWM8GrlEM4xJYOf-IH7WB4v87IC4,21914
|
|
32
32
|
tests/unit/test_connections_unit.py,sha256=FzN2ddQxNpjxzNGUsXhjTk0HnD24wSPelPTL4o_r-Ho,5507
|
|
33
|
-
tests/unit/test_datasets_unit.py,sha256=
|
|
33
|
+
tests/unit/test_datasets_unit.py,sha256=xyaHdqDzHetGA2QQ1Vh4j-h_FjC-EC5pb3VTay8sfGY,21135
|
|
34
34
|
tests/unit/test_environments_unit.py,sha256=1QFGf1xwM0yKCyVHT_Xi0DX8g0Aelr0mcqAImEXJfQU,1882
|
|
35
|
-
tests/unit/test_exceptions.py,sha256=
|
|
36
|
-
tests/unit/test_gpu_types_unit.py,sha256=
|
|
37
|
-
tests/unit/test_jobs_unit.py,sha256=
|
|
38
|
-
tests/unit/
|
|
39
|
-
tests/unit/
|
|
40
|
-
tests/unit/
|
|
35
|
+
tests/unit/test_exceptions.py,sha256=uAhCXjbzA_m4No49bzbbBoYtvV0TldvxYYJPikcMZH0,5749
|
|
36
|
+
tests/unit/test_gpu_types_unit.py,sha256=KmlmckRb-Faw8vfCl95HAHB51qei9HNElcN16V2gJfg,2526
|
|
37
|
+
tests/unit/test_jobs_unit.py,sha256=byjdqe1TGEPCp5ExU5IS1tcu9eGotf1s2j-lA3FO058,63964
|
|
38
|
+
tests/unit/test_main_unit.py,sha256=aC4-BsdE_bQoR61c0z0ZWOgfCaphSjgVyW1hIZqbSfk,627
|
|
39
|
+
tests/unit/test_models_unit.py,sha256=S-WwRH-I3XE_ie6u-GQtwo95v-X6YeEBl5QFB76dauE,20127
|
|
40
|
+
tests/unit/test_trainml_unit.py,sha256=N8yMUiSzA5A6ewMH-R2y9O5U8LDQwzEnHMLlwl4DjXI,23756
|
|
41
|
+
tests/unit/test_volumes_unit.py,sha256=MH7CddtRFhH3Bn3k_SPVyt0EiramjLAYP0Kn4n4Sz5E,20185
|
|
41
42
|
tests/unit/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
43
|
tests/unit/cli/conftest.py,sha256=w6p_2URicywJKUCtY79tSD_mx8cwJtxHbK_Lu3grOYs,236
|
|
43
|
-
tests/unit/cli/test_cli_checkpoint_unit.py,sha256=
|
|
44
|
+
tests/unit/cli/test_cli_checkpoint_unit.py,sha256=2MGaSRmjechSgcgwQUQ1HwasROMnf93icLJRpjUOWek,11830
|
|
44
45
|
tests/unit/cli/test_cli_datasets_unit.py,sha256=46LSaGHn21r3Xsd8GUDMTXTqU83m4puLY7U5XehkbMk,653
|
|
45
46
|
tests/unit/cli/test_cli_environment_unit.py,sha256=7FFKFPVa6yqJqujTXD_tsSUDruW5KhlLgShPZTn1Eio,683
|
|
46
47
|
tests/unit/cli/test_cli_gpu_unit.py,sha256=FIq3tQIDmeD-pvxkhJKMykfnlWcVxho2vRkoCMXgQxE,650
|
|
@@ -66,39 +67,41 @@ tests/unit/cloudbender/test_data_connectors_unit.py,sha256=qy97mNAcy_xEkh8obBobH
|
|
|
66
67
|
tests/unit/cloudbender/test_datastores_unit.py,sha256=5XUczUrOQ2Zgfb2IbJeEtYxbBWRltEVJ1KIC_UeQjEY,5281
|
|
67
68
|
tests/unit/cloudbender/test_device_configs_unit.py,sha256=lzyCuF7MRoQrtJVTQFL27lqPnRwQFv25htPgJqDuQI8,5714
|
|
68
69
|
tests/unit/cloudbender/test_devices_unit.py,sha256=QBWnlOe1tw_XNA_i-yDHkmpGvtK36f2u1HhoXquoVaE,9103
|
|
69
|
-
tests/unit/cloudbender/test_nodes_unit.py,sha256=
|
|
70
|
-
tests/unit/cloudbender/test_providers_unit.py,sha256=
|
|
71
|
-
tests/unit/cloudbender/test_regions_unit.py,sha256=
|
|
72
|
-
tests/unit/cloudbender/test_services_unit.py,sha256=
|
|
70
|
+
tests/unit/cloudbender/test_nodes_unit.py,sha256=xiXHixKFH0NL1b4sp4oT_0XiLIDifCsglVloZSaWXdc,10928
|
|
71
|
+
tests/unit/cloudbender/test_providers_unit.py,sha256=lDKYGP2pROxb-dtDVPz5Sz55ggnK68hAvsIy6AzL5tw,8588
|
|
72
|
+
tests/unit/cloudbender/test_regions_unit.py,sha256=DJhkBJ-5jHKxCwCAdtV041xzIfjTGrKE77DzEFX-5Nc,10961
|
|
73
|
+
tests/unit/cloudbender/test_services_unit.py,sha256=R4Vu3lq2jT_qQaxwRk449oqAhYrMFbCNp3KS4Pke_Hc,10956
|
|
73
74
|
tests/unit/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
75
|
tests/unit/projects/test_project_credentials_unit.py,sha256=ObTaJ7_g0MP5N-0qHWdeYips0in1j_4UkOhXXI2FFwo,3480
|
|
75
|
-
tests/unit/projects/test_project_data_connectors_unit.py,sha256=
|
|
76
|
-
tests/unit/projects/test_project_datastores_unit.py,sha256=
|
|
77
|
-
tests/unit/projects/test_project_members_unit.py,sha256=
|
|
76
|
+
tests/unit/projects/test_project_data_connectors_unit.py,sha256=BceR9nqcrR_8fHXG2la4h4tMRrn2vUHptFDVhHCx0uU,5004
|
|
77
|
+
tests/unit/projects/test_project_datastores_unit.py,sha256=VRl8ksYJKGa0m-PbBu1YVeBx_lIEry6Cu8mWPivQ_hs,4646
|
|
78
|
+
tests/unit/projects/test_project_members_unit.py,sha256=OJbiRdDzUbhefiM5y5qDhjHzy0eRCwsWuwfV_2NEZsI,5097
|
|
78
79
|
tests/unit/projects/test_project_secrets_unit.py,sha256=StVlY-ZR3CKxXAt9NL8hTkXUEdgGESH0m6foEPXKE-4,3276
|
|
79
|
-
tests/unit/projects/test_project_services_unit.py,sha256=
|
|
80
|
-
tests/unit/projects/test_projects_unit.py,sha256=
|
|
81
|
-
|
|
80
|
+
tests/unit/projects/test_project_services_unit.py,sha256=qGYVcs8CPF7DklPUQS3th8rZ42LGfeXiFsV__WTzUYg,6140
|
|
81
|
+
tests/unit/projects/test_projects_unit.py,sha256=baI9-HRRSs4IPd82329zHWRGPYjNlJQ1qG4Hngcu6ds,4409
|
|
82
|
+
tests/unit/utils/__init__.py,sha256=VDy3m4Lfazpey8NMzHWdgcs3T9aaXWuH7pglIjCnZW0,38
|
|
83
|
+
tests/unit/utils/test_transfer_unit.py,sha256=seYUQwQK93kiZjfXEF_3ZN40za3xUTU61oXIyC4na0o,188309
|
|
84
|
+
trainml/__init__.py,sha256=Jjeuhm0-YUNAgrdmG7fXrw6VgW19jN5yW0cz3JWwO98,432
|
|
82
85
|
trainml/__main__.py,sha256=JgErYkiskih8Y6oRwowALtR-rwQhAAdqOYWjQraRIPI,59
|
|
83
86
|
trainml/auth.py,sha256=clbx5S5prJ3u62aEESdBXIHF_HmreQ-L1ShxcyWQNDs,26565
|
|
84
|
-
trainml/checkpoints.py,sha256=
|
|
87
|
+
trainml/checkpoints.py,sha256=KEDS3xRZa1h5tsT6ZEsS5aanOfC-S_8yaeX52JubO4E,8924
|
|
85
88
|
trainml/connections.py,sha256=h-S1NZbOkaXpIlpRStA6q-3eXc_OMlFWOLzF8R9SVG8,20029
|
|
86
|
-
trainml/datasets.py,sha256=
|
|
89
|
+
trainml/datasets.py,sha256=T3z5iOMfFXYea002iPuVBURl0_Eia5nKLC4bOYmySXI,8690
|
|
87
90
|
trainml/environments.py,sha256=OH4o08zXZ7IJ2CiA1rPnys2Fl45r8qvQHfM2mCBRAIc,1507
|
|
88
91
|
trainml/exceptions.py,sha256=Qdof2fKRvbMiwarX1VSw1XJXXJjY71H4U3v05nE7-7g,5468
|
|
89
92
|
trainml/gpu_types.py,sha256=mm-dwfYc02192bmYPIJmzesndyBcoOdkKYBaYZXOUwU,1901
|
|
90
|
-
trainml/jobs.py,sha256=
|
|
91
|
-
trainml/models.py,sha256=
|
|
92
|
-
trainml/trainml.py,sha256=
|
|
93
|
-
trainml/volumes.py,sha256=
|
|
94
|
-
trainml/cli/__init__.py,sha256=
|
|
95
|
-
trainml/cli/checkpoint.py,sha256=
|
|
93
|
+
trainml/jobs.py,sha256=1XzZrAQ13a35VDxG-x2gs2OKkgHdha_LbVrp-dlBQDE,26737
|
|
94
|
+
trainml/models.py,sha256=PmbTNQKFlPqfRbq93UMpmo5za9qbNFmQdx6BKdejLXA,8339
|
|
95
|
+
trainml/trainml.py,sha256=ZQy87waJniunebTSYfrOAlzIDY4bGxw8InPj7BjowtU,13688
|
|
96
|
+
trainml/volumes.py,sha256=4Y8wWMymGWKOopRU3yV3NMyTrO2FrDJzdH7dN3hg8yQ,8533
|
|
97
|
+
trainml/cli/__init__.py,sha256=rNiCPZpAeQSbZwceyQv0zmejzILVz5Km2lCiLw4uqjE,4330
|
|
98
|
+
trainml/cli/checkpoint.py,sha256=feiqjeBn4HedBEQgPfENL8AtDeP76t2n-Sdcx9-A30o,6020
|
|
96
99
|
trainml/cli/connection.py,sha256=ELV6bPL30dzttFNxDU7Fb74R8oPL_E70k7TcJEzbwtQ,1700
|
|
97
|
-
trainml/cli/dataset.py,sha256=
|
|
100
|
+
trainml/cli/dataset.py,sha256=VNKjzYasKTUtVnOI58LW1Gq1VUyZcp7fTeQT9gw-1Xs,5721
|
|
98
101
|
trainml/cli/environment.py,sha256=dfm_T8OlCM5M8dLyOQBapJl3eFuVIku2P4JO6V0cYVQ,1019
|
|
99
102
|
trainml/cli/gpu.py,sha256=CMcQyl2qbUgc2bc-gvUVT6X7bq2-sgiCHl3hyZ6kFWM,883
|
|
100
|
-
trainml/cli/model.py,sha256=
|
|
101
|
-
trainml/cli/volume.py,sha256=
|
|
103
|
+
trainml/cli/model.py,sha256=Vb889aUxbwBXaA7ptRlIVMEBD8JaKLdE7qAzl0WZ8hE,4963
|
|
104
|
+
trainml/cli/volume.py,sha256=T0hyBftupyES06YvZcG6LsqMvik8g7VkvotoDLwtAiQ,5135
|
|
102
105
|
trainml/cli/cloudbender/__init__.py,sha256=tKkL8TzD9nEeRtf1OEYM4XZJWb0-rGMPTmLIdA5G_SY,592
|
|
103
106
|
trainml/cli/cloudbender/data_connector.py,sha256=q0Hqeh5w00Zkmh61fzO3pNR6EmQfoLQ2DbgJ5ZBx1UM,3606
|
|
104
107
|
trainml/cli/cloudbender/datastore.py,sha256=j67VUoYZOFWP0F7WK8V7fft8HlT4uqauAu0WH-9Dkes,3323
|
|
@@ -107,8 +110,8 @@ trainml/cli/cloudbender/node.py,sha256=iN_WaPCxOhtgDtnSsIFAEMGADG4MKiLjWoez6YSYw
|
|
|
107
110
|
trainml/cli/cloudbender/provider.py,sha256=oFjZWKfFQjNY7OtDu7nUdfv-RTmQc_Huuug963D3BdA,1726
|
|
108
111
|
trainml/cli/cloudbender/region.py,sha256=X6-FYOb-pGpOEazn-NbsYSwa9ergB7FGATFkTe4a8Pk,2892
|
|
109
112
|
trainml/cli/cloudbender/service.py,sha256=Wh6ycEuECiKL7qpFhc4IyO1rR5lvLtIHk3S475_R6pk,3147
|
|
110
|
-
trainml/cli/job/__init__.py,sha256=
|
|
111
|
-
trainml/cli/job/create.py,sha256=
|
|
113
|
+
trainml/cli/job/__init__.py,sha256=LwnagzsL517w1dLZ9BqEd-ujAtlQaRfeZYMlXsI5qYw,7429
|
|
114
|
+
trainml/cli/job/create.py,sha256=DegZYOggCNOSCUzeMTmpSrQRSMlYrUSV4XcElaocf5g,35157
|
|
112
115
|
trainml/cli/project/__init__.py,sha256=HDcJUbKMHhz4Thrvpst5hnywFqzsv0XWmvfKNRi8zuo,1918
|
|
113
116
|
trainml/cli/project/credential.py,sha256=gByXKiYf5sJeNRtuXWcercWv8P2IzO5TjT8Ypp4mCR8,3443
|
|
114
117
|
trainml/cli/project/data_connector.py,sha256=KLDhpNJfwcJkcmyuJRgcVH70Jf73619O9ddYP8vhMvk,1411
|
|
@@ -133,9 +136,12 @@ trainml/projects/members.py,sha256=7fptZ2leIQEUiRtvd3z15RTOJyPafzc5wwQLNxICElQ,2
|
|
|
133
136
|
trainml/projects/projects.py,sha256=0GIKLV1ZTP_LY9bvXKwiDe_I10YkVAhDUlc4AbdDFVM,2840
|
|
134
137
|
trainml/projects/secrets.py,sha256=TIvBd3rAvd4lF3pm5qR98UslHjldzlnzn_n9yvpmLgg,2160
|
|
135
138
|
trainml/projects/services.py,sha256=rI-uFmojqOTNLbqBeX6gaSwMkI6LKzRuJthQCH0A2h4,2771
|
|
136
|
-
trainml
|
|
137
|
-
trainml
|
|
138
|
-
trainml
|
|
139
|
-
trainml-0.
|
|
140
|
-
trainml-0.
|
|
141
|
-
trainml-0.
|
|
139
|
+
trainml/utils/__init__.py,sha256=YGZaaZGxeZ1Lz8ScoIx_qCDbNHsvmNORJTxC8Bxd_ro,39
|
|
140
|
+
trainml/utils/auth.py,sha256=v28FItj3zj5nrfXBt2GM5Av1y-1Ug5G39ejS5wrWh0U,26573
|
|
141
|
+
trainml/utils/transfer.py,sha256=TcoHQdeRoDRdGj1B6VCjwW43tHHnBpP-zl__5t7pCz4,25118
|
|
142
|
+
trainml-1.0.1.dist-info/LICENSE,sha256=s0lpBxhSSUEpMavwde-Vb6K_K7xDCTTvSpNznVqVGR0,1069
|
|
143
|
+
trainml-1.0.1.dist-info/METADATA,sha256=fGhhOAR13XSyoKTyh3TQYJ6pzYEgg4EoYbM3D3EUr18,7288
|
|
144
|
+
trainml-1.0.1.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
|
145
|
+
trainml-1.0.1.dist-info/entry_points.txt,sha256=OzBDm2wXby1bSGF02jTVxzRFZLejnbFiLHXhKdW3Bds,63
|
|
146
|
+
trainml-1.0.1.dist-info/top_level.txt,sha256=Y1kLFRWKUW7RG8BX7cvejHF_yW8wBOaRYF1JQHENY4w,23
|
|
147
|
+
trainml-1.0.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|