xpk 0.14.4__py3-none-any.whl → 0.16.0__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 (91) hide show
  1. integration/README.md +19 -0
  2. integration/gcluster_a3mega_test.py +11 -0
  3. integration/gcluster_a3ultra_test.py +11 -0
  4. integration/gcluster_a4_test.py +11 -0
  5. xpk/blueprints/a3mega/config-map.yaml.tftpl +15 -0
  6. xpk/blueprints/a3mega/storage_crd.yaml +52 -0
  7. xpk/blueprints/a3ultra/config-map.yaml.tftpl +15 -0
  8. xpk/blueprints/a3ultra/mlgru-disable.yaml +59 -0
  9. xpk/blueprints/a3ultra/nccl-installer.yaml +95 -0
  10. xpk/blueprints/a3ultra/storage_crd.yaml +52 -0
  11. xpk/blueprints/a4/config-map.yaml.tftpl +15 -0
  12. xpk/blueprints/a4/nccl-rdma-installer-a4.yaml +66 -0
  13. xpk/blueprints/a4/storage_crd.yaml +52 -0
  14. xpk/commands/cluster.py +89 -32
  15. xpk/commands/cluster_gcluster.py +25 -5
  16. xpk/commands/cluster_gcluster_test.py +16 -3
  17. xpk/commands/cluster_test.py +353 -7
  18. xpk/commands/config.py +3 -5
  19. xpk/commands/inspector.py +5 -3
  20. xpk/commands/kind.py +3 -1
  21. xpk/commands/managed_ml_diagnostics.py +249 -0
  22. xpk/commands/managed_ml_diagnostics_test.py +146 -0
  23. xpk/commands/storage.py +8 -10
  24. xpk/commands/workload.py +143 -142
  25. xpk/commands/workload_test.py +160 -118
  26. xpk/core/blueprint/blueprint_generator.py +73 -33
  27. xpk/core/blueprint/blueprint_test.py +9 -0
  28. xpk/core/blueprint/testing/data/a3_mega.yaml +129 -0
  29. xpk/core/blueprint/testing/data/a3_mega_spot.yaml +125 -0
  30. xpk/core/blueprint/testing/data/a3_ultra.yaml +173 -0
  31. xpk/core/blueprint/testing/data/a4.yaml +185 -0
  32. xpk/core/capacity.py +48 -8
  33. xpk/core/capacity_test.py +32 -1
  34. xpk/core/cluster.py +55 -104
  35. xpk/core/cluster_test.py +170 -0
  36. xpk/core/commands.py +4 -10
  37. xpk/core/config.py +88 -7
  38. xpk/core/config_test.py +67 -11
  39. xpk/core/docker_container.py +3 -1
  40. xpk/core/docker_image.py +10 -6
  41. xpk/core/docker_resources.py +1 -10
  42. xpk/core/gcloud_context.py +18 -12
  43. xpk/core/gcloud_context_test.py +111 -1
  44. xpk/core/kjob.py +17 -19
  45. xpk/core/kueue_manager.py +205 -51
  46. xpk/core/kueue_manager_test.py +158 -4
  47. xpk/core/nap.py +13 -14
  48. xpk/core/nodepool.py +37 -43
  49. xpk/core/nodepool_test.py +42 -19
  50. xpk/core/pathways.py +23 -0
  51. xpk/core/pathways_test.py +57 -0
  52. xpk/core/resources.py +84 -27
  53. xpk/core/scheduling.py +144 -133
  54. xpk/core/scheduling_test.py +298 -6
  55. xpk/core/system_characteristics.py +256 -19
  56. xpk/core/system_characteristics_test.py +128 -5
  57. xpk/core/telemetry.py +263 -0
  58. xpk/core/telemetry_test.py +211 -0
  59. xpk/core/vertex.py +4 -3
  60. xpk/core/workload_decorators/tcpx_decorator.py +5 -1
  61. xpk/main.py +33 -13
  62. xpk/parser/cluster.py +40 -67
  63. xpk/parser/cluster_test.py +83 -3
  64. xpk/parser/common.py +84 -0
  65. xpk/parser/storage.py +10 -0
  66. xpk/parser/storage_test.py +47 -0
  67. xpk/parser/workload.py +14 -29
  68. xpk/parser/workload_test.py +3 -49
  69. xpk/telemetry_uploader.py +29 -0
  70. xpk/templates/arm_gpu_workload_crate.yaml.j2 +46 -0
  71. xpk/templates/kueue_gke_default_topology.yaml.j2 +1 -1
  72. xpk/templates/kueue_sub_slicing_topology.yaml.j2 +3 -8
  73. xpk/utils/console.py +41 -10
  74. xpk/utils/console_test.py +106 -0
  75. xpk/utils/feature_flags.py +10 -1
  76. xpk/utils/file.py +4 -1
  77. xpk/utils/topology.py +4 -0
  78. xpk/utils/user_agent.py +35 -0
  79. xpk/utils/user_agent_test.py +44 -0
  80. xpk/utils/user_input.py +48 -0
  81. xpk/utils/user_input_test.py +92 -0
  82. xpk/utils/validation.py +2 -13
  83. xpk/utils/versions.py +31 -0
  84. xpk-0.16.0.dist-info/METADATA +127 -0
  85. xpk-0.16.0.dist-info/RECORD +168 -0
  86. xpk-0.14.4.dist-info/METADATA +0 -1645
  87. xpk-0.14.4.dist-info/RECORD +0 -139
  88. {xpk-0.14.4.dist-info → xpk-0.16.0.dist-info}/WHEEL +0 -0
  89. {xpk-0.14.4.dist-info → xpk-0.16.0.dist-info}/entry_points.txt +0 -0
  90. {xpk-0.14.4.dist-info → xpk-0.16.0.dist-info}/licenses/LICENSE +0 -0
  91. {xpk-0.14.4.dist-info → xpk-0.16.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,127 @@
1
+ Metadata-Version: 2.4
2
+ Name: xpk
3
+ Version: 0.16.0
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
@@ -0,0 +1,168 @@
1
+ integration/README.md,sha256=EZwllubkB7mJt-DzPRNrhD0kkSV7TwaihmOX1mjNvAk,296
2
+ integration/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
3
+ integration/docker_manager_test.py,sha256=J2xijy6crRtrwQXrEvtOEY7mo1kEJYhcIYMZ7w0OGa4,2514
4
+ integration/gcluster_a3mega_test.py,sha256=DoDEWWPTxjvn6T1ZNNXJEC64vlA7ywvtrSwYUEUn5Gg,6522
5
+ integration/gcluster_a3ultra_test.py,sha256=XGZXuir2PeLjEI2Yt8VlIEmxtPHEHjeKQeMMBKTSGVg,6322
6
+ integration/gcluster_a4_test.py,sha256=c5asoFLioHznq6-F7GjZf2JRqQuTODX5_bjJWuBcRwU,6230
7
+ integration/gcluster_test.py,sha256=3GSOMszzNW6Yr4T4PFIpmszonwDAAGpSdKutUA77O-g,3304
8
+ xpk/__init__.py,sha256=7mu-VQDQMyxM5To0KOhuYe4y2TYGsEkfV7hXZmUyih4,561
9
+ xpk/main.py,sha256=bcyc47530aC61J81XqszDscgMNAPQmEafQFA7WOxlBk,3218
10
+ xpk/telemetry_uploader.py,sha256=DW-eXiWpxc0Ga3igehhVIz-F3CmBwe1kl1Lbgbn0MOE,901
11
+ xpk/api/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
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
22
+ xpk/commands/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
23
+ xpk/commands/batch.py,sha256=Cj1bDpzPMoPdhaKKrOJJLJ3JzRvJrCMn8huQoHHIZJI,4192
24
+ xpk/commands/cluster.py,sha256=zEumj1tTdsOyftpkqGwrzyOBqYFh-mkHKvYrVZr1OS8,44695
25
+ xpk/commands/cluster_gcluster.py,sha256=8C3G0KjyhxMiOzngkdX-YWozpIrRsy3E-_vdTHsNFoc,13849
26
+ xpk/commands/cluster_gcluster_test.py,sha256=B9rU3RT8CrcMflinX132k-ZvPp1rze3GHI-6Y5diFrs,6583
27
+ xpk/commands/cluster_test.py,sha256=URi0KKNMJSOGUeMpVF9FtvgftdDwp570aACfohNy2NU,18529
28
+ xpk/commands/common.py,sha256=nxLKPhXuAMW7wq-5xL2YeOgDTMUDcLGMujatOUHJ3s4,2504
29
+ xpk/commands/config.py,sha256=L_zRpQTxMcSh6rxOT8gG263V6YGqzVoz4UxdWywTFdA,850
30
+ xpk/commands/info.py,sha256=uhv5mPfgg9N-5JhQw4dT2jujL9ZC5kzGA18h9NFfm5A,7429
31
+ xpk/commands/inspector.py,sha256=FPasKtGuEZKNXIQin4AG49clfD4b53NxXpWqBPZIIoE,12955
32
+ xpk/commands/job.py,sha256=rPIfWvgm5mLz7K7YDLK721ZcUcg5OEmYVAPAtRtB5Ag,6718
33
+ xpk/commands/kind.py,sha256=XN2X3gBGbjVzhBt9QEBzWhVoaAhGHyQxgqsiuAdgijY,7736
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
37
+ xpk/commands/run.py,sha256=D0zgmnGeBLATphYhzQj29EScxrMmAKqPRhP6nfWuYcY,4085
38
+ xpk/commands/shell.py,sha256=mRHMwm3Izzsue4bocekm82Rg_cPUaGMClSlvNzNXQ-o,4467
39
+ xpk/commands/storage.py,sha256=kPViq6mrfGeAJwScdMs_kUJg-QxEO6SrEvyBbXhCzEI,11439
40
+ xpk/commands/version.py,sha256=k30rdLP9clUM8eeSwRFhpfzSb1qwcQImTfuC59Ed6CA,771
41
+ xpk/commands/workload.py,sha256=cHVDt4nqzjlk3ZIzF58Ajq3w2Nk732639Zpvf7eNgO4,30642
42
+ xpk/commands/workload_test.py,sha256=YLXSL71UhgI0p7AfiBVho7vOxrJW6jU84iNsfg5Iqgk,7240
43
+ xpk/core/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
44
+ xpk/core/capacity.py,sha256=bkPOF3xHGdtPRW1f6ue5-i2x89YG5_3q_ONEuMdknw4,9398
45
+ xpk/core/capacity_test.py,sha256=VAEM4v7R6riG0fAnS6NcfnFZFX87m9THKZ0mwSLhYls,2455
46
+ xpk/core/cluster.py,sha256=zAv46s-UB2r-I6cSkH7YzwAkGgD8Vxn7dJsXb_CMEQI,24062
47
+ xpk/core/cluster_private.py,sha256=RLi0C7bV0NEUXl6QKQzvUT0weN9EdqPvjuuOQsNO0DY,6868
48
+ xpk/core/cluster_test.py,sha256=J4Wk7E--ik_IsWWzL_iWGWbx99Ih03m-0bs-uU7gGDg,5853
49
+ xpk/core/commands.py,sha256=_QVfZ8IzCYcl0RtxZqLmaqj6IoTu-jG2n7kbuRuMSH4,10233
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
54
+ xpk/core/docker_manager.py,sha256=JBFgyD6O7LKwEHJC7YuSoCDZqrFRtb-LjgWNqkfAbR0,10566
55
+ xpk/core/docker_resources.py,sha256=ycizZ1qLvvs52PiNh9FNqUwaF8UTQAG7pf99hfka1dQ,12491
56
+ xpk/core/filestore.py,sha256=mcuUzsAPARbnrBG4fIGsEoN8NmzjaQ6k0tvIwMtjO9k,8068
57
+ xpk/core/gcloud_context.py,sha256=d1wQ76zp7QMdG5BxB3sJz4b4OF5Mc8OzmPd_m0xd-Ys,6810
58
+ xpk/core/gcloud_context_test.py,sha256=M8rp6S1zaEcAI7u4Bt8ukWKzv82HH5h9oYVojBcKgHk,5987
59
+ xpk/core/gcluster_manager.py,sha256=lyv_MvdnkByy9_PEBj_ugAEBwnCbFNiWTSrEFjrMlPc,6236
60
+ xpk/core/gcsfuse.py,sha256=kg5pgxdTjgiqquuGjev9fXzJPb8oiWPTK6wzCddzheQ,2125
61
+ xpk/core/jobset.py,sha256=PJ4Fd8TNNLuYKNOMehoMYRIUEXyc5jsbHctJGqfW_8Y,4037
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
65
+ xpk/core/monitoring.py,sha256=__bzTq_DIDAK8yIaN4F3MJh-yjYw5X1OlxmRgYOpf1g,4332
66
+ xpk/core/mtc.py,sha256=pO7p3l-EzLFdTE8MdwWV8i0Zu-7epGql_kPoksVofIU,6259
67
+ xpk/core/nap.py,sha256=1nBT9Cx0D-VNKYzTUOVrr45cW9Kp_uym_vvdWpd5mhY,12532
68
+ xpk/core/network.py,sha256=Oulb7U69lWkpOKxOC1C7ekJDpC51TLwd7XdZA3NQ7E0,10505
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
73
+ xpk/core/ray.py,sha256=JWhc_ToRHpF4_URGnuE_47FMgamaRsA4KVUMpqThWzw,6145
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
77
+ xpk/core/storage.py,sha256=NILvVAcLNMLmp4wKx_TEKbMMF5X1oL-FrQV46PT0_ds,16902
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
82
+ xpk/core/updates.py,sha256=sJCMyGh9epSz_96yeKMWGIvheqyMFEgxWFFQo7nzEBc,1723
83
+ xpk/core/updates_test.py,sha256=oeGMv-wOHcOhWKGI4GnVLZ4Z_vCxLzLHeXRCi8rIDIM,2704
84
+ xpk/core/vertex.py,sha256=DSrwoLmpWMZZe9ABdTxYI--50E11oEUC1mBLdrzOvdo,3573
85
+ xpk/core/workload.py,sha256=6TVZM15n8W7046VgmmH9Jv54MrhExtLQH3GaiwlV8Xs,8959
86
+ xpk/core/workload_test.py,sha256=tVTvrwDRXD3O1GCoftgEBWilCYTN74ayP1KRP0vptx0,857
87
+ xpk/core/blueprint/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
88
+ xpk/core/blueprint/blueprint_definitions.py,sha256=OgKkMnz4xAnmnZLaXuehVzNm1Gr2R4HWgofc7qd_mC4,2258
89
+ xpk/core/blueprint/blueprint_generator.py,sha256=qWUmB8mBuWgcGOJPKnUMACpl7nD08ns6B1mq-nPWHZU,37862
90
+ xpk/core/blueprint/blueprint_test.py,sha256=8wgH-HdYDySCVJh9RnxOTrkfBc1Nmv6ZXfzBzLlow54,7550
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
96
+ xpk/core/remote_state/__init__.py,sha256=PkV8D9WOtlJHH5AIxsQaKeIBcmupT_Ol_bwJgN6G2I8,561
97
+ xpk/core/remote_state/fuse_remote_state.py,sha256=3Dx4ZZd0NFF5-MlqGWHzz8H4bjYiPOWdF_YSEnKUPQ8,3246
98
+ xpk/core/remote_state/remote_state_client.py,sha256=6PcR92Xy_RMjlF4AscanQ1jXNHnewLWGNC2v53jbzD4,1077
99
+ xpk/core/testing/__init__.py,sha256=PkV8D9WOtlJHH5AIxsQaKeIBcmupT_Ol_bwJgN6G2I8,561
100
+ xpk/core/testing/commands_tester.py,sha256=mQOSFggESeTdzqG4srAPV9ezmoeT90r22K58yAty9sE,4445
101
+ xpk/core/testing/commands_tester_test.py,sha256=NnLWh7TJ9rKtb-DtB-vwkxvCe5wNtvUJ0f6sOa87Ht4,4023
102
+ xpk/core/workload_decorators/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
103
+ xpk/core/workload_decorators/rdma_decorator.py,sha256=isbgPnjdu2AT_Da1nVUIRoGE_qZ7jMDOKCgZOLq5r2A,4006
104
+ xpk/core/workload_decorators/storage_decorator.py,sha256=DDYQVO1OKTLhveDOA4V6b2RWr4n0fbwHdnoFFmW7iaQ,2000
105
+ xpk/core/workload_decorators/tcpx_decorator.py,sha256=6yvofTv6_XmRfI-nESZjGYeLmGrza1rWxeJGET0TqXU,6182
106
+ xpk/core/workload_decorators/tcpx_decorator_test.py,sha256=iTBS3X_-VwA2oveNDjscduLtll0VOJyFRCp4xmsjg7w,8515
107
+ xpk/core/workload_decorators/tcpxo_decorator.py,sha256=_nLX7tbnxhnS-xv4Jijd1JOP76V4LpNCfW3Np404Cqw,6537
108
+ xpk/parser/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
109
+ xpk/parser/batch.py,sha256=mJU-Cp1yTLje59vD-B1IiBcUeD-ZmEsoeB4xhj9cflc,1406
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
113
+ xpk/parser/config.py,sha256=-XnWx9aFsBW4Uzo_hpOMD2ZQ0bdZLvq1ksv83_5jqSM,1633
114
+ xpk/parser/core.py,sha256=VRJerlS92ufoQbG1mZv7B04DAP4qGkBHa4pRXgcbAs0,4761
115
+ xpk/parser/info.py,sha256=UJohxVVWdt9IgUXoPsrVae2DN1BjAVGWrSN2ajrB8RQ,1860
116
+ xpk/parser/inspector.py,sha256=hAPAZ2k9iSJgC1mjnz3rMleInsAQ8PmkyyUKFyBmsgY,1997
117
+ xpk/parser/job.py,sha256=5RdE70rucGfrsn65l7Ho6RmO06mag1S0AO-3saVuXyw,4328
118
+ xpk/parser/kind.py,sha256=sgPCqNVrgmFLcOBEbhlaphwVXxMh_opP9ntCq4KPePE,2682
119
+ xpk/parser/run.py,sha256=oi_ksSyJ8Ooffe2EgoV_ecpmXEmNGVotjpIQH-HjufE,1481
120
+ xpk/parser/shell.py,sha256=VC8p-kz9XjJZW9DXZ-rnv41XnRDRpQRFywHpB5j7tfc,1970
121
+ xpk/parser/storage.py,sha256=0V1d1htsjoa-SuxOX_vNxz2Lg4Nue9CBe_H0bNS2Hv0,10270
122
+ xpk/parser/storage_test.py,sha256=i_F9cuQXHRvUy4RJwbfuuI8ZVpTpkkY96sZ1GZ4dLPw,1494
123
+ xpk/parser/validators.py,sha256=-NBZelvfwZRzjz-YUCreD8EzMLHll8PZM-d-MVm2PG4,1192
124
+ xpk/parser/version.py,sha256=eJo4PAbbmRQZulgKBs_ytbVgV9zAaaXeNzMMxmgFMVY,769
125
+ xpk/parser/workload.py,sha256=G0HV4ddCyqfcGVxkByS-iDO3v8tlev696XKCEAON1J8,26958
126
+ xpk/parser/workload_test.py,sha256=2AAt-yEws3clGNVERPiyPDMmwrrVf58nBw2_pjgkG30,946
127
+ xpk/templates/__init__.py,sha256=7mu-VQDQMyxM5To0KOhuYe4y2TYGsEkfV7hXZmUyih4,561
128
+ xpk/templates/arm_gpu_workload_crate.yaml.j2,sha256=UK85Q8kenTZu5rCVl8wIh1DPDbSzi5tIe5I-iRaS49s,1557
129
+ xpk/templates/cluster_preheat.yaml.j2,sha256=1e8jYagQE6O7BjAfuwmEqGG1b8AOsLRlQm4V68ZnGNs,721
130
+ xpk/templates/filestore-pv.yaml,sha256=FxKZkAXa2czIYblq77iewQjCjOjs-FptuF3YLOByfLo,316
131
+ xpk/templates/filestore-pvc.yaml,sha256=Rf80UNYs3XTUdOJuWCeFq80TKXq5FhfafRE89hq7y9o,161
132
+ xpk/templates/filestore-sc.yaml,sha256=vHzcU7jk0B5z7EgTfQmMM1m2TIzR70ny6MvthyYdqhE,213
133
+ xpk/templates/fuse-pv.yaml,sha256=-CM6AYAy4HKOErd9ogiM-6vWIuWS5yXoXyBAp2EoZsM,321
134
+ xpk/templates/fuse-pvc.yaml,sha256=heGWvRIetukAI9pH9auXxnU2H-G_8pL_wRIzoWDLVH8,218
135
+ xpk/templates/kueue_config.yaml.j2,sha256=ZAZwzZ28piwlXi9Offo2CvrQ3K9gv1r9BJTPavnUEdY,2055
136
+ xpk/templates/kueue_gke_default_topology.yaml.j2,sha256=wW3qt6p3VDPgFVX7Ozw4-O4QgQ3mhH8U3osKnmuOFaE,299
137
+ xpk/templates/kueue_sub_slicing_topology.yaml.j2,sha256=UXjpRFqCIcoebwcMeD9Lo4fekQr4Xba83PM5PB_JMTs,184
138
+ xpk/templates/mtc-cpc.yaml,sha256=MPx75tog09kjRAvHoNOPCEobigQ17d7pYCUnZCevSDQ,340
139
+ xpk/templates/storage.yaml,sha256=AykdyMtDnKZF8Y_0BYxoYP03hEIzEk6iNalXAQHgAls,163
140
+ xpk/templates/volume_bundle.yaml,sha256=sqeag7GPWqGNQ5doZtO9IVAX_vKYRO73-aBE7waEtSY,129
141
+ xpk/utils/__init__.py,sha256=YPwWBbgLAu7L-YlTVGB2r8ZV4TzypURMRBcehSHHlLY,561
142
+ xpk/utils/console.py,sha256=AJWSyjuWyLjb7SYt8kPb0gw9N84EN9LbLxYCXjC-6Ds,2464
143
+ xpk/utils/console_test.py,sha256=x1v7v9VrIZwAKH-eOzj1lAY4EsHxJ6ruhfEOzpssO6o,2944
144
+ xpk/utils/execution_context.py,sha256=hONGz1hQSKE-puah2rE_uN9YUeEC4oW82VOryw5_Vgo,1181
145
+ xpk/utils/feature_flags.py,sha256=lRNjJIKyMUvUkF35MjG0iQYuoxSZarf-W98gWOW8r6M,1161
146
+ xpk/utils/file.py,sha256=yB1-k3FahoxkBpojB59vQNeZYOXB3pmktnjU4Ceah7M,2605
147
+ xpk/utils/gcs_utils.py,sha256=zg-XSTv4G4TFjeT2bNBm2WLdDXPrOZi0rNv_JdppNg4,4113
148
+ xpk/utils/kubectl.py,sha256=WKB9UhpouPN9G4n2ejRi_PgsYLI0R01gzkS1WGU6mJA,1828
149
+ xpk/utils/kueue.py,sha256=P1Pu_crGuOgYxjl8CczTgtQoum0w1sbSLGPOaEZ5180,713
150
+ xpk/utils/network.py,sha256=dGS5rxIm_zaayDElHNlzalaf09M99by5ckL_lGDl_yQ,4293
151
+ xpk/utils/objects.py,sha256=OwMNxB4TGX21qnJPdZo2YBMPMbQPqOtHMh19QhoRNRY,2498
152
+ xpk/utils/templates.py,sha256=5VAUtv-F6ICL5mxZ3Xtzdh8FEc0-86jFbqhgwW-QtcM,1277
153
+ xpk/utils/topology.py,sha256=MK9s2drBkL1F6V_uFh5K9jneOZ-VUbYLuTMFQWELwFU,1485
154
+ xpk/utils/topology_test.py,sha256=jDXCPgBPfByqjhi0W9A5c8uOHOYjRav53nNlg71ipjk,1943
155
+ xpk/utils/user_agent.py,sha256=1NMtixC1RIr_MwM5pJ0THQ0x1-fCQA92TFHjWAVZldw,1083
156
+ xpk/utils/user_agent_test.py,sha256=lkv8LqzhlA1gXFVeBzoLwE1_iGnm8G9LzkkElMrIrx0,1774
157
+ xpk/utils/user_input.py,sha256=kMdCcPWdkI31f1mJcMsNGda-xKyKxEerpSLpCqIWYPc,1503
158
+ xpk/utils/user_input_test.py,sha256=xO34jkMoTAk5Cmw7yHTk-7YexzC2UZ6ajihV8lnlAyI,2666
159
+ xpk/utils/validation.py,sha256=irL9579RbvwxiGn1t3zhhPo-0oHgdUPOSYsUuFqsDSM,3039
160
+ xpk/utils/validation_test.py,sha256=PEDSMUqZdt_Lx1FSR-LOTXKKtsJ47JH1fxugM0Gfz6Y,1168
161
+ xpk/utils/versions.py,sha256=_Ep68W70a9605XjiaOOpBa9Is9jXlsoOiwL8v5Xt-WA,897
162
+ xpk/utils/yaml.py,sha256=j8xuAJ9yAAwnQi6ozwZ-nMnDyDnc3xWkeBZMtSuP4RU,844
163
+ xpk-0.16.0.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
164
+ xpk-0.16.0.dist-info/METADATA,sha256=BtZ646KSVCM3I8PbVBUfBXcumKy4yyboK-jtaC7JdJw,7901
165
+ xpk-0.16.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
166
+ xpk-0.16.0.dist-info/entry_points.txt,sha256=mzEtiIesFkT1kmcTUVDA1o3uOhiniX6tIz2wmOlMu1M,38
167
+ xpk-0.16.0.dist-info/top_level.txt,sha256=TQKZWgV7LSElvmunYT9V_627qOMoxq3qYzWAFzKudB8,16
168
+ xpk-0.16.0.dist-info/RECORD,,