Loading...
Loading...
Create, modify, run, inspect, analyze, and report Python experiments that use liblaf.cherries. Use when Codex needs to work under exp/YYYY/mm/dd/group-name/, write or edit numbered scripts in src/, run them with CHERRIES_NAME and CHERRIES_TAGS, inspect Cherries/Comet logs and generated assets, or write Markdown reports in docs/.
npx skill4agent add liblaf/cherries run-cherries-experimentsexp/<YYYY>/<mm>/<dd>/<group-name>/
├── src/10-<script-name>.py
├── data/
├── logs/
├── tmp/
└── docs/10-<report-name>.md10-src/CHERRIES_NAMECHERRIES_TAGSlogs/*.log.cherries/runs/**/logs/*.logdata/tmp/logs/.cherries/runs/docs/import logging
from pathlib import Path
from liblaf import cherries
logger = logging.getLogger(__name__)
class Config(cherries.BaseConfig):
output: Path = cherries.output("result.txt", mkdir=True)
steps: int = 10
def main(cfg: Config) -> None:
for step in range(cfg.steps):
cherries.set_step(step)
cherries.log_metrics({"train/loss": 1 / (step + 1)})
cfg.output.write_text("done\n")
logger.info("Wrote %s", cfg.output)
if __name__ == "__main__":
cherries.main(main)cherries.BaseConfigcherries.main()--learning-rate 0.01learning_ratelogginglogs/cherries.input()data/cherries.output()data/cherries.temp()tmp/cherries.log_asset()cherries.log_input()cherries.log_output()cherries.log_temp()cherries.set_step()cherries.log_metric()cherries.log_metrics()/train/lossprofile="debug"cd exp/<YYYY>/<mm>/<dd>/<group-name>
CHERRIES_NAME="Human readable run name" CHERRIES_TAGS="tag-a,tag-b" uv run python src/10-<script-name>.py --example-config valueDEBUG=1DEBUG=1uv rundata/tmp/logs/10-<script-name>.log.cherries/runs/exp/<YYYY>/<mm>/<dd>/<group-name>/docs/10-<report-name>.mdComet.ml Experiment Summary