yaecs

YAECS (Yet Another Experiment Config System): Config System which allows easy manipulation of config files for safe, clear and repeatable experiments.

LGPL-3.0 License

Stars
8
yaecs - Make pyyaml required version more flexible Latest Release

Published by SalzingerJ about 2 months ago

yaecs - Improve path not found error message and solve bug

Published by SalzingerJ 2 months ago

Improve path not found error message
Solve parsing bug when a list and a mapping end at the same time

yaecs - Solve bugs for registered methods with no tag

Published by SalzingerJ 2 months ago

Solve bugs for registered methods with no tag

yaecs - Improve YAML parsing

Published by SalzingerJ 2 months ago

Solve bug when a list contains several mappings in a row.
Allow non-string keys in dictionaries.

yaecs - Disentangled processing and setting

Published by SalzingerJ 2 months ago

Processing and setting of new params is now disentangled from the main Configuration object. It is not yet fully clean, but it's come a long way.

yaecs - Refactoring and preparation

Published by SalzingerJ 2 months ago

Harmonise all instances of adding attributes to methods or functions using the attribute yaecs_metadata.
Prepare the code to the disentanglement of the parameter processing.
Change processing function "copy_param"'s tag from "copy" to "copy_param"
Remove obsolete checks for unlinked configs.
Remove sub-config registration.
Move all type hints handling to the main config.
Refactor the core merging and adding operations.

yaecs - Core class improved, UI upgrades

Published by SalzingerJ 2 months ago

  • Disentangle the reading of YAML files from the Configuration object
  • Make it so using config names as yaml tags in any case other than document tags is now deprecated
  • Make it so using the !type: was replaced by !. Now, !type: is reserved for type hinting. !type: will still work until the next release, but will print a warning
  • Solve various bugs and perform minor code improvements
yaecs - Solve log_timer None values

Published by Antzyx 9 months ago

  • Harmonise WildCardDict returns
  • Make sure log_timer cannot send None values to log_scalars
yaecs -

Published by Antzyx 9 months ago

  • Add documentation
  • Update README with new Getting Started
  • Make the --config flag syntax more flexible, because we can
  • Fix bug with infinite recursion loop in NotImportedModule
  • Print traceback when encountering error in experiment
yaecs - Solve bug

Published by Antzyx 10 months ago

Solve a bug where setting the tracker's internal step to a number would instead increase it by that number

yaecs - Solve Lorenzo Bug

Published by Antzyx 10 months ago

  • Progress on Documentation
  • Refactor comments
  • Solve bug happening when loading from a saved config as a part of a config file being merged
yaecs -

Published by Antzyx 10 months ago

  • Support YAML assignment of several functions through tags with "!type:foo,bar"
  • Configs that are variations of a config may no longer create variations
  • Saved and loaded metadata now include the variation name
  • If one experiment fails in a series of experiments, now the error is logged and the series continues instead of stopping
  • Solve bug with update_timers not working properly with implicit step
  • Improve handling of optional packages
  • Introduce an independent function to easily log timers without using log_scalars or step
  • Support wildcards when querying TimerManager for timers
  • Refactor details
yaecs - Timers improve !

Published by Antzyx 11 months ago

Improve timing classes which now support pausing and
resuming during an epoch
Solve issue with log_image and tracker-wide steps
Adapt basic_logger to clearml organisation

yaecs - Intuitive image logging

Published by Antzyx 11 months ago

Swapped the role of the "name" and "sub_logger" arguments in the new log_image method to make them more intuitive.

yaecs - Image extension, improved paths, logger choice

Published by Antzyx 11 months ago

  • Add the extension argument for image logging
  • Add the posssibility to choose loggers when logging
  • Improve path choice for image basic logging
  • Refactor unclear variable names
  • Refactor warnings for unused arguments
  • Add type hints for unclear definitions
yaecs - Solve various bugs

Published by Antzyx 11 months ago

yaecs - Change Validation mode pattern

Published by Antzyx 11 months ago

from "validat*" to "val*" to include "val"

yaecs - The Experiment refactor

Published by Antzyx 11 months ago

Breaking changes

  • tracker's default behaviour for parameter filtering changed :
    • default behaviour for all loggers is now to log all params (instead of
      only those that changed and are not hooks) ; see experiment arguments
      "log_modified_params_only" and "do_not_log_hooks"
    • default comment formatter was changed to include more information
    • name matching changed in the default parameter filter, the old one
      was prone to bugs
    • the ClearML logger now uses the filtered params, not the bypass
      config.get_dict

Bugfixes and new features

  • Give get_dict and all affiliated dict-like methods
    an additional argument pre_post_processing_values
    used to get the values before postprocessing instead
    of the real value (False by default)
  • New "mode" hook for experiment mode (train, test...)
    This hook simply registers the param as the experiment mode.
    This is useful for the tracker to detect which mode is currently used.
  • Refactoring Tracker into its own file
  • default formatter now has more flags :
    • %h in still the header delimitation flag
    • %n is replaced with the name of the experiment
    • %p is replaced with the path of the experiment
    • %m is replaced with the formatted experiment mode
    • %v is replaced with the variation name of the run
  • new logging functionality implemented for loggers basic and clearml :
    tracker.log_image. It can take paths to saved images, PIL images, numpy
    arrays of shape (nn3), and matplotlib and plotly figures
  • TimerManager now has an "update" method to start and stop several
    timers in one line
  • fixed some bugs with timers
  • Add possibility to track time in the tracker, support details
    parameter-wise shortening
  • Improve small things with the timers
  • Add rough integration tests for the Experiments
  • Refactor Loggers into a file per logger
yaecs - Add Timers

Published by Antzyx about 1 year ago

  • Added an internal step counter to the tracker. Now logging something such as a scalar without specifying the step will log it to that step. To log to no step, explicitly pass step=None or step=-1. The internal step can be incremented using tracker.step(). You can also pass the step to which the internal step needs to be set : tracker.step(50). However, the steps can only grow larger with time.

Old syntax (still works) :
for epoch in epochs:
...
tracker.log_scalar("accuracy", acc, step=epoch)
tracker.log_scalar("r2", acc, step=epoch)
tracker.log_scalar("mse", acc, step=epoch)
...

New syntax (with identical behaviour) :
for epoch in epochs:
...
tracker.log_scalar("accuracy", acc)
tracker.log_scalar("r2", acc)
tracker.log_scalar("mse", acc)
...
tracker.step()

  • Added features to track time in the Tracker

Instead of :
data_prep_timer = time.time()
prepare_data()
data_prep_timer = time.time() - data_prep_timer

You can do :
tracker.start_timer("data prep")
prepare_data()
tracker.stop_timer("data prep")

Times that are tracked during a given step are printed and logged to this step automatically when calling tracker.step(). They can also be retrieved using tracker.timer["last"] to log or print them manually. Please refer to the Timer and TimerManager classes for details.

  • Added feature to shorten details
  • Solved bug where logging level was not properly taken into account in some cases
yaecs - Switch to pyyaml parser for CLI

Published by Antzyx over 1 year ago

-> as a consequence, parameter type forcing is no longer a thing

Badges
Extracted from project README
License PyPI version Documentation Status