Skip to content

V1.2.3 UI optimization and new features#214

Open
guillaume-byte wants to merge 20 commits into
devfrom
v1.2.3---UI-Optimization-and-new-features
Open

V1.2.3 UI optimization and new features#214
guillaume-byte wants to merge 20 commits into
devfrom
v1.2.3---UI-Optimization-and-new-features

Conversation

@guillaume-byte

Copy link
Copy Markdown
Member

Next release includes:

  • Logger changes from Python dict/list chunks to duckDB
  • Manual saving of modal weights, opt., and architecture from UI
  • Fix Ledger issues with variable operations, like str, iterable, or assignment (getitem)
  • Update documentation
  • Separate GetDataSamples and GetMetaData into two protocols for cleaner code and better efficiency
    And more to come!

guillaume-byte and others added 5 commits June 19, 2026 14:59
* Fix release note generation from PR commits only

* Add __getitem__ to ValueProxy for parameters wrap
…211)

Document the Weights Studio per-image bounding-box render caps (GT and PRED capped independently) in the configuration env-var reference and the weights_studio deployment .env examples.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Add save btn and fix UI text issue of the current version

* add details of export fct to readme
guillaume-byte and others added 15 commits June 19, 2026 16:50
…re toggles

The branch sync left two identical `message SaveCheckpointOperation`
definitions, which makes protoc reject the file. Remove the redundant
first copy (keeping the documented "manual save now" one) and regenerate
the Python descriptor. The grpc stub is unchanged (no rpc was duplicated).

Docs: add the Weights Studio feature toggles (ENABLE_PLOTS,
ENABLE_DATA_EXPLORATION, ENABLE_HYPERPARAMETERS_OPTIMIZATION, ENABLE_AGENT)
to configuration.rst and the AGENTS.md frontend env-var table.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- GetHistogram RPC: bin one column server-side into <=512 typed bins
  (min/max/avg/count + per-(origin,discarded) sub-bars) instead of the client
  pulling every row and binning in the browser. Bit-identical to the client
  binning; ~116x smaller payload, ~50ms warm. Adds the proto messages + RPC,
  regenerated pb2/pb2_grpc, DataService.GetHistogram, and servicer delegation.
- ApplyDataQuery: skip the forced full-view rebuild for SORT-ONLY operations
  (a sort just re-orders the existing snapshot). Global sort ~7.5s -> ~0.5s.
- _slowUpdateInternals: run the view rebuild on a background thread for
  reader-triggered (non-force) refreshes, so grid/histogram reads never block
  on the multi-second collapse+combine. Reader p95 ~3000ms -> ~130ms. Filters/
  resets still refresh inline (need fresh data).
- ws-classification example: loosen eval (100->500) / checkpoint (25->250)
  cadence and use a bigger eval batch (16->128) so eval stops dominating
  wall-clock.

Co-authored-by: Alexandru Rotaru <rotarualexandruandrei94@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Guillaume <guillaume@graybx.com>
* Server-side histogram binning + grid/sort perf fixes

- GetHistogram RPC: bin one column server-side into <=512 typed bins
  (min/max/avg/count + per-(origin,discarded) sub-bars) instead of the client
  pulling every row and binning in the browser. Bit-identical to the client
  binning; ~116x smaller payload, ~50ms warm. Adds the proto messages + RPC,
  regenerated pb2/pb2_grpc, DataService.GetHistogram, and servicer delegation.
- ApplyDataQuery: skip the forced full-view rebuild for SORT-ONLY operations
  (a sort just re-orders the existing snapshot). Global sort ~7.5s -> ~0.5s.
- _slowUpdateInternals: run the view rebuild on a background thread for
  reader-triggered (non-force) refreshes, so grid/histogram reads never block
  on the multi-second collapse+combine. Reader p95 ~3000ms -> ~130ms. Filters/
  resets still refresh inline (need fresh data).
- ws-classification example: loosen eval (100->500) / checkpoint (25->250)
  cadence and use a bigger eval batch (16->128) so eval stops dominating
  wall-clock.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fix proto files and is/is not ValueProxy from ledgers to ==/!=

---------

Co-authored-by: Alexandru Rotaru <rotarualexandruandrei94@gmail.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Guillaume <guillaume@graybx.com>
Strip colorful emoji from console.log, print statements, logger calls,
docstrings, and comments across the entire backend codebase. Plain text
conveys the same meaning without unicode-rendering concerns.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
weightslab logdir <root_log_dir> [--no-ui] [--certs] [--grpc-port PORT]

Wires the existing load_experiment_for_explore / serve / keep_serving
infrastructure into the CLI so a downloaded log dir can be explored
without running the original training script. By default also launches
the Weights Studio Docker UI stack; pass --no-ui to skip (useful when
the UI is already running from a prior 'weightslab ui launch').

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Both classification and segmentation examples now:
- Export signal history + data grid to root_log_dir every 100 steps
  (configurable via write_export_ratio in config.yaml)
- Also export once at end of training for a final snapshot

This lets an offline explore session (weightslab logdir) immediately
pick up the latest signal/dataframe state without waiting for a checkpoint.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…crash

Adds a multi-task MNIST example (ws-multitask) demonstrating:
- Shared CNN backbone with classification and localization heads
- Two separately-tracked WeightsLab losses (cross-entropy + smooth-L1)
- Detection-format targets (tight bounding box per digit) for UI bbox overlay
- Per-sample accuracy signal for data grid inspection

Fixes GuardContext.__enter__ crashing with "Proxy target not set" when no
model is registered: get_model() returns a Proxy(None) placeholder; now
checks the Proxy _obj target before assigning self.model so unregistered
contexts (e.g., Lightning-only tests) work gracefully.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…dger)

Previous fix only prevented assigning an unresolved Proxy but left self.model
pointing to a stale proxy from a prior call. Now always derives self.model
from the current ledger state on each __enter__: if get_model() returns a
Proxy with no target (no model registered), self.model is set to None rather
than falling back to a potentially-stale earlier value.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds _is_ui_running() which checks each _STACK_CONTAINERS entry via
docker inspect. logdir_explore uses it to skip ui_launch when the
Weights Studio stack is already up, avoiding a redundant Docker bring-up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes all code added for the offline explore / logdir feature:
- backend/explore_mode.py (deleted)
- tests/integrations/test_explore_mode.py (deleted)
- examples/PyTorch/ws-multitask/ (deleted)
- load_experiment_for_explore / _rehydrate_dataframe_from_disk from src.py
- logdir_explore / _is_ui_running / logdir subparser from ui_docker_bridge.py
- explore mode guards from experiment_service.py and model_service.py
- explore mode unit tests from test_trainer_services_unit.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@guillaume-byte guillaume-byte force-pushed the v1.2.3---UI-Optimization-and-new-features branch from e51b974 to 9831f81 Compare June 23, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants