eopod: Enhanced TPU Command Runner
eopod is a command-line tool designed to simplify and enhance interaction with Google Cloud TPU VMs. It provides real-time output streaming, background process management, and robust error handling.
Features
- Configuration Management: Easily configure eopod with your Google Cloud project ID, zone, and TPU name.
- Command Execution: Run commands on TPU VMs with advanced features like retries, delays, timeouts, and worker selection.
- Interactive Mode (Experimental): Run commands in an interactive SSH session (use with caution).
- Command History: View a history of executed commands, their status, and truncated output.
- Error Logging: Detailed error logs are maintained for debugging failed commands.
- Rich Output: Utilizes the
richlibrary for visually appealing and informative output in the console.
Installation
pip install eopod
Configuration
Before using eopod, configure it with your Google Cloud credentials:
eopod configure --project-id YOUR_PROJECT_ID --zone YOUR_ZONE --tpu-name YOUR_TPU_NAME
Usage Examples
Basic Command Execution
Commands are executed with real-time output streaming by default:
# Simple command
eopod run echo "Hello TPU"
# Run Python script
eopod run python train.py --batch-size 32
# Complex commands with pipes and redirections
eopod run "cat data.txt | grep error > errors.log"
# Commands with multiple arguments
eopod run ls -la /path/to/dir
Background Processes
Run long-running tasks in the background:
# Start training in background
eopod run python long_training.py --epochs 1000 --background
# Check background processes
eopod check-background
# Check specific process
eopod check-background 12345
# Kill a background process
eopod kill 12345
# Force kill if necessary
eopod kill 12345 --force
Worker-Specific Commands
Execute commands on specific workers:
# Run on specific worker
eopod run nvidia-smi --worker 0
# Run on all workers (default)
eopod run hostname --worker all
Advanced Options
# Disable output streaming
eopod run python script.py --no-stream
# Set custom retry count
eopod run python train.py --retry 5
# Set custom retry delay
eopod run python train.py --delay 10
# Set custom timeout
eopod run python train.py --timeout 600
Kill and free TPU process
# Kill all TPU processes
eopod kill-tpu
# Force kill all TPU processes
eopod kill-tpu --force
# Kill specific PID(s)
eopod kill-tpu --pid 1234 --pid 5678
# Kill processes on specific worker
eopod kill-tpu --worker 0
Viewing History and Logs
# View command history
eopod history
# View error logs
eopod errors
# View current configuration
eopod show-config
Command Reference
Main Commands
-
run: Execute commands on TPU VMeopod run [OPTIONS] COMMAND [ARGS]...
Options:
--worker TEXT: Specific worker or "all" (default: "all")--retry INTEGER: Number of retries for failed commands (default: 3)--delay INTEGER: Delay between retries in seconds (default: 5)--timeout INTEGER: Command timeout in seconds (default: 300)--no-stream: Disable output streaming--background: Run command in background
-
configure: Set up eopod configurationeopod configure --project-id ID --zone ZONE --tpu-name NAME
-
status: Check TPU statuseopod status -
check-background: Check background processeseopod check-background [PID]
-
kill: Kill background processeseopod kill PID [--force]
Utility Commands
history: View command execution historyerrors: View error logsshow-config: Display current configuration
File Locations
- Configuration:
~/.eopod/config.ini - Command history:
~/.eopod/history.yaml - Error logs:
~/.eopod/error_log.yaml - Application logs:
~/.eopod/eopod.log
Error Handling
eopod includes built-in error handling and retry mechanisms:
- Automatic retry for failed commands
- Timeout handling
- Detailed error logging
- Rich error output
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Metadata
Release files for eopod 0.0.36
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| eopod-0.0.36.tar.gz | 22.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eopod-0.0.36-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 46.7 kB
Release files / eopod-0.0.36.tar.gz
| Download URL | eopod-0.0.36.tar.gz |
|---|---|
| Size | 22.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
589f6b91833a63f843befc57415b14fd98f9a772e958be1df2b0f1482bf09f63
|
|
BLAKE2b-256 checksum How to use checksums |
52dff1264072f6a6727077215924524cb2f37696773d2276369a216b012df116
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / eopod-0.0.36-py3-none-any.whl
| Download URL | eopod-0.0.36-py3-none-any.whl |
|---|---|
| Size | 24.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8306ffc863af7c1791343b04641f066e806f5519c0cfe64d50f19cf745dde0f2
|
|
BLAKE2b-256 checksum How to use checksums |
3b22a34481df4dafe64636389dcaecf1c26ef35e65135668ac78faab030128dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|