Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Have `train!` record, for inclusion in output, a history of the public state of every control

Aperta
#64 0 commenti 0 reazioni 1 assegnatario Vedi su GitHub

@ablaom ci sta già lavorando.

Dal 7/10/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

I propose some enhancements to address two main shortcomings of IterationControl.jl, mostly based on working on tutorials for MLJIteration.jl (which wraps MLJ models in the controls provided by IterationControl.jl):

  • While possible in practice, it is rather complicated to do things like: (i) Get a history of losses (or training losses) for training over multiple iterations (see #47); and (i) Set up a callback to record, say, evolution of some learned parameters. In both cases, you have to define and initialise containers to store the relevant trace, and also to arrange the relevant callback control to write to that container as training proceeds. When you repeat the experiment, you may need to flush the trace containers. This is inconvenient.

  • The internal state of a control is currently considered private API and the only interface point is for accessing what, from the final state, is returned in the "report" output by "train!". This seems unnecessarily opaque.

  • The "report" returned by "train!" is quite hard to grok, without delving into docs or scratching your head.

I propose:

  • Introduce a new method public_state(control, state) that exposes everything about state that might be useful to know at every control cycle, in a human readable form (named tuple, say)

  • By default, have train! record a complete history of the public state of each control, exposed in the report, with a compact=true option to just record final state (for the atypical case fallbacks are exposing large objects as part of state)

  • Make improvements to the structure and display of the report to make access more intuitive.

Among other things, these changes would likely address #62 and #47.

These changes would be necessarily breaking, although the logic of controls themselves would not change much, if at all.

Some steps required are:

  • Introduce public_state the more primitive level of EarlyStopping.jl (a dep of IterationControl.jl).
Lingua principale
Julia
Stelle
25
Fork
1
Merge medio
35m
PR unite (30g)
1

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di JuliaAI/IterationControl.jl

Tutte le issue di JuliaAI/IterationControl.jl

Issue simili

Altre issue su Julia

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.