Skip to main content

Pathways CLI to easily bring up pathways clusters.

Project description

pwy: Standalone Pathways GKE Cluster CLI Tool

pwy is a lightweight, standalone Python CLI utility designed to generate, apply, and manage interactive Pathways workloads on Google Kubernetes Engine (GKE) using Kubernetes JobSets.


Features

  • Automated TPU Topology Calculations: Translates simple TPU resource types (v6e-4, v6e-16, etc.) into GKE topologies, VM counts, and instance settings.
  • Spot VM Support: Dynamically injects GKE node selectors and tolerations for running workloads on cost-effective Spot VMs.
  • Colocated Python Support: Simplifies distributed checkpointing (e.g. via Orbax) by configuring and enabling colocated host CPU sidecars and proxy endpoints automatically.
  • Interactive & Batch Execution: Supports spinning up pathways servers with infinite sleep drivers for interactive debugging, or executing training scripts directly.
  • Dry-run Manifest Generation: Preview and inspect the GKE JobSet manifest without applying it to the cluster.

Installation

This project utilizes uv for fast, modern Python package and dependency management.

To sync the environment and install pwy:

uv sync

Usage

You can invoke pwy commands directly using uv run:

1. Provision / Preview a Cluster (pwy up)

Starts a Pathways JobSet or dry-runs the configuration.

uv run pwy up \
  --tpu-type v6e-16 \
  --gcs-scratch-location gs://my-bucket/pathways-staging \
  --num-slices 1 \
  --dry-run

Key Options:

  • --tpu-type: (Required) TPU type (e.g., v6e-4, v6e-8, v6e-16, v6e-32, v6e-64).
  • --gcs-scratch-location: (Required) GCS scratch path for pathways synchronization.
  • --num-slices: Number of TPU slices to run (default: 1).
  • --jax-client-image: Custom client container image (default: python:3.12-slim).
  • --command: Run a custom training/eval script in the client container. If omitted, defaults to sleep infinity (interactive mode).
  • --enable-spot: Add node affinity and toleration settings for Spot VMs.
  • --colocated-python: Enables colocated CPU Python sidecar/init containers on GKE workers and enables external proxy routing.
  • --dry-run: Prints the generated YAML to stdout instead of calling kubectl apply.
  • --name: Name of the Kubernetes JobSet resource (default: pathways-interactive).
  • --namespace: Target Kubernetes namespace (default: default).

2. Teardown a Cluster (pwy down)

Deletes the running Pathways JobSet.

uv run pwy down --name pathways-interactive --namespace default

3. Verification Example

Once the interactive cluster is running, you can verify execution by execing into the client container:

  1. Find the client pod name:

    POD_NAME=$(kubectl get pods -l jobset.sigs.k8s.io/jobset-name=pathways-interactive -o jsonpath='{.items[?(@.metadata.labels.jobset\\.sigs\\.k8s\\.io/replicatedjob-name=="pwhd")].metadata.name}')
    
  2. Install JAX and Pathways utils:

    kubectl exec $POD_NAME -c client -- pip install jax pathwaysutils
    
  3. Run a Python snippet to initialize and list devices:

    kubectl exec $POD_NAME -c client -- python3 -c "import pathwaysutils; pathwaysutils.initialize(); import jax; print(jax.devices())"
    

    The command output should print the available virtual TPU devices (e.g., coordinates and memory spaces of the allocated chips).


TPU Type Mappings

pwy handles all resource-limit math and topologies automatically according to the following matrix:

TPU Type GKE Topology VMs Per Slice RM Instance Type
v6e-4 2x2 1 tpuv6e:2x2
v6e-8 2x4 2 tpuv6e:2x4
v6e-16 4x4 4 tpuv6e:4x4
v6e-32 4x8 8 tpuv6e:4x8
v6e-64 8x8 16 tpuv6e:8x8

Running Tests

To execute the unit test suite:

uv run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pathways_cli-0.1.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pathways_cli-0.1.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file pathways_cli-0.1.0.tar.gz.

File metadata

  • Download URL: pathways_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.0

File hashes

Hashes for pathways_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c6ceac1dd9bb3a32a73f3ee74a4842773559abc403a443d04e9732e8e79a1dbd
MD5 143349119006bc1adf83b2e06ea5e36f
BLAKE2b-256 ff19b572751830a35d87fb326065a22f2fd20b4143ed03218831f213e1e28256

See more details on using hashes here.

File details

Details for the file pathways_cli-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pathways_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fdfdf5307f4bbf81c07bc94c490bbf61c224587ab62e98a8130715802a83e31b
MD5 a5043630092a526fc4cadb4e91d24a21
BLAKE2b-256 02b5da81e42a2c2593841832ec03a0d21c26d8ae5713ca1b7ef2333d231c6c36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page