
Security News
Vite Releases Technical Preview of Rolldown-Vite, a Rust-Based Bundler
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
๐ a simple and efficient experiment logger for Python ๐
Skรกld - An Old Norse word for a poet, usually applied to a Norwegian or Icelandic court poet or bard of the period from the 9th century to the 13th. Skaldic verse is marked by its elaborate patterns of metre, rhyme, and alliteration, and by its use of kennings.
During my PhD, I tried different Experiment/Metrics loggers including:
While those are quite mature logging solutions, which often offer beautiful dashboards, I was looking for something light-weight, local and file-based as DVCLive, but with a more ergonomic and tidy 1 structure of the logs for simpler consumption and analysis.
The latest of my workflows before Skรกld involved using a mixture of DVCLive and a custom logger from FACIL 2 in combination with log crawling CLI scripts and analysis and visualizations performed in jupyter notebooks ๐คจ
Another problem I faced with those solutions is that all of them offered a single "step" identifier for each logged metric, which is not sufficient for deep learning use-cases outside the conventional epoch-based training loops.
Because I like building python packages and I felt the need to tidy my experiment logs, I created skald
as a small side project. I hope that some people find some enjoyment in using the package too โค๏ธ
Skรกld is an experiment logger, that offers a standardized logging structure and interface to log different aspects of an experiment including:
Each metric has a unique name and a user-defined set of id variables, that identify the value of the metric at a certain step.
While a stateful version of Skรกld is planned, that updates an id/step variables through some manual call (often in a Callback). The first version is very explicit and requires every id to be logged in each call.
Logs of metrics will be represented by tidy dataframes that are stored as readable metrics.csv
or more space efficient metrics.parquet
files.
To save space, parameters will not be included in these dataframes, but in a separate file (params.yaml
) by default.
Artifacts will be stored in a separate sub-directory (artifacts/
by default).
Skรกld has its own loguru logger instance and exposes the logging functions.
The logs will stored in a console.log
file.
If you use the logger as a context manager, stdout (~ print
statements) will also be saved in console.log
.
The package can be installed with:
pip install skald
๐งโ๐ป to install a development environment (which you need if you want to work on the package, instead of just using the package),
cd
into the project's root directory and call:
poetry install --sync --compile
The API of Skรกld is very similar to DVCLive and other loggers. It also exposes loguru's logging api, so you can also use a Skรกld logger as your terminal logger.
A basic example:
from skald import Logger
# get experiment parameters from CLI arguments, parameter files ...
params: dict = { ... }
# instanciate a logger with a certain run name
with Logger("test-run-1") as logger:
logger.log_params(params)
# experiment logic
metric: float = evaluate(model)
logger.log_metric("accuracy", metric)
logger.success("finished experiment!")
To launch the experiment viewer TUI after the run is completed, use tui=True
in the constructor of the Logger
.
You can also launch the experiment viewer manually to inspect your logs:
$skald view <experiment_run_dir>
The art in the banner of this README is licensed under a Creative Commons Attribution-NonCommercial-No Derivatives Works 3.0 License. It was made by th3dutchzombi3. Check out his beautiful artwork โค๏ธ
H. Wickham, โTidy Data,โ Journal of Statistical Software, vol. 59, pp. 1โ23, Sep. 2014, doi: 10.18637/jss.v059.i10. โฉ
M. Masana, X. Liu, B. Twardowski, M. Menta, A. D. Bagdanov, and J. van de Weijer, โClass-incremental learning: survey and performance evaluation on image classification.โ arXiv, Oct. 11, 2022. doi: 10.48550/arXiv.2010.15277. โฉ
FAQs
๐ a simple and efficient experiment logger for Python ๐
We found that skald demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.ย It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Vite releases Rolldown-Vite, a Rust-based bundler preview offering faster builds and lower memory usage as a drop-in replacement for Vite.
Research
Security News
A malicious npm typosquat uses remote commands to silently delete entire project directories after a single mistyped install.
Research
Security News
Malicious PyPI package semantic-types steals Solana private keys via transitive dependency installs using monkey patching and blockchain exfiltration.