| Crates.io | daa-prime-cli |
| lib.rs | daa-prime-cli |
| version | 0.2.1 |
| created_at | 2025-06-25 15:42:05.44315+00 |
| updated_at | 2025-06-25 16:09:11.360986+00 |
| description | Command-line interface for Prime distributed ML operations |
| homepage | https://github.com/example/prime-rust |
| repository | https://github.com/example/prime-rust |
| max_upload_size | |
| id | 1726051 |
| size | 31,212 |
Command-line interface for Prime distributed machine learning operations. Provides easy access to training, coordination, and management functions for the Prime distributed ML framework.
DAA Prime CLI is the primary interface for interacting with the Prime distributed ML ecosystem. It provides:
cargo install daa-prime-cli
git clone https://github.com/yourusername/daa.git
cd daa/prime-rust/crates/prime-cli
cargo install --path .
Download pre-built binaries from the releases page.
# View Prime system status and available crates
prime status
Output:
Prime system status:
- System: Ready
- Version: 0.2.1
- Framework: Distributed ML with DAA
- Available crates:
* daa-prime-core v0.2.1
* daa-prime-dht v0.2.1
* daa-prime-trainer v0.2.1
* daa-prime-coordinator v0.2.1
# Start trainer with random ID
prime trainer
# Start trainer with specific ID
prime trainer --id trainer-gpu-001
# Start coordinator with random ID
prime coordinator
# Start coordinator with specific ID
prime coordinator --id coordinator-main
prime [OPTIONS] <COMMAND>
Options:
-h, --help Print help information
-V, --version Print version information
prime statusDisplay system status and component information.
prime status
Shows:
prime trainerStart a distributed training node.
prime trainer [OPTIONS]
Options:
-i, --id <ID> Node ID (defaults to random UUID)
-h, --help Print help information
Examples:
# Start with random ID
prime trainer
# Start with specific ID
prime trainer --id gpu-worker-001
# Start with custom configuration
prime trainer --id trainer-001 --config trainer.json
Note: The current CLI provides a simplified interface. For full training functionality, use the daa-prime-trainer crate directly in your Rust applications.
prime coordinatorStart a coordination node for distributed training.
prime coordinator [OPTIONS]
Options:
-i, --id <ID> Node ID (defaults to random UUID)
-h, --help Print help information
Examples:
# Start coordinator with random ID
prime coordinator
# Start coordinator with specific ID
prime coordinator --id coord-main
# Start coordinator cluster node
prime coordinator --id coord-002 --cluster-config cluster.json
Note: The current CLI provides a simplified interface. For full coordination functionality, use the daa-prime-coordinator crate directly in your Rust applications.
# Set logging level
export RUST_LOG=info
# Set custom data directory
export PRIME_DATA_DIR=/path/to/data
# Set network configuration
export PRIME_NETWORK_PORT=8080
export PRIME_NETWORK_HOST=0.0.0.0
trainer.json){
"training": {
"batch_size": 32,
"learning_rate": 0.001,
"max_epochs": 100,
"optimizer": {
"type": "AdamW",
"beta1": 0.9,
"beta2": 0.999,
"weight_decay": 0.01
}
},
"network": {
"timeout": 30,
"max_message_size": 1048576,
"enable_compression": true
},
"data": {
"data_path": "/path/to/training/data",
"validation_split": 0.2,
"batch_size": 32
}
}
coordinator.json){
"coordination": {
"min_nodes_for_round": 3,
"heartbeat_timeout_ms": 5000,
"task_timeout_ms": 60000,
"consensus_threshold": 0.66
},
"economic": {
"enable_rewards": true,
"base_reward_amount": 100,
"quality_threshold": 0.8
},
"network": {
"port": 8080,
"max_connections": 1000,
"enable_tls": true
}
}
cluster.json){
"cluster_id": "main_cluster",
"coordinators": [
{
"id": "coordinator-001",
"address": "10.0.1.10:8080",
"is_bootstrap": true
},
{
"id": "coordinator-002",
"address": "10.0.1.11:8080"
},
{
"id": "coordinator-003",
"address": "10.0.1.12:8080"
}
],
"leader_election": "raft",
"failover_timeout": 30
}
# 1. Check system status
prime status
# 2. Start a coordinator
prime coordinator --id dev-coordinator &
# 3. Start multiple trainers
prime trainer --id trainer-1 &
prime trainer --id trainer-2 &
prime trainer --id trainer-3 &
# 4. Monitor progress (in separate terminal)
watch -n 5 prime status
# Start coordinator cluster
prime coordinator --id coord-1 --config prod-coordinator.json --cluster-config cluster.json &
prime coordinator --id coord-2 --config prod-coordinator.json --cluster-config cluster.json &
prime coordinator --id coord-3 --config prod-coordinator.json --cluster-config cluster.json &
# Start trainer nodes on different machines
prime trainer --id gpu-node-001 --config gpu-trainer.json &
prime trainer --id gpu-node-002 --config gpu-trainer.json &
prime trainer --id cpu-node-001 --config cpu-trainer.json &
# Quick test with minimal nodes
prime coordinator --id test-coord &
sleep 2
prime trainer --id test-trainer-1 &
prime trainer --id test-trainer-2 &
# Check everything is running
prime status
# Trainers automatically integrate with DAA AI for:
# - Model management and versioning
# - Inference capabilities
# - ML pipeline orchestration
# View AI integration status
prime status | grep -A 5 "AI Integration"
# Coordinators use DAA Rules for:
# - Governance policy enforcement
# - Training parameter validation
# - Node behavior compliance
# Check rules integration
prime status | grep -A 5 "Rules Integration"
# Automatic token rewards for:
# - Quality training contributions
# - Reliable node operation
# - Successful task completion
# View economic integration
prime status | grep -A 5 "Economy Integration"
# Dockerfile for Prime CLI
FROM rust:1.70-slim as builder
WORKDIR /app
COPY . .
RUN cargo install --path crates/prime-cli
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/cargo/bin/prime /usr/local/bin/
ENTRYPOINT ["prime"]
CMD ["status"]
# Build and run
docker build -t prime-cli .
# Run trainer
docker run --rm -d --name trainer-1 prime-cli trainer --id docker-trainer-1
# Run coordinator
docker run --rm -d --name coordinator prime-cli coordinator --id docker-coord
# Check status
docker run --rm prime-cli status
# prime-trainer.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: prime-trainer
spec:
replicas: 3
selector:
matchLabels:
app: prime-trainer
template:
metadata:
labels:
app: prime-trainer
spec:
containers:
- name: trainer
image: prime-cli:latest
command: ["prime", "trainer"]
args: ["--id", "k8s-trainer-$(POD_NAME)"]
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: RUST_LOG
value: "info"
# prime-coordinator.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: prime-coordinator
spec:
replicas: 1
selector:
matchLabels:
app: prime-coordinator
template:
metadata:
labels:
app: prime-coordinator
spec:
containers:
- name: coordinator
image: prime-cli:latest
command: ["prime", "coordinator"]
args: ["--id", "k8s-coordinator"]
ports:
- containerPort: 8080
env:
- name: RUST_LOG
value: "info"
#!/bin/bash
# deploy-prime-cluster.sh
set -e
COORDINATOR_ID="auto-coord-$(date +%s)"
TRAINER_COUNT=${1:-5}
echo "Deploying Prime cluster with $TRAINER_COUNT trainers..."
# Start coordinator
echo "Starting coordinator: $COORDINATOR_ID"
prime coordinator --id "$COORDINATOR_ID" &
COORD_PID=$!
# Wait for coordinator to be ready
sleep 5
# Start trainers
for i in $(seq 1 $TRAINER_COUNT); do
TRAINER_ID="auto-trainer-$i-$(date +%s)"
echo "Starting trainer: $TRAINER_ID"
prime trainer --id "$TRAINER_ID" &
done
echo "Cluster deployed successfully!"
echo "Coordinator PID: $COORD_PID"
echo "Use 'prime status' to check cluster status"
# Wait for interrupt
trap "kill $COORD_PID; exit" INT
wait $COORD_PID
# Set log levels
export RUST_LOG=debug # Full debug logging
export RUST_LOG=info # Default info logging
export RUST_LOG=warn # Warnings and errors only
export RUST_LOG=error # Errors only
# Component-specific logging
export RUST_LOG=daa_prime_trainer=debug,daa_prime_coordinator=info
# Log to file
prime trainer --id trainer-001 2>&1 | tee trainer.log
# Continuous status monitoring
watch -n 10 prime status
# Status with timestamp
while true; do
echo "$(date): $(prime status | head -1)"
sleep 30
done
# Check if nodes are responsive
timeout 30 prime status || echo "Prime system not responding"
# Start with process management
prime coordinator --id coord-main &
echo $! > coordinator.pid
prime trainer --id trainer-main &
echo $! > trainer.pid
# Stop processes
kill $(cat coordinator.pid)
kill $(cat trainer.pid)
# Check if processes are running
kill -0 $(cat coordinator.pid) 2>/dev/null && echo "Coordinator running" || echo "Coordinator stopped"
Command Not Found
# Ensure cargo bin directory is in PATH
export PATH="$HOME/.cargo/bin:$PATH"
# Or use full path
~/.cargo/bin/prime status
Connection Issues
# Check network connectivity
prime status
# If coordinator unreachable, verify it's running
ps aux | grep prime
Permission Issues
# Ensure proper permissions for data directory
sudo chown -R $USER:$USER ~/.prime/
chmod 755 ~/.prime/
Port Conflicts
# Check if ports are in use
netstat -tuln | grep 8080
# Use different port
export PRIME_NETWORK_PORT=8081
prime coordinator
# Enable debug logging
RUST_LOG=debug prime trainer --id debug-trainer
# Trace all network activity
RUST_LOG=trace prime coordinator --id debug-coordinator
# Check configuration parsing
prime status --verbose
# General help
prime --help
# Command-specific help
prime trainer --help
prime coordinator --help
# Version information
prime --version
# Clone repository
git clone https://github.com/yourusername/daa.git
cd daa/prime-rust/crates/prime-cli
# Build
cargo build --release
# Run
./target/release/prime status
Contributions are welcome! Areas for improvement:
See our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
daa-prime-core: Core types and protocol definitionsdaa-prime-trainer: Full training node functionalitydaa-prime-coordinator: Full coordination capabilitiesdaa-prime-dht: Distributed hash table operations