xpk 0.15.0__py3-none-any.whl → 0.16.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.
Files changed (68) hide show
  1. integration/README.md +19 -0
  2. xpk/blueprints/a3mega/config-map.yaml.tftpl +15 -0
  3. xpk/blueprints/a3mega/storage_crd.yaml +52 -0
  4. xpk/blueprints/a3ultra/config-map.yaml.tftpl +15 -0
  5. xpk/blueprints/a3ultra/mlgru-disable.yaml +59 -0
  6. xpk/blueprints/a3ultra/nccl-installer.yaml +95 -0
  7. xpk/blueprints/a3ultra/storage_crd.yaml +52 -0
  8. xpk/blueprints/a4/config-map.yaml.tftpl +15 -0
  9. xpk/blueprints/a4/nccl-rdma-installer-a4.yaml +66 -0
  10. xpk/blueprints/a4/storage_crd.yaml +52 -0
  11. xpk/commands/cluster.py +33 -12
  12. xpk/commands/cluster_gcluster_test.py +5 -1
  13. xpk/commands/cluster_test.py +125 -0
  14. xpk/commands/config.py +3 -3
  15. xpk/commands/inspector.py +5 -3
  16. xpk/commands/kind.py +2 -0
  17. xpk/commands/managed_ml_diagnostics.py +249 -0
  18. xpk/commands/managed_ml_diagnostics_test.py +146 -0
  19. xpk/commands/workload.py +125 -139
  20. xpk/commands/workload_test.py +160 -118
  21. xpk/core/blueprint/blueprint_generator.py +3 -0
  22. xpk/core/blueprint/testing/data/a3_mega.yaml +129 -0
  23. xpk/core/blueprint/testing/data/a3_mega_spot.yaml +125 -0
  24. xpk/core/blueprint/testing/data/a3_ultra.yaml +173 -0
  25. xpk/core/blueprint/testing/data/a4.yaml +185 -0
  26. xpk/core/capacity.py +2 -0
  27. xpk/core/cluster.py +18 -47
  28. xpk/core/cluster_test.py +76 -1
  29. xpk/core/config.py +81 -7
  30. xpk/core/config_test.py +67 -11
  31. xpk/core/docker_container.py +3 -1
  32. xpk/core/docker_image.py +10 -6
  33. xpk/core/docker_resources.py +1 -10
  34. xpk/core/kjob.py +17 -16
  35. xpk/core/kueue_manager.py +13 -19
  36. xpk/core/kueue_manager_test.py +27 -1
  37. xpk/core/nap.py +13 -14
  38. xpk/core/nodepool.py +17 -15
  39. xpk/core/nodepool_test.py +25 -4
  40. xpk/core/pathways.py +23 -0
  41. xpk/core/pathways_test.py +57 -0
  42. xpk/core/resources.py +84 -27
  43. xpk/core/scheduling.py +128 -132
  44. xpk/core/scheduling_test.py +215 -2
  45. xpk/core/system_characteristics.py +179 -0
  46. xpk/core/system_characteristics_test.py +49 -1
  47. xpk/core/telemetry.py +4 -4
  48. xpk/core/telemetry_test.py +9 -9
  49. xpk/core/vertex.py +4 -3
  50. xpk/core/workload_decorators/tcpx_decorator.py +5 -1
  51. xpk/main.py +2 -0
  52. xpk/parser/cluster.py +22 -88
  53. xpk/parser/cluster_test.py +41 -0
  54. xpk/parser/common.py +84 -0
  55. xpk/parser/storage.py +10 -0
  56. xpk/parser/storage_test.py +47 -0
  57. xpk/parser/workload.py +14 -41
  58. xpk/parser/workload_test.py +2 -48
  59. xpk/templates/arm_gpu_workload_crate.yaml.j2 +46 -0
  60. xpk/utils/feature_flags.py +3 -0
  61. xpk/utils/validation.py +2 -2
  62. xpk-0.16.1.dist-info/METADATA +127 -0
  63. {xpk-0.15.0.dist-info → xpk-0.16.1.dist-info}/RECORD +67 -48
  64. xpk-0.15.0.dist-info/METADATA +0 -1666
  65. {xpk-0.15.0.dist-info → xpk-0.16.1.dist-info}/WHEEL +0 -0
  66. {xpk-0.15.0.dist-info → xpk-0.16.1.dist-info}/entry_points.txt +0 -0
  67. {xpk-0.15.0.dist-info → xpk-0.16.1.dist-info}/licenses/LICENSE +0 -0
  68. {xpk-0.15.0.dist-info → xpk-0.16.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,127 @@
1
+ Metadata-Version: 2.4
2
+ Name: xpk
3
+ Version: 0.16.1
4
+ Summary: xpk helps Cloud developers to orchestrate training jobs on accelerators on GKE.
5
+ Author-email: XPK team <xpk-code-reviewers@google.com>
6
+ License: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/google/xpk
8
+ Project-URL: Bug Tracker, https://github.com/google/xpk/issues
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Requires-Python: >=3.10
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: argcomplete==3.6.3
15
+ Requires-Dist: cloud-accelerator-diagnostics==0.1.1
16
+ Requires-Dist: tabulate==0.9.0
17
+ Requires-Dist: ruamel.yaml==0.18.10
18
+ Requires-Dist: setuptools-scm>=8
19
+ Requires-Dist: pyyaml==6.0.2
20
+ Requires-Dist: docker==7.1.0
21
+ Requires-Dist: kubernetes==31.0.0
22
+ Requires-Dist: google-cloud==0.34.0
23
+ Requires-Dist: google-api-core==2.24.1
24
+ Requires-Dist: packaging==24.2
25
+ Requires-Dist: google-cloud-filestore==1.12.0
26
+ Requires-Dist: google-cloud-storage
27
+ Requires-Dist: Jinja2==3.1.6
28
+ Provides-Extra: dev
29
+ Requires-Dist: pyink==24.3.0; extra == "dev"
30
+ Requires-Dist: pylint>=2.6.0; extra == "dev"
31
+ Requires-Dist: pre-commit; extra == "dev"
32
+ Requires-Dist: pytest; extra == "dev"
33
+ Requires-Dist: pytest-mock==3.15.1; extra == "dev"
34
+ Requires-Dist: docker==7.1.0; extra == "dev"
35
+ Requires-Dist: mypy~=1.17; extra == "dev"
36
+ Requires-Dist: types-PyYAML==6.0.2; extra == "dev"
37
+ Requires-Dist: types-docker~=7.1.0.0; extra == "dev"
38
+ Requires-Dist: pylint-per-file-ignores==1.4.0; extra == "dev"
39
+ Dynamic: license-file
40
+
41
+ <!--
42
+ Copyright 2025 Google LLC
43
+
44
+ Licensed under the Apache License, Version 2.0 (the "License");
45
+ you may not use this file except in compliance with the License.
46
+ You may obtain a copy of the License at
47
+
48
+ https://www.apache.org/licenses/LICENSE-2.0
49
+
50
+ Unless required by applicable law or agreed to in writing, software
51
+ distributed under the License is distributed on an "AS IS" BASIS,
52
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
53
+ See the License for the specific language governing permissions and
54
+ limitations under the License.
55
+ -->
56
+
57
+ [![Build Tests](https://github.com/google/xpk/actions/workflows/build_tests.yaml/badge.svg?query=branch%3Amain)](https://github.com/google/xpk/actions/workflows/build_tests.yaml?query=branch%3Amain)
58
+ [![Nightly Tests](https://github.com/google/xpk/actions/workflows/nightly_tests.yaml/badge.svg?query=branch%3Amain)](https://github.com/google/xpk/actions/workflows/nightly_tests.yaml?query=branch%3Amain)
59
+
60
+ # Overview
61
+
62
+ XPK (Accelerated Processing Kit, pronounced x-p-k) is a command line interface that simplifies cluster creation and workload execution on Google Kubernetes Engine (GKE). XPK generates preconfigured, training-optimized clusters and allows easy workload scheduling without any Kubernetes expertise.
63
+
64
+ XPK is recommended for quick creation of GKE clusters for proofs of concepts and testing.
65
+
66
+ XPK decouples provisioning capacity from running jobs. There are two structures: clusters (provisioned VMs) and workloads (training jobs). Clusters represent the physical resources you have available. Workloads represent training jobs -- at any time some of these will be completed, others will be running and some will be queued, waiting for cluster resources to become available.
67
+
68
+ The ideal workflow starts by provisioning the clusters for all of the ML
69
+ hardware you have reserved. Then, without re-provisioning, submit jobs as
70
+ needed. By eliminating the need for re-provisioning between jobs, using Docker
71
+ containers with pre-installed dependencies and cross-ahead of time compilation,
72
+ these queued jobs run with minimal start times. Further, because workloads
73
+ return the hardware back to the shared pool when they complete, developers can
74
+ achieve better use of finite hardware resources. And automated tests can run
75
+ overnight while resources tend to be underutilized.
76
+
77
+ XPK supports a variety of hardware accelerators.
78
+ | Accelerator | Type | Recipes |
79
+ | :--- | :--- | :--- |
80
+ | **Ironwood** | tpu7x | [Run training workload with Ironwood and regular/gSC/DWS Calendar reservations using GCS Bucket storage](./docs/usage/tpu7x/recipes/reservation_gcs_bucket_recipe.md)<br>[Run training workload with Ironwood with flex-start using Filestore storage](./docs/usage/tpu7x/recipes/flex_filestore_recipe.md)<br>[Run training workload with Ironwood and flex-start using Lustre storage](./docs/usage/tpu7x/recipes/flex_lustre_recipe.md) |
81
+ | **Trillium** | v6e | [Create Cluster](./docs/usage/clusters.md)<br>[Create Workload](./docs/usage/workloads.md) |
82
+ | **TPU v5p** | v5p | [Create Cluster](./docs/usage/clusters.md)<br>[Create Workload](./docs/usage/workloads.md) |
83
+ | **TPU v5e** | v5e | [Create Cluster](./docs/usage/clusters.md)<br>[Create Workload](./docs/usage/workloads.md) |
84
+ | **TPU v4** | v4 | [Create Cluster](./docs/usage/clusters.md)<br>[Create Workload](./docs/usage/workloads.md) |
85
+ | **GPU A4X** | gb200 | [Create Cluster](./docs/usage/gpu.md)<br>[Create Workload](./docs/usage/workloads.md) |
86
+ | **GPU A4** | b200 | [Create Cluster](./docs/usage/clusters.md#provisioning-a3-ultra-a3-mega-and-a4-clusters-gpu-machines)<br>[Create Workload](./docs/usage/workloads.md#workloads-for-a3-ultra-a3-mega-and-a4-clusters-gpu-machines) |
87
+ | **GPU A3 Ultra** | h200 | [Create Cluster](./docs/usage/clusters.md#provisioning-a3-ultra-a3-mega-and-a4-clusters-gpu-machines)<br>[Create Workload](./docs/usage/workloads.md#workloads-for-a3-ultra-a3-mega-and-a4-clusters-gpu-machines) |
88
+ | **GPU A3 Mega** | h100-mega | [Create Cluster](./docs/usage/clusters.md#provisioning-a3-ultra-a3-mega-and-a4-clusters-gpu-machines)<br>[Create Workload](./docs/usage/workloads.md#workloads-for-a3-ultra-a3-mega-and-a4-clusters-gpu-machines) |
89
+ | **GPU A3 High** | h100 | [Create Cluster](./docs/usage/gpu.md)<br>[Create Workload](./docs/usage/workloads.md) |
90
+ | **GPU A100** | A100 | [Create Cluster](./docs/usage/gpu.md)<br>[Create Workload](./docs/usage/workloads.md) |
91
+ | **CPU** | n2-standard-32 | [Create Cluster](./docs/usage/cpu.md)<br>[Create Workload](./docs/usage/workloads.md) |
92
+
93
+ XPK also supports the following [Google Cloud Storage solutions](./docs/usage/storage.md):
94
+
95
+ | Storage Type | Documentation |
96
+ |--------------------------------------------|------------------------------------------------------------------------------------------|
97
+ | Cloud Storage FUSE | [docs](./docs/usage/storage.md#fuse) |
98
+ | Filestore | [docs](./docs/usage/storage.md#filestore) |
99
+ | Parallelstore | [docs](./docs/usage/storage.md#parallelstore) |
100
+ | Block storage (Persistent Disk, Hyperdisk) | [docs](./docs/usage/storage.md#block-storage-persistent-disk-hyperdisk) |
101
+
102
+ # Documentation
103
+
104
+ * [Permissions](./docs/permissions.md)
105
+ * [Installation](./docs/installation.md)
106
+ * Usage:
107
+ * [Clusters](./docs/usage/clusters.md)
108
+ * [GPU](./docs/usage/gpu.md)
109
+ * [CPU](./docs/usage/cpu.md)
110
+ * [Autoprovisioning](./docs/usage/autoprovisioning.md)
111
+ * [Workloads](./docs/usage/workloads.md)
112
+ * [Docker](./docs/usage/docker.md)
113
+ * [Storage](./docs/usage/storage.md)
114
+ * [Advanced](./docs/usage/advanced.md)
115
+ * [Inspector](./docs/usage/inspector.md)
116
+ * [Run](./docs/usage/run.md)
117
+ * [Job](./docs/usage/job.md)
118
+ * [Troubleshooting](./docs/troubleshooting.md)
119
+ * [Local Testing](./docs/local_testing.md)
120
+
121
+ # Contributing
122
+
123
+ Please read [`contributing.md`](./docs/contributing.md) for details on our code of conduct, and the process for submitting pull requests to us.
124
+
125
+ # License
126
+
127
+ This project is licensed under the Apache License 2.0 - see the [`LICENSE`](./LICENSE) file for details
@@ -1,3 +1,4 @@
1
+ integration/README.md,sha256=EZwllubkB7mJt-DzPRNrhD0kkSV7TwaihmOX1mjNvAk,296
1
2
  integration/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
2
3
  integration/docker_manager_test.py,sha256=J2xijy6crRtrwQXrEvtOEY7mo1kEJYhcIYMZ7w0OGa4,2514
3
4
  integration/gcluster_a3mega_test.py,sha256=DoDEWWPTxjvn6T1ZNNXJEC64vlA7ywvtrSwYUEUn5Gg,6522
@@ -5,77 +6,93 @@ integration/gcluster_a3ultra_test.py,sha256=XGZXuir2PeLjEI2Yt8VlIEmxtPHEHjeKQeMM
5
6
  integration/gcluster_a4_test.py,sha256=c5asoFLioHznq6-F7GjZf2JRqQuTODX5_bjJWuBcRwU,6230
6
7
  integration/gcluster_test.py,sha256=3GSOMszzNW6Yr4T4PFIpmszonwDAAGpSdKutUA77O-g,3304
7
8
  xpk/__init__.py,sha256=7mu-VQDQMyxM5To0KOhuYe4y2TYGsEkfV7hXZmUyih4,561
8
- xpk/main.py,sha256=188EGGln4MmUyCUZzb9Oj3zPqzFVz5I-HWz7pgs0AqU,3129
9
+ xpk/main.py,sha256=bcyc47530aC61J81XqszDscgMNAPQmEafQFA7WOxlBk,3218
9
10
  xpk/telemetry_uploader.py,sha256=DW-eXiWpxc0Ga3igehhVIz-F3CmBwe1kl1Lbgbn0MOE,901
10
11
  xpk/api/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
11
12
  xpk/api/storage_crd.yaml,sha256=r4WFXnSJJ25EUF-t4Ljfbl-cJoSaiFiZkP8451eTub4,1260
13
+ xpk/blueprints/a3mega/config-map.yaml.tftpl,sha256=3_wgWNIK2Vh6ywDK8Je7UUAhmxRVfGk-gEm9BJ1d7i8,290
14
+ xpk/blueprints/a3mega/storage_crd.yaml,sha256=r4WFXnSJJ25EUF-t4Ljfbl-cJoSaiFiZkP8451eTub4,1260
15
+ xpk/blueprints/a3ultra/config-map.yaml.tftpl,sha256=ALqxTo6JMt8eOoVaRUbplrLRzUwIcjCEqJvjekqM7K4,286
16
+ xpk/blueprints/a3ultra/mlgru-disable.yaml,sha256=0n7gKxS5UBwE1i8xok07xeaxwMQ_3fGBnZl-_9MrDYY,1933
17
+ xpk/blueprints/a3ultra/nccl-installer.yaml,sha256=BaGhIrwbHFQnXuj13PusbI01DbkFoS622zBUfRrqKeo,3211
18
+ xpk/blueprints/a3ultra/storage_crd.yaml,sha256=r4WFXnSJJ25EUF-t4Ljfbl-cJoSaiFiZkP8451eTub4,1260
19
+ xpk/blueprints/a4/config-map.yaml.tftpl,sha256=o6LeGIYUfFGyj3vj-8ztV5ildQ46QZVl74avaUV0SHU,280
20
+ xpk/blueprints/a4/nccl-rdma-installer-a4.yaml,sha256=if3WOmNLVGTJIJHU76EWC1FyiIXDTRIXcwo4OsBxarQ,2113
21
+ xpk/blueprints/a4/storage_crd.yaml,sha256=r4WFXnSJJ25EUF-t4Ljfbl-cJoSaiFiZkP8451eTub4,1260
12
22
  xpk/commands/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
13
23
  xpk/commands/batch.py,sha256=Cj1bDpzPMoPdhaKKrOJJLJ3JzRvJrCMn8huQoHHIZJI,4192
14
- xpk/commands/cluster.py,sha256=GolDAcqH85mnu7CH1mu9fZ_YnuOzm4BKgHlEPnywFLA,43979
24
+ xpk/commands/cluster.py,sha256=zEumj1tTdsOyftpkqGwrzyOBqYFh-mkHKvYrVZr1OS8,44695
15
25
  xpk/commands/cluster_gcluster.py,sha256=8C3G0KjyhxMiOzngkdX-YWozpIrRsy3E-_vdTHsNFoc,13849
16
- xpk/commands/cluster_gcluster_test.py,sha256=ddOoH0DH-3z0TvbSFN_WvgDVpxBH89DvtyjnHeMXkY4,6368
17
- xpk/commands/cluster_test.py,sha256=G7ziKCK3FDLJXn_k_2WHu_rmumOkX5-DMrWqaRrxeLY,14803
26
+ xpk/commands/cluster_gcluster_test.py,sha256=B9rU3RT8CrcMflinX132k-ZvPp1rze3GHI-6Y5diFrs,6583
27
+ xpk/commands/cluster_test.py,sha256=URi0KKNMJSOGUeMpVF9FtvgftdDwp570aACfohNy2NU,18529
18
28
  xpk/commands/common.py,sha256=nxLKPhXuAMW7wq-5xL2YeOgDTMUDcLGMujatOUHJ3s4,2504
19
- xpk/commands/config.py,sha256=1aJfSAAmEc_71NT9dS_6JjKrqQl3TuQwpzqe6wrcR90,820
29
+ xpk/commands/config.py,sha256=L_zRpQTxMcSh6rxOT8gG263V6YGqzVoz4UxdWywTFdA,850
20
30
  xpk/commands/info.py,sha256=uhv5mPfgg9N-5JhQw4dT2jujL9ZC5kzGA18h9NFfm5A,7429
21
- xpk/commands/inspector.py,sha256=7jA0indMDxBAR7iThPHTYKw-k6rQuZbcMTO5TGlp60w,12910
31
+ xpk/commands/inspector.py,sha256=FPasKtGuEZKNXIQin4AG49clfD4b53NxXpWqBPZIIoE,12955
22
32
  xpk/commands/job.py,sha256=rPIfWvgm5mLz7K7YDLK721ZcUcg5OEmYVAPAtRtB5Ag,6718
23
- xpk/commands/kind.py,sha256=xlxXS2QzCag6w2vGwF4nWNgWOpvKNJZKnKTBu6TV5gA,7674
33
+ xpk/commands/kind.py,sha256=XN2X3gBGbjVzhBt9QEBzWhVoaAhGHyQxgqsiuAdgijY,7736
24
34
  xpk/commands/kjob_common.py,sha256=bRaORiGVjPAdN0T3aRmbcQgXYe-EtjoVKePdWzQ5xU4,1928
35
+ xpk/commands/managed_ml_diagnostics.py,sha256=87wmFbnYQY-kEpJfPo1Up53xM5P_P5wOlXczxHzxJjQ,6984
36
+ xpk/commands/managed_ml_diagnostics_test.py,sha256=pQ1YUGMGRQFJYTS_1o9YyGUzYdLaBdA84LjbnncaeEo,3828
25
37
  xpk/commands/run.py,sha256=D0zgmnGeBLATphYhzQj29EScxrMmAKqPRhP6nfWuYcY,4085
26
38
  xpk/commands/shell.py,sha256=mRHMwm3Izzsue4bocekm82Rg_cPUaGMClSlvNzNXQ-o,4467
27
39
  xpk/commands/storage.py,sha256=kPViq6mrfGeAJwScdMs_kUJg-QxEO6SrEvyBbXhCzEI,11439
28
40
  xpk/commands/version.py,sha256=k30rdLP9clUM8eeSwRFhpfzSb1qwcQImTfuC59Ed6CA,771
29
- xpk/commands/workload.py,sha256=7QCYmDq0ph5GbqD5JRu5UFQ4USGRbKkxp8Q4FVYRoaQ,31084
30
- xpk/commands/workload_test.py,sha256=gH4gG4yx06ZsaBoJvKsFhg8vnsnQsmriy3YSOvbYBgM,4716
41
+ xpk/commands/workload.py,sha256=yAPejN-SVXA84m-3VOnbrcIIDaorZsGImnjPDNPtbqw,30676
42
+ xpk/commands/workload_test.py,sha256=YLXSL71UhgI0p7AfiBVho7vOxrJW6jU84iNsfg5Iqgk,7240
31
43
  xpk/core/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
32
- xpk/core/capacity.py,sha256=FLj6sSFnZMzGk0TVHxV8GSwIwCXG2Jt4Ee6q3Ezu8qI,9324
44
+ xpk/core/capacity.py,sha256=bkPOF3xHGdtPRW1f6ue5-i2x89YG5_3q_ONEuMdknw4,9398
33
45
  xpk/core/capacity_test.py,sha256=VAEM4v7R6riG0fAnS6NcfnFZFX87m9THKZ0mwSLhYls,2455
34
- xpk/core/cluster.py,sha256=9Ih8HZwwqLfCCb3tvikwNgLIYUu0YVA1nONToVDALDM,25460
46
+ xpk/core/cluster.py,sha256=zAv46s-UB2r-I6cSkH7YzwAkGgD8Vxn7dJsXb_CMEQI,24062
35
47
  xpk/core/cluster_private.py,sha256=RLi0C7bV0NEUXl6QKQzvUT0weN9EdqPvjuuOQsNO0DY,6868
36
- xpk/core/cluster_test.py,sha256=HBM4WpvVypasKGlWktL75btQEy62ylgThM5-5LCwmaE,3096
48
+ xpk/core/cluster_test.py,sha256=J4Wk7E--ik_IsWWzL_iWGWbx99Ih03m-0bs-uU7gGDg,5853
37
49
  xpk/core/commands.py,sha256=_QVfZ8IzCYcl0RtxZqLmaqj6IoTu-jG2n7kbuRuMSH4,10233
38
- xpk/core/config.py,sha256=-3HxysX7lt9bQZc68DMbQ9QRCSIE9PjyHs4EomKr_20,3550
39
- xpk/core/config_test.py,sha256=v1qfyFRzLkYSQ7Wn4nx1N0dBSOFXidLWDfhkeHDZOVM,1847
40
- xpk/core/docker_container.py,sha256=mibRro1MKX5eeV3p-7g7E9pKbMvDjg1e2Ma8p8oPwFw,7592
41
- xpk/core/docker_image.py,sha256=MIU397IGIPwkTZFK-ZGEWuc3RmUIF3sQQZUiUj2gLqA,6775
50
+ xpk/core/config.py,sha256=L3iPFvzFCpW8IEAvlbkuEHYBYXmRTC0BAaR7I_5_Peo,5146
51
+ xpk/core/config_test.py,sha256=POSuofK0LFbNNygDAo2fjtKY4NMrRjUFeGcpBh9JOS4,3569
52
+ xpk/core/docker_container.py,sha256=8hqWWNKtjf6dqCFRpfndTMGvN_NS6zhfBr7YuKfh7qo,7626
53
+ xpk/core/docker_image.py,sha256=9vwqbb6Mc3C5ZEOph03WS-EWI5hxMYGGigqzIMkDTjE,6909
42
54
  xpk/core/docker_manager.py,sha256=JBFgyD6O7LKwEHJC7YuSoCDZqrFRtb-LjgWNqkfAbR0,10566
43
- xpk/core/docker_resources.py,sha256=bo_6fxvUOMY9XuL0Cps8mvn57K1osAVSgv0lpDGBGh8,12810
55
+ xpk/core/docker_resources.py,sha256=ycizZ1qLvvs52PiNh9FNqUwaF8UTQAG7pf99hfka1dQ,12491
44
56
  xpk/core/filestore.py,sha256=mcuUzsAPARbnrBG4fIGsEoN8NmzjaQ6k0tvIwMtjO9k,8068
45
57
  xpk/core/gcloud_context.py,sha256=d1wQ76zp7QMdG5BxB3sJz4b4OF5Mc8OzmPd_m0xd-Ys,6810
46
58
  xpk/core/gcloud_context_test.py,sha256=M8rp6S1zaEcAI7u4Bt8ukWKzv82HH5h9oYVojBcKgHk,5987
47
59
  xpk/core/gcluster_manager.py,sha256=lyv_MvdnkByy9_PEBj_ugAEBwnCbFNiWTSrEFjrMlPc,6236
48
60
  xpk/core/gcsfuse.py,sha256=kg5pgxdTjgiqquuGjev9fXzJPb8oiWPTK6wzCddzheQ,2125
49
61
  xpk/core/jobset.py,sha256=PJ4Fd8TNNLuYKNOMehoMYRIUEXyc5jsbHctJGqfW_8Y,4037
50
- xpk/core/kjob.py,sha256=1As6orEWy_N_WoOBrsKa3XFnIOkreJKmgM7Q0czDrxU,14409
51
- xpk/core/kueue_manager.py,sha256=Gos9aeo_rmsijAs509iFW3BmtuCY-rSM7UkSDA6qmwM,19053
52
- xpk/core/kueue_manager_test.py,sha256=uyY9dg2NzUQQrlmqim5blhcRPANsY67FwCyrpwyBfBY,18235
62
+ xpk/core/kjob.py,sha256=Ustta_ygXaacmgb1Av6QW4Epw0S_r-b-tjrMA6uNVj0,14240
63
+ xpk/core/kueue_manager.py,sha256=xAadXAQCfWKhOolwIvdagTYyAqVy4xwFEbvyWuRNRJY,18901
64
+ xpk/core/kueue_manager_test.py,sha256=jSmf5LoG3cnV1DgPXORAczFeDEB0T6oAvMctPFIYWZE,19234
53
65
  xpk/core/monitoring.py,sha256=__bzTq_DIDAK8yIaN4F3MJh-yjYw5X1OlxmRgYOpf1g,4332
54
66
  xpk/core/mtc.py,sha256=pO7p3l-EzLFdTE8MdwWV8i0Zu-7epGql_kPoksVofIU,6259
55
- xpk/core/nap.py,sha256=BhuOPXmLhVs75ffnxtc5CaxF7yteEb1k_GwAKNc-olM,12817
67
+ xpk/core/nap.py,sha256=1nBT9Cx0D-VNKYzTUOVrr45cW9Kp_uym_vvdWpd5mhY,12532
56
68
  xpk/core/network.py,sha256=Oulb7U69lWkpOKxOC1C7ekJDpC51TLwd7XdZA3NQ7E0,10505
57
- xpk/core/nodepool.py,sha256=BGHftl_3fs4kGdXJxszbRM3Tz4-JkhWSeuqioZrNdg4,22994
58
- xpk/core/nodepool_test.py,sha256=JFQc-9zzYlP57LOyD-GrEQR1_5G2IeT_18gXWf1V6z4,8942
59
- xpk/core/pathways.py,sha256=5b5WOpCmMYWKBz7SOxOXbxAPpAig7k06HSEqjXsOmeg,10707
69
+ xpk/core/nodepool.py,sha256=cVhksdj9GRGIp_SxyiM0cboSww8r2v2DUR_iuT-QD5M,22820
70
+ xpk/core/nodepool_test.py,sha256=SJW6vw2GMxubvbd8vf09WDuPMtIQdNkw8Yy4MM0yqu0,9548
71
+ xpk/core/pathways.py,sha256=W0m_Zo1JBpwaCmN5qHC97whrHdrOzBFP1l9XknaJjtk,11516
72
+ xpk/core/pathways_test.py,sha256=UeuSo_g9BNI27to-wflQwc6dJFVSA5-kOK_cjmY5qgU,1809
60
73
  xpk/core/ray.py,sha256=JWhc_ToRHpF4_URGnuE_47FMgamaRsA4KVUMpqThWzw,6145
61
- xpk/core/resources.py,sha256=j1BAsIVvwnJ6zsPQDdkl_-SUY_MHumWcUqXPlXtGyLY,8074
62
- xpk/core/scheduling.py,sha256=qXawGInZ4GGTVnSKaNdhYnOpufeQZfdK7nF4vTrPF0k,10216
63
- xpk/core/scheduling_test.py,sha256=hpoYli8LfQMe4YX1P4u9DcawmF-p66FS5AfHluSZ2t4,3861
74
+ xpk/core/resources.py,sha256=EHo0jYGAji3sR3Thn3hIX4DboerNWoNnkgi5H7M62c8,9364
75
+ xpk/core/scheduling.py,sha256=RdYAMiDaAtcrVVNTBicjWFYtZCgzGBhMhkYFeQ1b1ag,10104
76
+ xpk/core/scheduling_test.py,sha256=I4tOE-7N73cXa77WCVv6L458gmUZtZAB7MFvjEuagY4,10746
64
77
  xpk/core/storage.py,sha256=NILvVAcLNMLmp4wKx_TEKbMMF5X1oL-FrQV46PT0_ds,16902
65
- xpk/core/system_characteristics.py,sha256=fmSJp6OdktgTkFlGeO6JtUoLKNpIcO-Hpjs11KyxDU8,24813
66
- xpk/core/system_characteristics_test.py,sha256=EAPAv4mVjL9Py0NVPThlFW74E8uhHiiC8td6oynIkYU,4758
67
- xpk/core/telemetry.py,sha256=1FA7wJ7_HdS6lTgjp8rK8_jbrg2HyigB03XF-kyYoOI,7302
68
- xpk/core/telemetry_test.py,sha256=XIuTv-AIgAn6Axs8ACJuc4gF_FK2dyZnYUZ92d6DhZI,7607
78
+ xpk/core/system_characteristics.py,sha256=I_QKAb-aCjYX1QuMRHpC2Q6RVpTMpQM4M7JDVnyPmG8,31863
79
+ xpk/core/system_characteristics_test.py,sha256=johtLtkShOvr8Bh5zZ-f9ZZyz4AIqQ-F1PqFvfY0NJU,6287
80
+ xpk/core/telemetry.py,sha256=HO6pf_I8AVbkzwqwEIk_0CqiU4LrJrHoqYZEPqOcs_o,7308
81
+ xpk/core/telemetry_test.py,sha256=Tos0rFcpYdHFT4WsbshaEzu-F32Yn_YGxZqHzCKiJps,7614
69
82
  xpk/core/updates.py,sha256=sJCMyGh9epSz_96yeKMWGIvheqyMFEgxWFFQo7nzEBc,1723
70
83
  xpk/core/updates_test.py,sha256=oeGMv-wOHcOhWKGI4GnVLZ4Z_vCxLzLHeXRCi8rIDIM,2704
71
- xpk/core/vertex.py,sha256=orIZAVwZruRJQ6-vgc1wShuTsiipdH-zHQ9O4ie_HSA,3638
84
+ xpk/core/vertex.py,sha256=DSrwoLmpWMZZe9ABdTxYI--50E11oEUC1mBLdrzOvdo,3573
72
85
  xpk/core/workload.py,sha256=6TVZM15n8W7046VgmmH9Jv54MrhExtLQH3GaiwlV8Xs,8959
73
86
  xpk/core/workload_test.py,sha256=tVTvrwDRXD3O1GCoftgEBWilCYTN74ayP1KRP0vptx0,857
74
87
  xpk/core/blueprint/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
75
88
  xpk/core/blueprint/blueprint_definitions.py,sha256=OgKkMnz4xAnmnZLaXuehVzNm1Gr2R4HWgofc7qd_mC4,2258
76
- xpk/core/blueprint/blueprint_generator.py,sha256=mYZVy4V41-fv5iLmTSoDg9Uwf3RKiIJz4hxM8bElwEs,37744
89
+ xpk/core/blueprint/blueprint_generator.py,sha256=qWUmB8mBuWgcGOJPKnUMACpl7nD08ns6B1mq-nPWHZU,37862
77
90
  xpk/core/blueprint/blueprint_test.py,sha256=8wgH-HdYDySCVJh9RnxOTrkfBc1Nmv6ZXfzBzLlow54,7550
78
91
  xpk/core/blueprint/testing/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
92
+ xpk/core/blueprint/testing/data/a3_mega.yaml,sha256=K3JMFuj-ZHgHPimeL_GJqmib47O0BMIp_DywzHG1wSU,3988
93
+ xpk/core/blueprint/testing/data/a3_mega_spot.yaml,sha256=HLKNx4PxomvPtT0m_hcc7hFVraFalu-xlakqn6RxB_s,3843
94
+ xpk/core/blueprint/testing/data/a3_ultra.yaml,sha256=J9PUvs-oAwsVRAdZhRBNHKcQ5FBcPqH6HclwM5sGyaY,6176
95
+ xpk/core/blueprint/testing/data/a4.yaml,sha256=3jlo5y396-2iJu2ZFPxcK9E_GC86_kMTjzS3TmWB3QY,5695
79
96
  xpk/core/remote_state/__init__.py,sha256=PkV8D9WOtlJHH5AIxsQaKeIBcmupT_Ol_bwJgN6G2I8,561
80
97
  xpk/core/remote_state/fuse_remote_state.py,sha256=3Dx4ZZd0NFF5-MlqGWHzz8H4bjYiPOWdF_YSEnKUPQ8,3246
81
98
  xpk/core/remote_state/remote_state_client.py,sha256=6PcR92Xy_RMjlF4AscanQ1jXNHnewLWGNC2v53jbzD4,1077
@@ -85,14 +102,14 @@ xpk/core/testing/commands_tester_test.py,sha256=NnLWh7TJ9rKtb-DtB-vwkxvCe5wNtvUJ
85
102
  xpk/core/workload_decorators/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
86
103
  xpk/core/workload_decorators/rdma_decorator.py,sha256=isbgPnjdu2AT_Da1nVUIRoGE_qZ7jMDOKCgZOLq5r2A,4006
87
104
  xpk/core/workload_decorators/storage_decorator.py,sha256=DDYQVO1OKTLhveDOA4V6b2RWr4n0fbwHdnoFFmW7iaQ,2000
88
- xpk/core/workload_decorators/tcpx_decorator.py,sha256=m5EgzEHjbcOD13ygY91mQdhwQt4Gr5PyalVkKcHyeV8,5975
105
+ xpk/core/workload_decorators/tcpx_decorator.py,sha256=6yvofTv6_XmRfI-nESZjGYeLmGrza1rWxeJGET0TqXU,6182
89
106
  xpk/core/workload_decorators/tcpx_decorator_test.py,sha256=iTBS3X_-VwA2oveNDjscduLtll0VOJyFRCp4xmsjg7w,8515
90
107
  xpk/core/workload_decorators/tcpxo_decorator.py,sha256=_nLX7tbnxhnS-xv4Jijd1JOP76V4LpNCfW3Np404Cqw,6537
91
108
  xpk/parser/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
92
109
  xpk/parser/batch.py,sha256=mJU-Cp1yTLje59vD-B1IiBcUeD-ZmEsoeB4xhj9cflc,1406
93
- xpk/parser/cluster.py,sha256=euxtW7ohgMGUPirugoQfsx6PH4YGUaA7O2kzlE31ga0,32106
94
- xpk/parser/cluster_test.py,sha256=IkXbzbCc0FvYRmTPFcztQzCfjPrVxhUjJh-gm8nc9VU,2849
95
- xpk/parser/common.py,sha256=zsCCzlaACO8xX0lpzquTRfHFmykOMjdHlsdo0YGmMq0,8348
110
+ xpk/parser/cluster.py,sha256=v2rpQQn1GumKw1EWMH4AWIAH7FUZS2yqNnrPnqT_A84,30211
111
+ xpk/parser/cluster_test.py,sha256=grIw3cZy39A9CNSmB7cafIjaD5u4YGAR7KLfC7JP_iE,3792
112
+ xpk/parser/common.py,sha256=LrnEQIMpGir6RprpaOfywGc5wHKRD2eLChrtDYY9P5U,10823
96
113
  xpk/parser/config.py,sha256=-XnWx9aFsBW4Uzo_hpOMD2ZQ0bdZLvq1ksv83_5jqSM,1633
97
114
  xpk/parser/core.py,sha256=VRJerlS92ufoQbG1mZv7B04DAP4qGkBHa4pRXgcbAs0,4761
98
115
  xpk/parser/info.py,sha256=UJohxVVWdt9IgUXoPsrVae2DN1BjAVGWrSN2ajrB8RQ,1860
@@ -101,12 +118,14 @@ xpk/parser/job.py,sha256=5RdE70rucGfrsn65l7Ho6RmO06mag1S0AO-3saVuXyw,4328
101
118
  xpk/parser/kind.py,sha256=sgPCqNVrgmFLcOBEbhlaphwVXxMh_opP9ntCq4KPePE,2682
102
119
  xpk/parser/run.py,sha256=oi_ksSyJ8Ooffe2EgoV_ecpmXEmNGVotjpIQH-HjufE,1481
103
120
  xpk/parser/shell.py,sha256=VC8p-kz9XjJZW9DXZ-rnv41XnRDRpQRFywHpB5j7tfc,1970
104
- xpk/parser/storage.py,sha256=XNynqulEzTmT8_G6wkeBwfXX0XQ1lsd6BFcx0H6rGfU,9971
121
+ xpk/parser/storage.py,sha256=0V1d1htsjoa-SuxOX_vNxz2Lg4Nue9CBe_H0bNS2Hv0,10270
122
+ xpk/parser/storage_test.py,sha256=i_F9cuQXHRvUy4RJwbfuuI8ZVpTpkkY96sZ1GZ4dLPw,1494
105
123
  xpk/parser/validators.py,sha256=-NBZelvfwZRzjz-YUCreD8EzMLHll8PZM-d-MVm2PG4,1192
106
124
  xpk/parser/version.py,sha256=eJo4PAbbmRQZulgKBs_ytbVgV9zAaaXeNzMMxmgFMVY,769
107
- xpk/parser/workload.py,sha256=xjCVj-1ZStaxd2tB91oSOp6La78sLs76ZdAH_sp2ihA,27751
108
- xpk/parser/workload_test.py,sha256=Lg57keH87JEtovIF7ba1Flk2fpuUzQM2x1xkvMHzJlk,2073
125
+ xpk/parser/workload.py,sha256=G0HV4ddCyqfcGVxkByS-iDO3v8tlev696XKCEAON1J8,26958
126
+ xpk/parser/workload_test.py,sha256=2AAt-yEws3clGNVERPiyPDMmwrrVf58nBw2_pjgkG30,946
109
127
  xpk/templates/__init__.py,sha256=7mu-VQDQMyxM5To0KOhuYe4y2TYGsEkfV7hXZmUyih4,561
128
+ xpk/templates/arm_gpu_workload_crate.yaml.j2,sha256=UK85Q8kenTZu5rCVl8wIh1DPDbSzi5tIe5I-iRaS49s,1557
110
129
  xpk/templates/cluster_preheat.yaml.j2,sha256=1e8jYagQE6O7BjAfuwmEqGG1b8AOsLRlQm4V68ZnGNs,721
111
130
  xpk/templates/filestore-pv.yaml,sha256=FxKZkAXa2czIYblq77iewQjCjOjs-FptuF3YLOByfLo,316
112
131
  xpk/templates/filestore-pvc.yaml,sha256=Rf80UNYs3XTUdOJuWCeFq80TKXq5FhfafRE89hq7y9o,161
@@ -123,7 +142,7 @@ xpk/utils/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
123
142
  xpk/utils/console.py,sha256=AJWSyjuWyLjb7SYt8kPb0gw9N84EN9LbLxYCXjC-6Ds,2464
124
143
  xpk/utils/console_test.py,sha256=x1v7v9VrIZwAKH-eOzj1lAY4EsHxJ6ruhfEOzpssO6o,2944
125
144
  xpk/utils/execution_context.py,sha256=hONGz1hQSKE-puah2rE_uN9YUeEC4oW82VOryw5_Vgo,1181
126
- xpk/utils/feature_flags.py,sha256=L8W28nAXk_SpkOnwIHxdad8Sz0jfxZImMOhSYjgG28A,1067
145
+ xpk/utils/feature_flags.py,sha256=lRNjJIKyMUvUkF35MjG0iQYuoxSZarf-W98gWOW8r6M,1161
127
146
  xpk/utils/file.py,sha256=yB1-k3FahoxkBpojB59vQNeZYOXB3pmktnjU4Ceah7M,2605
128
147
  xpk/utils/gcs_utils.py,sha256=zg-XSTv4G4TFjeT2bNBm2WLdDXPrOZi0rNv_JdppNg4,4113
129
148
  xpk/utils/kubectl.py,sha256=WKB9UhpouPN9G4n2ejRi_PgsYLI0R01gzkS1WGU6mJA,1828
@@ -137,13 +156,13 @@ xpk/utils/user_agent.py,sha256=1NMtixC1RIr_MwM5pJ0THQ0x1-fCQA92TFHjWAVZldw,1083
137
156
  xpk/utils/user_agent_test.py,sha256=lkv8LqzhlA1gXFVeBzoLwE1_iGnm8G9LzkkElMrIrx0,1774
138
157
  xpk/utils/user_input.py,sha256=kMdCcPWdkI31f1mJcMsNGda-xKyKxEerpSLpCqIWYPc,1503
139
158
  xpk/utils/user_input_test.py,sha256=xO34jkMoTAk5Cmw7yHTk-7YexzC2UZ6ajihV8lnlAyI,2666
140
- xpk/utils/validation.py,sha256=5ZjVpyAzRR6FbwYFzGBIGs2avGswzkgdemHeCBA8QO8,3025
159
+ xpk/utils/validation.py,sha256=irL9579RbvwxiGn1t3zhhPo-0oHgdUPOSYsUuFqsDSM,3039
141
160
  xpk/utils/validation_test.py,sha256=PEDSMUqZdt_Lx1FSR-LOTXKKtsJ47JH1fxugM0Gfz6Y,1168
142
161
  xpk/utils/versions.py,sha256=_Ep68W70a9605XjiaOOpBa9Is9jXlsoOiwL8v5Xt-WA,897
143
162
  xpk/utils/yaml.py,sha256=j8xuAJ9yAAwnQi6ozwZ-nMnDyDnc3xWkeBZMtSuP4RU,844
144
- xpk-0.15.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
145
- xpk-0.15.0.dist-info/METADATA,sha256=d_dKFmU1zIBbCITv805V4le-CTg-a-buMo4AQc9L6os,71037
146
- xpk-0.15.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
- xpk-0.15.0.dist-info/entry_points.txt,sha256=mzEtiIesFkT1kmcTUVDA1o3uOhiniX6tIz2wmOlMu1M,38
148
- xpk-0.15.0.dist-info/top_level.txt,sha256=TQKZWgV7LSElvmunYT9V_627qOMoxq3qYzWAFzKudB8,16
149
- xpk-0.15.0.dist-info/RECORD,,
163
+ xpk-0.16.1.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
164
+ xpk-0.16.1.dist-info/METADATA,sha256=VbrCbCtZZNMIn5jC-CfU6YrpMf1x6LRkM_aa7SgiPa8,7901
165
+ xpk-0.16.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
166
+ xpk-0.16.1.dist-info/entry_points.txt,sha256=mzEtiIesFkT1kmcTUVDA1o3uOhiniX6tIz2wmOlMu1M,38
167
+ xpk-0.16.1.dist-info/top_level.txt,sha256=TQKZWgV7LSElvmunYT9V_627qOMoxq3qYzWAFzKudB8,16
168
+ xpk-0.16.1.dist-info/RECORD,,