Skip to content

Experiment Tracking and Reproducibility

Krishanth edited this page Oct 15, 2026 · 1 revision

Experiment Tracking and Reproducibility

EveryO — Reproducible Machine Learning Research & Experiment Management

Record · Reproduce · Compare · Validate · Improve

EveryO Research Documentation License

A systematic methodology for designing, tracking, comparing, validating, and reproducing machine learning experiments using EveryO.

Home · Model Training · Benchmarking Guide · Numerical Accuracy and Validation


Repository: krishanth7/EveryO

Document Classification: Research and engineering methodology

Framework Status: Experimental / Alpha

Wiki Page: 39 of 40

Important

Reproducibility Notice

EveryO provides neural computing, training, model serialization, and diagnostic capabilities. A complete experiment-tracking platform with a hosted dashboard, centralized experiment database, or automatic artifact registry is not established as a built-in EveryO feature.

The file structures, metadata formats, and tracking utilities in this guide are recommended application-level patterns. They can be implemented alongside EveryO without implying that the framework provides them automatically.

Reproducibility is a measurable engineering objective, not a guarantee that all hardware and software environments will produce bitwise-identical results.


Table of Contents

  1. Overview
  2. Objectives
  3. Reproducibility Principles
  4. Experiment Lifecycle
  5. Experiment Architecture
  6. Environment Preparation
  7. Experiment Identification
  8. Configuration Management
  9. Random Seed Management
  10. Dataset Versioning
  11. Data Integrity
  12. Model Configuration
  13. Training Configuration
  14. Metric Tracking
  15. Experiment Logging
  16. Artifact Management
  17. Checkpoint Management
  18. Model Serialization
  19. Experiment Comparison
  20. Hyperparameter Experiments
  21. Benchmark Reproducibility
  22. Numerical Reproducibility
  23. CPU and CUDA Differences
  24. Distributed Experimentation
  25. Experiment Metadata Schema
  26. Practical Tracking Implementation
  27. Experiment Reporting
  28. Research Integrity
  29. Security and Privacy
  30. Automation and CI
  31. Troubleshooting
  32. Reproducibility Checklist
  33. Official Resources

1. Overview

Experiment tracking is the systematic recording of machine learning development activities.

It enables developers to answer:

  • Which model configuration produced a result?
  • Which dataset was used?
  • Which code revision was executed?
  • Which optimizer and learning rate were selected?
  • Which metrics were observed?
  • Which checkpoint corresponds to the experiment?
  • Can another developer reproduce the result?

A well-documented experiment is easier to validate, compare, and maintain.


2. Objectives

EveryO experiment management should prioritize five objectives.

Objective Description
Traceability Connect results to code, data, and configuration
Reproducibility Enable equivalent experiments to be repeated
Comparability Compare runs under controlled conditions
Integrity Preserve original measurements and limitations
Auditability Document decisions and experimental changes

2.1 Expected Outcomes

A complete experiment record should identify:

  1. Experiment ID.
  2. Model architecture.
  3. Dataset version.
  4. Training configuration.
  5. Random seeds.
  6. Software environment.
  7. Hardware environment.
  8. Evaluation results.
  9. Model artifacts.
  10. Known limitations.

3. Reproducibility Principles

3.1 Computational Reproducibility

An experiment can be repeated using equivalent code, configuration, and computational resources.

3.2 Statistical Reproducibility

Independent runs produce results consistent with an expected statistical distribution.

3.3 Numerical Reproducibility

Computations produce outputs within defined numerical tolerances.

3.4 Bitwise Reproducibility

Outputs are identical at the binary level.

Bitwise reproducibility is a stronger requirement and may be difficult across hardware, compiler, library, or execution-order changes.

3.5 Transparency

Report differences rather than concealing them.


4. Experiment Lifecycle

          DEFINE HYPOTHESIS
                 |
                 v
          DESIGN EXPERIMENT
                 |
                 v
         FREEZE CONFIGURATION
                 |
                 v
          RECORD ENVIRONMENT
                 |
                 v
            EXECUTE RUN
                 |
                 v
           CAPTURE METRICS
                 |
                 v
          PRESERVE ARTIFACTS
                 |
                 v
          VALIDATE RESULTS
                 |
                 v
           COMPARE RUNS
                 |
                 v
          DOCUMENT FINDINGS

4.1 Experiment States

Recommended application-level states:

State Meaning
Planned Configuration prepared
Running Execution underway
Completed Execution finished
Failed Execution ended unexpectedly
Interrupted Execution stopped before completion
Validated Results passed required checks
Archived Results preserved for reference

These states are a suggested tracking convention, not built-in EveryO status values.


5. Experiment Architecture

A simple file-based tracking system can be sufficient for individual researchers and small teams.

5.1 Suggested Directory Structure

experiments/
|
+-- EXP-001/
|   |
|   +-- config.json
|   +-- environment.json
|   +-- dataset.json
|   +-- metrics.jsonl
|   +-- results.json
|   +-- model.evo
|   +-- report.md
|
+-- EXP-002/
|   |
|   +-- config.json
|   +-- environment.json
|   +-- dataset.json
|   +-- metrics.jsonl
|   +-- results.json
|   +-- model.evo
|   +-- report.md
|
+-- README.md

5.2 Benefits

  • Human-readable metadata.
  • Simple backup.
  • Easy comparison.
  • No mandatory tracking server.
  • Straightforward integration with existing development tools.

5.3 Limitations

A file-based system does not automatically provide concurrent database transactions, access controls, or a searchable hosted experiment dashboard.


6. Environment Preparation

6.1 Install EveryO

git clone https://github.com/krishanth7/EveryO.git

cd EveryO

python -m venv .venv

Activate the environment and install:

python -m pip install -e ".[dev]"

6.2 Verify the Framework

everyo info

everyo doctor

6.3 Record Python Version

python --version

6.4 Record Dependencies

python -m pip freeze > requirements-lock.txt

6.5 Record Git Revision

git rev-parse HEAD

Record whether the working tree contains uncommitted modifications.

A commit hash alone does not capture uncommitted changes.


7. Experiment Identification

Each experiment should have a unique identifier.

7.1 Recommended Format

EXP-0001
EXP-0002
EXP-0003

7.2 Metadata

{
  "experiment_id": "EXP-0001",
  "name": "baseline-mlp",
  "status": "planned",
  "framework": "EveryO",
  "description": "Baseline multilayer perceptron experiment"
}

7.3 Naming Recommendations

Use descriptive names that communicate the experiment's objective.

Avoid relying on generic labels such as:

test1
final2
latest-final

8. Configuration Management

Experiment configurations should be recorded before execution.

8.1 Example

{
  "model": {
    "type": "mlp",
    "input_features": 8,
    "hidden_features": 32,
    "output_features": 3
  },
  "training": {
    "epochs": 20,
    "batch_size": 32,
    "optimizer": "adam",
    "learning_rate": 0.001
  },
  "seed": 42
}

This is an example application configuration, not a built-in EveryO schema.

8.2 Recommended Rules

  • Record all material parameters.
  • Avoid undocumented defaults.
  • Preserve the original configuration.
  • Record modifications as separate runs.
  • Validate configuration values before execution.

9. Random Seed Management

Randomness can affect:

  • Parameter initialization.
  • Data shuffling.
  • Dataset splitting.
  • Dropout.
  • Randomized preprocessing.

9.1 NumPy Generator

import numpy as np

seed = 42

rng = np.random.default_rng(seed)

samples = rng.normal(
    size=(100, 8)
)

9.2 Python Random

import random

random.seed(42)

9.3 Important Limitation

Seeding one random number generator does not necessarily control all randomness in a complete application.

9.4 Recommended Practice

Record every relevant seed and random generator used.


10. Dataset Versioning

Dataset changes can materially affect experimental results.

10.1 Record

  • Dataset name.
  • Dataset version.
  • Source.
  • Sample count.
  • Feature count.
  • Label definition.
  • Preprocessing method.
  • Train/validation/test split.

10.2 Example

{
  "dataset": {
    "name": "synthetic-classification",
    "version": "1.0",
    "samples": 10000,
    "features": 8,
    "classes": 3,
    "split_seed": 42
  }
}

10.3 Split Integrity

Training and evaluation sets must not accidentally overlap when the evaluation design requires separation.

10.4 Data Leakage

Prevent preprocessing or feature engineering from using information that would not be available at the intended prediction time.


11. Data Integrity

Dataset integrity can be supported through cryptographic hashes.

11.1 SHA-256

import hashlib


def sha256_file(path):
    digest = hashlib.sha256()

    with open(path, "rb") as file:
        for chunk in iter(
            lambda: file.read(1024 * 1024),
            b"",
        ):
            digest.update(chunk)

    return digest.hexdigest()

11.2 Usage

checksum = sha256_file(
    "dataset.csv"
)

print(checksum)

11.3 Benefits

A matching hash provides evidence that file bytes have not changed.

11.4 Limitation

A file hash does not establish dataset quality, legality, correctness, or freedom from bias.


12. Model Configuration

Record the model's architecture.

12.1 Example

import everyo as eo

model = eo.Sequential(
    eo.Linear(8, 32),
    eo.ReLU(),
    eo.Linear(32, 16),
    eo.ReLU(),
    eo.Linear(16, 3),
)

12.2 Record

  • Layer types.
  • Input dimensions.
  • Hidden dimensions.
  • Output dimensions.
  • Activation functions.
  • Initialization configuration.
  • Relevant regularization.

12.3 Parameter Count

For a linear layer with bias:

[ P=I\times O+O ]

where:

  • (I): Input features.
  • (O): Output features.

For an 8-to-32 linear layer:

[ P=8(32)+32=288 ]


13. Training Configuration

A training record should capture the conditions under which the model was optimized.

13.1 Recommended Fields

Field Example
Optimizer Adam
Learning rate 0.001
Epochs 20
Batch size 32
Loss Cross-entropy
Device CPU
Seed 42
Gradient clipping Record actual setting
Scheduler Record actual setting

13.2 Configuration Changes

If the learning rate or architecture changes, preserve the original configuration and create a distinct run record.


14. Metric Tracking

Metrics help evaluate experiment outcomes.

14.1 Training Metrics

  • Training loss.
  • Validation loss.
  • Accuracy.
  • Learning rate.
  • Epoch duration.

14.2 Additional Metrics

Depending on the task:

  • Precision.
  • Recall.
  • F1 score.
  • Mean absolute error.
  • Mean squared error.

14.3 Example Record

{
  "epoch": 1,
  "train_loss": 1.24,
  "validation_loss": 1.31,
  "validation_accuracy": 0.52
}

Values are illustrative, not measured EveryO results.

14.4 Metric Definitions

Document how each metric is calculated.


15. Experiment Logging

JSON Lines is a practical format for recording metrics over time.

15.1 Example

{"epoch": 1, "train_loss": 1.24, "val_loss": 1.31}
{"epoch": 2, "train_loss": 1.08, "val_loss": 1.16}
{"epoch": 3, "train_loss": 0.94, "val_loss": 1.02}

15.2 Python Logger

import json
from pathlib import Path


def append_metric(path, record):
    path = Path(path)

    path.parent.mkdir(
        parents=True,
        exist_ok=True,
    )

    with path.open(
        "a",
        encoding="utf-8",
    ) as file:
        file.write(
            json.dumps(record) + "\n"
        )

15.3 Usage

append_metric(
    "experiments/EXP-0001/metrics.jsonl",
    {
        "epoch": 1,
        "train_loss": 1.24,
        "val_loss": 1.31,
    },
)

15.4 Logging Integrity

Avoid silently rewriting historical results.

For concurrent writers, use a suitable coordinated storage mechanism rather than assuming unrestricted append operations are safe.


16. Artifact Management

Artifacts are outputs generated during an experiment.

16.1 Common Artifacts

  • Model checkpoints.
  • Configuration files.
  • Metrics.
  • Plots.
  • Evaluation reports.
  • Benchmark results.

16.2 Recommended Organization

artifacts/
|
+-- checkpoints/
|
+-- metrics/
|
+-- plots/
|
+-- reports/

16.3 Artifact Metadata

Record:

  • Artifact filename.
  • Experiment ID.
  • Creation timestamp.
  • Content hash.
  • Relevant software version.

17. Checkpoint Management

Checkpoints preserve model state at selected stages.

17.1 Common Strategies

  • Save after every epoch.
  • Save best validation result.
  • Save periodic recovery checkpoints.
  • Save final model.

17.2 Best Model Selection

Select the best checkpoint using a predefined metric.

For example:

[ BestEpoch= \arg\min_t ValidationLoss_t ]

17.3 Important Distinction

A serialized model artifact is not necessarily a complete training-resumption checkpoint.

Exact resumption may also require:

  • Optimizer state.
  • Scheduler state.
  • Random generator state.
  • Current epoch.
  • Data iteration state.

Verify which state the selected serialization workflow actually preserves.


18. Model Serialization

EveryO documents the .evo model format.

18.1 Save

import everyo as eo

eo.save(
    model,
    "experiments/EXP-0001/model.evo",
)

18.2 Load

restored = eo.load(
    "experiments/EXP-0001/model.evo"
)

18.3 Format

model.evo
|
+-- manifest.json
|
+-- parameters.npz

18.4 Verification

Compare original and restored model outputs on fixed inputs.

18.5 Compatibility

Custom modules may require registration and supported reconstruction metadata.


19. Experiment Comparison

Experiments should be compared under controlled conditions.

19.1 Example Table

Experiment Learning Rate Batch Size Validation Accuracy
EXP-0001 0.001 32 82.4%
EXP-0002 0.0005 32 84.1%
EXP-0003 0.001 64 81.7%

All values are illustrative.

19.2 Comparison Rules

  • Use the same evaluation dataset.
  • Use the same metric definition.
  • Record different random seeds.
  • Document architectural differences.
  • Consider variability across repeated runs.

19.3 Avoid Cherry-Picking

Report unsuccessful experiments when they materially inform the conclusion.


20. Hyperparameter Experiments

Hyperparameters influence training behavior.

20.1 Common Hyperparameters

  • Learning rate.
  • Batch size.
  • Hidden layer width.
  • Network depth.
  • Weight decay.
  • Dropout rate.

20.2 Grid Search

Evaluate combinations from a predefined parameter grid.

20.3 Random Search

Sample configurations from defined distributions.

20.4 Controlled Experiments

When testing the effect of one variable, hold other variables constant where practical.

20.5 Selection Bias

Do not repeatedly tune on the final test dataset.

Use validation data for model selection and reserve the test dataset for appropriate final evaluation.


21. Benchmark Reproducibility

Performance results depend on execution conditions.

21.1 Required Metadata

  • CPU model.
  • GPU model, if applicable.
  • RAM.
  • Operating system.
  • Python version.
  • NumPy version.
  • EveryO revision.
  • Input shape.
  • Dtype.
  • Batch size.

21.2 Timing

Use a monotonic high-resolution timer such as:

import time

start = time.perf_counter()

# Execute the workload here.

elapsed = time.perf_counter() - start

21.3 Warm-Up

Perform warm-up iterations where appropriate.

21.4 Repeated Measurements

Report distributions, not only a single best result.

21.5 GPU Timing

Synchronize asynchronous device execution when required.


22. Numerical Reproducibility

Floating-point computations may vary due to:

  • Dtype.
  • Operation order.
  • Reduction order.
  • Hardware.
  • Numerical libraries.

22.1 Comparison

A common acceptance rule is:

[ |a-r|\leq atol+rtol|r| ]

22.2 NumPy Verification

import numpy as np

np.testing.assert_allclose(
    actual,
    reference,
    rtol=1e-5,
    atol=1e-7,
)

Here, actual and reference must be prepared by the experiment.

22.3 Tolerance Selection

Use operation- and dtype-appropriate tolerances.

Do not treat the example thresholds as universal requirements.


23. CPU and CUDA Differences

EveryO provides CPU execution and optional selected CUDA functionality.

23.1 CPU

CPU experiments may depend on:

  • BLAS implementation.
  • Thread count.
  • CPU architecture.
  • Memory bandwidth.

23.2 CUDA

CUDA experiments additionally depend on:

  • GPU model.
  • Driver.
  • CUDA Toolkit.
  • Native extension build.
  • Supported kernels.

23.3 Comparison Rules

Do not assume CPU and GPU results must be bitwise identical.

23.4 Hardware Validation

Actual CUDA correctness requires testing on compatible hardware.


24. Distributed Experimentation

EveryO documents experimental process-based distributed functionality.

24.1 Required Metadata

Record:

  • Worker count.
  • Process rank configuration.
  • Dataset partitioning.
  • Synchronization strategy.
  • Communication environment.

24.2 Scaling Efficiency

[ E(p)= \frac{T(1)}{pT(p)}\times100% ]

where:

  • (T(1)): Single-worker time.
  • (T(p)): Time with (p) workers.

24.3 Important Limitations

Same-host process testing does not establish cross-machine reliability.

The documented TCP implementation assumes a trusted network.


25. Experiment Metadata Schema

The following JSON illustrates a consolidated experiment record.

{
  "experiment_id": "EXP-0001",
  "name": "baseline-mlp",
  "status": "completed",
  "framework": {
    "name": "EveryO",
    "version": "record actual version"
  },
  "source": {
    "git_commit": "record actual commit"
  },
  "dataset": {
    "name": "synthetic-classification",
    "version": "1.0",
    "split_seed": 42
  },
  "model": {
    "architecture": "mlp",
    "input_features": 8,
    "hidden_features": 32,
    "output_features": 3
  },
  "training": {
    "optimizer": "adam",
    "learning_rate": 0.001,
    "batch_size": 32,
    "epochs": 20,
    "seed": 42
  },
  "results": {
    "validation_accuracy": null,
    "validation_loss": null
  },
  "artifacts": {
    "model": "model.evo",
    "metrics": "metrics.jsonl"
  }
}

The fields above form a suggested project-level schema.

They are not an official EveryO experiment-tracking API.


26. Practical Tracking Implementation

This example demonstrates a minimal local experiment record writer.

It uses only Python's standard library.

26.1 Implementation

import json
import platform
import sys
from datetime import datetime, timezone
from pathlib import Path


def create_experiment(
    experiment_id,
    configuration,
    root="experiments",
):
    directory = Path(root) / experiment_id

    directory.mkdir(
        parents=True,
        exist_ok=False,
    )

    metadata = {
        "experiment_id": experiment_id,
        "created_at": datetime.now(
            timezone.utc
        ).isoformat(),
        "python_version": sys.version,
        "platform": platform.platform(),
        "configuration": configuration,
    }

    metadata_path = directory / "config.json"

    metadata_path.write_text(
        json.dumps(
            metadata,
            indent=2,
        ),
        encoding="utf-8",
    )

    return directory

26.2 Usage

configuration = {
    "model": "mlp",
    "learning_rate": 0.001,
    "epochs": 20,
    "seed": 42,
}

experiment_directory = create_experiment(
    "EXP-0001",
    configuration,
)

print(experiment_directory)

26.3 Behavior

The helper:

  1. Creates a unique experiment directory.
  2. Records a UTC timestamp.
  3. Captures Python and platform information.
  4. Writes the supplied configuration.
  5. Prevents accidental reuse of an existing experiment directory.

26.4 Limitations

This utility does not automatically capture:

  • EveryO framework version.
  • Git commit.
  • Dataset hashes.
  • Training metrics.
  • Model checkpoints.
  • Hardware details.

These should be added explicitly when required.


27. Experiment Reporting

Each completed experiment should have a human-readable report.

27.1 Suggested Template

# Experiment Report

## Experiment Information

- Experiment ID:
- Name:
- Objective:
- Status:

## Environment

- EveryO version:
- Python version:
- Operating system:
- Hardware:
- Git commit:

## Dataset

- Dataset name:
- Version:
- Split strategy:
- Preprocessing:

## Model

- Architecture:
- Parameter count:

## Training

- Optimizer:
- Learning rate:
- Batch size:
- Epochs:
- Random seeds:

## Results

- Training metrics:
- Validation metrics:
- Test metrics:

## Reproducibility

- Configuration:
- Dependency record:
- Dataset hash:
- Model artifact:

## Limitations

Describe known limitations.

## Conclusion

Summarize supported findings.

27.2 Evidence

Include tables, plots, or numerical comparisons where they materially support conclusions.

27.3 Honest Reporting

Separate:

  • Observed results.
  • Interpretations.
  • Hypotheses.
  • Future work.

28. Research Integrity

Reliable experimentation requires transparent reporting.

28.1 Principles

  • Preserve original results.
  • Disclose failed runs.
  • Avoid selective reporting.
  • Do not fabricate metrics.
  • Clearly label synthetic examples.
  • Disclose limitations.

28.2 Statistical Variability

Where results depend on random initialization or sampling, use repeated experiments when practical.

28.3 Claims

Avoid claims such as:

"EveryO is always faster."

Instead, report a specific result with the exact benchmark conditions.


29. Security and Privacy

Experiment tracking can contain sensitive information.

29.1 Protect

  • Dataset access credentials.
  • API keys.
  • Private training data.
  • Personally identifiable information.
  • Proprietary model artifacts.

29.2 Recommended Practices

  • Exclude secrets from logs.
  • Restrict artifact access.
  • Review files before publication.
  • Use trusted dependencies.
  • Validate external model archives.

29.3 Data Retention

Define how long experiment records and datasets should be retained.

29.4 Security Reporting

Report suspected EveryO vulnerabilities privately through:

GitHub Security Advisories


30. Automation and CI

Continuous integration can support reproducible testing.

30.1 Recommended CI Tasks

  • Install dependencies.
  • Run unit tests.
  • Validate formatting.
  • Run numerical checks.
  • Generate test reports.
  • Archive selected artifacts.

30.2 Existing Development Commands

python -m pytest -q

ruff check .

ruff format --check .

30.3 Hardware-Specific Tests

Tests requiring CUDA or other optional infrastructure should report when they are skipped.

30.4 Performance Testing

Performance regression checks should account for normal timing variability and CI hardware differences.


31. Troubleshooting

Problem Possible Cause Recommended Action
Different results between runs Randomness Record all relevant seeds
Missing experiment files Incomplete tracking Verify artifact writing
Changed dataset Dataset version mismatch Compare hashes
Missing checkpoint Save failure Validate artifact paths
Different validation metrics Split or preprocessing mismatch Compare data pipelines
Different CPU performance BLAS or thread differences Record environment
Different CUDA results Hardware or precision differences Compare with tolerances
Serialization failure Unsupported model structure Verify compatibility
Missing dependencies Environment drift Recreate the recorded environment
Unreproducible benchmark Timing or workload differences Standardize methodology

31.1 Diagnostic Commands

everyo info

everyo doctor

python -m pytest -q

32. Reproducibility Checklist

Experiment Design

  • Hypothesis is documented.
  • Objective is measurable.
  • Evaluation criteria are defined.
  • Experiment ID is unique.

Environment

  • Python version recorded.
  • EveryO version recorded.
  • NumPy version recorded.
  • Git revision recorded.
  • Hardware recorded.

Data

  • Dataset version recorded.
  • Dataset hash recorded where appropriate.
  • Splits are reproducible.
  • Preprocessing is documented.
  • Data leakage checks are performed.

Model and Training

  • Architecture documented.
  • Hyperparameters recorded.
  • Random seeds recorded.
  • Metrics preserved.
  • Checkpoint behavior documented.

Results

  • Results validated.
  • Numerical tolerances justified.
  • Failed runs disclosed.
  • Limitations documented.
  • Reproduction instructions provided.

Artifacts

  • Model artifact preserved.
  • Configuration preserved.
  • Dependency record preserved.
  • Metrics preserved.
  • Report completed.

33. Official Resources

Resource Link
EveryO Repository GitHub
README README.md
Model Training Model Training
Model Serialization Model Serialization
Data Pipeline Data Pipeline
Benchmarking Guide Benchmarking Guide
Numerical Validation Numerical Accuracy and Validation
Testing and QA Testing and Quality Assurance
Model Deployment Model Deployment and Inference
Contributing CONTRIBUTING.md
GitHub Issues Issues
GitHub Discussions Discussions
NumPy numpy.org
Python python.org

Experiment Tracking and Reproducibility

Documentation Page 39 of 40

Next and Final Page: Documentation Index and Project Handbook →

Home · Benchmarking Guide · Model Training


EveryO — Open Machine Learning. Built for Developers.

Maintainer: @krishanth7

Open Source · MIT Licensed · Community Driven

© 2026 EveryO Contributors

Clone this wiki locally