Skip to main content

Yanex - Yet Another Experiment Tracker

PyPI version Python versions License

A lightweight, Git-aware experiment tracking system for Python that makes reproducible research effortless.

Yanex is inspired by the now-discontinued Guild AI (more info).

Why Yanex?

Stop losing track of your experiments. Yanex automatically tracks parameters, results, and code state so you can focus on what matters - your research.

import yanex

# read parameters from config file or CLI arguments
lr = yanex.get_param('lr', default=0.001)
epochs = yanex.get_param('epochs', default=10)

# your experiment code
# ...

# log results, artifacts and figures
yanex.log_metrics({"loss": loss, "accuracy": accuracy}, step=epoch)
yanex.copy_artifact(model_path, "model.pth")
yanex.save_artifact(fig, "loss_curve.png")

Run from the command line:

# Run with yanex CLI for automatic tracking
yanex run train.py --param lr=10e-3 --param epochs=10

That's it. Yanex creates a separate directory for each experiment, saves the logged results and files, stdout and stderr outptus, Python environment information, and even the Git state of your code repository. You can then compare results, search experiments, and reproduce them with ease.

Key Features

  • 🔒 Reproducible: Automatic Git state tracking ensures every experiment is reproducible
  • 📊 Interactive Comparison: Compare experiments side-by-side with an interactive table
  • ⚙️ Flexible Parameters: YAML configs with CLI overrides and syntax for parameter sweeps
  • ⚡ Parallel Execution: Run multiple experiments simultaneously on multi-core systems
  • 📈 Rich Logging: Track metrics, artifacts, and figures
  • 🔍 Powerful Search: Find experiments by status, parameters, tags, or time ranges
  • 🤖 AI-Friendly: Machine-readable output formats, Claude Code skill, and yanex get for seamless AI assistant integration

Quick Start

Install

pip install yanex

1. Run Your First Experiment

# experiment.py
import yanex

params = yanex.get_params()
print(f"Learning rate: {params.get('learning_rate', 0.001)}")

# Simulate training
accuracy = 0.85 + (params.get('learning_rate', 0.001) * 10)

yanex.log_metrics({
    "accuracy": accuracy,
    "loss": 1 - accuracy
})
# Run with default parameters
yanex run experiment.py

# Override parameters
yanex run experiment.py --param learning_rate=0.01 --param epochs=50

# Add tags for organization
yanex run experiment.py --tag baseline --tag "quick-test"

2. Compare Results

# Interactive comparison table
yanex compare

# Compare specific experiments
yanex compare exp1 exp2 exp3

# Filter and compare
yanex compare -s completed -t baseline

3. Track Everything

List, search, and manage your experiments:

# List recent experiments
yanex list

# Find experiments by criteria
yanex list -s completed -t production
yanex list --started-after "1 week ago"

# Show detailed experiment info
yanex show exp_id

# Archive old experiments
yanex archive --started-before "1 month ago"

Programmatic Access

Yanex provides two APIs for working with experiments:

  • Run API: Create and execute experiments programmatically, ideal for k-fold cross-validation, ensemble training, and batch processing
  • Results API: Query, filter, and analyze completed experiments with pandas integration for advanced analysis

See the examples directory for practical demonstrations of both APIs.

Configuration Files

Create config.yaml for default parameters:

# config.yaml
model:
  learning_rate: 0.001
  batch_size: 32
  epochs: 100

data:
  dataset: "cifar10"
  augmentation: true

training:
  optimizer: "adam"
  scheduler: "cosine"

Parameter Sweeps & Parallel Execution

Run parameter sweeps with automatic parallelization:

# Run sweep in parallel with 4 workers
yanex run train.py --param "lr=range(0.01, 0.1, 0.01)" --parallel 4

# Auto-detect CPU count
yanex run train.py --param "lr=logspace(-4, -1, 10)" --parallel 0

Sweep Syntax:

# List of values
--param "batch_size=16, 32, 64, 128"

# Range: start, stop, step
--param "lr=range(0.01, 0.1, 0.01)"

# Linspace: start, stop, num_points
--param "lr=linspace(0.001, 0.1, 10)"

# Logspace: start_exp, stop_exp, num_points (uses powers of 10)
--param "lr=logspace(-4, -1, 10)"


# Multi-parameter sweep (cartesian product)
yanex run train.py \
  --param "lr=range(0.01, 0.1, 0.01)" \
  --param "batch_size=32, 64" \
  --parallel 4

See Configuration Guide for complete sweep syntax details.

Documentation

📚 Complete Documentation - Detailed guides and API reference

Quick Links:

Examples

  • CLI Examples - Main use case: Dual-mode scripts that work standalone or with yanex tracking
  • Run API Examples - Programmatic experiment creation for advanced patterns like k-fold cross-validation and batch processing
  • Results API Examples - Querying and analyzing completed experiments with pandas integration

AI & Automation

Yanex is designed for seamless integration with AI assistants and automation scripts.

Machine-readable output - Most commands support --format json, --format csv, and --format markdown:

yanex list -s completed -F json | jq '.[] | .id'
yanex compare -t sweep -F csv > results.csv

Quick field extraction - The yanex get command extracts individual values for scripting:

yanex get status abc12345           # → "completed"
yanex get params.lr abc12345        # → "0.001"
yanex get stdout abc12345 --tail 20 # Last 20 lines of output

→ Complete AI & Automation Guide

Claude Code Skill

Yanex includes a Claude Code skill for AI-assisted experiment management:

# Find your yanex installation
YANEX_PATH=$(python -c "import yanex; print(yanex.__path__[0])")

# Install globally or per-project
ln -s "$YANEX_PATH/claude-skill" ~/.claude/skills/tracking-yanex-experiments
# or: ln -s "$YANEX_PATH/claude-skill" .claude/skills/tracking-yanex-experiments

The skill enables Claude to run experiments, query results, monitor progress, and analyze data using yanex commands and APIs.

Contributing

Yanex is open source and welcomes contributions! See our contributing guidelines for details.

Built with assistance from Claude.

Contributors

The Yanex web UI (yanex ui) is being developed by Leon Lei (lytlei) as part of his Honours Thesis at the University of Sydney.

License

MIT License - see LICENSE for details.

Metadata

Release files for yanex 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yanex 0.6.1
File Size Uploaded Provenance
yanex-0.6.1.tar.gz 710.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for yanex 0.6.1
File Interpreter ABI Platform
yanex-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.4 MB

Release files / yanex-0.6.1.tar.gz

Download URL yanex-0.6.1.tar.gz
Size 710.0 kB
Tags Source
SHA-256 checksum
How to use checksums
cc376b996257a2085b48859679ee71823675a53fbce94937533d13628b084166
BLAKE2b-256 checksum
How to use checksums
c96f9996d11cac7260372689ad67a69005dd3a22dde5d91ceca5f8708f550831
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.11

Release files / yanex-0.6.1-py3-none-any.whl

Download URL yanex-0.6.1-py3-none-any.whl
Size 685.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0376b72a7a7db19d5a73e55eb4e74d53fd4c6b904380e05b5e4aa74878d90a62
BLAKE2b-256 checksum
How to use checksums
8d889d0ea51dd926d39d1e1b9dddc252d5eae0618e6bc767a53923d0d102a567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.11

Security for yanex 0.6.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page