Releases: google-research/kauldron
v1.3.0
v1.2.2
--xp.debug.catch_post_mortemflag now works externally as well- Fixed a problem with
init_transformsthat affectedoptim.decay_to_init - Further removed deprecated summaries protocol
- Fixes regarding
grainworkers and non-thread-safe imports such aseinops - Lifted jit restriction for merging
auto_state.sum_field - Added support for
ImmutableDictinsidekonfig - Added
ShowTextssummary - Make grain an optional dependency on Windows
- Reduced logging noise
- Several other minor bugfixes
v1.2.1
- Minor bug fixes.
v1.2.0
- Fix
kd.sharding.FSDPSharding()to supportsjax.ShapeDtypeStruct kd.data:kd.data.py.PyGrainPipelinesupports direct indexing (ds[0]).kd.data.py.HuggingFacesupports
- Typeguard / typechecking
- +various changes and improvements
v1.1.1
- Restore numpy 1.26 compatibility
v1.1.0
- Add
kd.nn.WrapperModuleto make a inner-module transparent with
respect of Flax modules. - Many other changes...
v1.0.0
-
kd.kontext.Pathnow supports tensor slicing. So for example using keys like
"interm.tensor[..., 0:10, :, -1]"will now work as expected. -
kd.nn.interm_propertynow supports accessing any intermediates from within
the model viaself.interm.get_by_path('path.to.any.module.__call__[0]'). -
Deprecated: Remove
--xp.sweep_info.names=flag. Instead, sweep are unified
under--xp.sweep(see: https://kauldron.rtfd.io/en/latest/intro.html#sweeps) -
Add
kd.data.loader.TFDatafor arbitrarytf.datapipelines -
Add
kd.data.InMemoryPipelinefor small datasets that fit in memory -
Add
kd.knn.convertto convert any Flax module to klinen. -
Add
kontext.path_builder_fromto dynamically generate keys for the config
with auto-complete and static type checking. -
Add
kd.data.BatchSize(XX)util -
Breaking:
Evaluator(run_every=XX)kwarg is removed. To migrate, use
Evaluator(run=kd.evals.RunEvery(XX)) -
Added: Eval can now be launched in separate job:
cfg.evals = { 'eval_train': kd.evals.Evaluator( run=kd.evals.RunEvery(100), # Run along `train` ), 'eval_eval': kd.evals.Evaluator( run=kd.evals.RunXM(), # Run in a separate `eval` job. ), }
-
New XManager launcher
xmanager launch third_party/py/kauldron/xm/launch.py -- \ --cfg=third_party/py/kauldron/examples/mnist_autoencoder.py \ --cfg.train_ds.batch_size=32 \ --xp.sweep \ --xp.platform=a100 \ --xp.debug.catch_post_mortemThis unlock many new features:
-
Based on
konfig(so everything can be deeply configured). -
Customize the work-unit directory name, default to
{xid}/{wid}-{sweep_kwargs}, for better TensorBoard
work-unit names. -
Sweep on XManager architecture:
def sweep(): for platform in ['a100', 'v100']: yield {'cfg.xm_job': kxm.Job(platform=platform)}
-
Possibility to launch eval jobs in a separate job
-
ml_python& xreload support for much faster XM iteration cycles -
New
kd-xmcolab to quickly launch experiments without even having to open
a terminal
-
-
Changed: removed
Checkpointer.partial_initializerand instead added
cfg.init_transformswhich can be used to set multiple transformations for
the params of the model (i.e. instances ofAbstractPartialLoader). -
Changed:
konfig.imports()are not lazy by default anymore (config don't
need to be resolved inwith ecolab.adhoc()anymore!) -
Added:
kd.optim: Optimizer / optax utilskd.eval: Eval moved to their separate namespace
-
Changed: Resolved konfig can now use attribute access for dict:
- Before (still supported):
cfg.train_losses['my_loss'] - After:
cfg.train_losses.my_loss
- Before (still supported):
-
Added:
kd.nn.set_train_propertyto change theself.is_trainingproperty
value inside a model:class MyModule(nn.Module): @nn.compact def __call__(self, x): with kd.nn.set_train_property(False): x = self.pretrained_encoder(x)
-
Added:
kd.nn.ExternalModule(flax_module)to use any external flax modules
inside Kauldron. -
And many, many more changes...