Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Changelog

## v0.1.0 (2026-03-24)

First stable release of fasterbench.

### Features

- **Unified `benchmark()` API** — Single entry point returning typed `BenchmarkResult` with 5 metric categories
- **Size metrics** — Parameter count, disk size via `compute_size()`
- **Speed metrics** — Latency, throughput, batch/thread/latency sweeps via `compute_speed_multi()`
- **Compute metrics** — MACs/FLOPs via thop and torchprofile backends via `compute_compute()`
- **Memory metrics** — CPU (psutil) and GPU (CUDA) memory tracking via `compute_memory_multi()`
- **Energy metrics** — Power consumption and carbon footprint via codecarbon via `compute_energy_multi()`
- **`LayerProfiler`** — Per-layer profiling with hook-based measurement (speed, memory, size, compute)
- **Radar plots** — Multi-model comparison visualization via `create_radar_plot()`
- **`BenchmarkResult`** — Supports both typed access (`result.size.size_mib`) and dict access (`result["size_mib"]`)
- **Serialization** — `.as_dict()`, `.to_dataframe()`, `.to_json()` on all result types

### Infrastructure

- Migrated to nbdev3 with `pyproject.toml` (PEP 621)
- CI via GitHub Actions (nbdev3-ci workflow)
- Documentation via Quarto + GitHub Pages
- Suppressed spurious logging from thop and codecarbon

## v0.0.1

Initial development release.
4 changes: 3 additions & 1 deletion fasterbench/__init__.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
__version__ = "0.0.1"
"""Comprehensive benchmarking toolkit for deep learning models"""

# AUTOGENERATED! DO NOT EDIT! File to edit: ../nbs/index.ipynb.

# %% auto #0
__all__ = []

# %% ../nbs/index.ipynb #version_cell
__version__ = "0.1.0"

# %% ../nbs/index.ipynb #8b6f8c52
from .benchmark import benchmark, BenchmarkResult
from .size import SizeMetrics, compute_size, get_model_size, get_num_parameters
Expand Down
11 changes: 11 additions & 0 deletions nbs/index.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@
"#| default_exp __init__"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "version_cell",
"metadata": {},
"outputs": [],
"source": [
"#| export\n",
"__version__ = \"0.1.0\""
]
},
{
"cell_type": "code",
"execution_count": null,
Expand Down
5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ readme = "README.md"
requires-python = ">=3.7"
license = {text = "Apache-2.0"}
authors = [{name = "nathanhubens", email = "nathan.hubens@gmail.com"}]
keywords = ['nbdev', 'jupyter', 'notebook', 'python']
classifiers = ["Natural Language :: English", "Intended Audience :: Developers", "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only"]
keywords = ['benchmark', 'deep-learning', 'pytorch', 'profiling', 'latency', 'energy']
classifiers = ["Natural Language :: English", "Intended Audience :: Developers", "Development Status :: 4 - Beta", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only"]
dependencies = ['torch', 'fastcore', 'prettytable', 'tqdm', 'codecarbon', 'torchprofile', 'thop', 'plotly']

[project.urls]
Expand All @@ -28,5 +28,6 @@ version = {attr = "fasterbench.__version__"}
include = ["fasterbench"]

[tool.nbdev]
version = "0.1.0"
tst_flags = 'notest'
jupyter_hooks = true
Loading