|
1 | 1 | # CHANGELOG |
2 | 2 |
|
3 | 3 |
|
| 4 | +## v0.10.1 (2026-03-02) |
| 5 | + |
| 6 | +### Bug Fixes |
| 7 | + |
| 8 | +- **core**: Fix one-liners and small guard additions across codebase |
| 9 | + ([`3d1591b`](https://github.com/johnmarktaylor91/torchlens/commit/3d1591b003675d91191e7a0abc728ad5eb562fae)) |
| 10 | + |
| 11 | +- Remove duplicate "contiguous" from ZERO_FLOPS_OPS (flops.py) - Fix strip("*") → rstrip("*") to |
| 12 | + avoid stripping leading chars (tensor_log.py) - Fix return type annotation to include str return |
| 13 | + (trace_model.py) - Replace isinstance(attr, Callable) with callable(attr) (model_funcs.py) - |
| 14 | + Remove dead pass_num=1 overwrite of parameterized value (logging_funcs.py) - Fix |
| 15 | + parent_params=None → [] for consistency (finalization.py) - Add int key guard in |
| 16 | + _getitem_after_pass (interface.py) - Add max(0, ...) guard for empty model module count |
| 17 | + (interface.py) - Add empty list guard in _get_lookup_help_str (interface.py) - Add explicit |
| 18 | + KeyError raise for failed lookups (interface.py) - Remove dead unreachable module address check |
| 19 | + (interface.py) - Add str() cast for integer layer keys (trace_model.py) - Add list() copy to |
| 20 | + prevent getfullargspec mutation (trace_model.py) - Reset has_saved_gradients and unlogged_layers |
| 21 | + in save_new_activations (logging_funcs.py) |
| 22 | + |
| 23 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 24 | + |
| 25 | +- **misc**: Fix decoration, param detection, vis forwarding, and guards |
| 26 | + ([`4269c4d`](https://github.com/johnmarktaylor91/torchlens/commit/4269c4d35beeabf54468fbc99b083290e830ff98)) |
| 27 | + |
| 28 | +- Remove dead double-decoration guard in decorate_torch.py - Add hasattr guard for torch.identity |
| 29 | + installation - Add None guard for code_context in FuncCallLocation.__getitem__ - Fix is_quantized |
| 30 | + to check actual qint dtypes, not all non-float - Forward show_buffer_layers to rolled edge check |
| 31 | + in vis.py |
| 32 | + |
| 33 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 34 | + |
| 35 | +- **safety**: Add try/finally cleanup and exception state resets |
| 36 | + ([`c9bdb7f`](https://github.com/johnmarktaylor91/torchlens/commit/c9bdb7fc354c0b44f3cfcf6bde17e623a3b6f6db)) |
| 37 | + |
| 38 | +- Wrap validate_saved_activations in try/finally for cleanup (user_funcs.py) - Wrap show_model_graph |
| 39 | + render_graph in try/finally with cleanup (user_funcs.py) - Reset _track_tensors and _pause_logging |
| 40 | + in exception handler (trace_model.py) - Update test to expect [] instead of None for cleared |
| 41 | + parent_params |
| 42 | + |
| 43 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 44 | + |
| 45 | +- **validation**: Fix isinstance checks and misleading variable name |
| 46 | + ([`581f286`](https://github.com/johnmarktaylor91/torchlens/commit/581f286fc7c25f50b8b82b44d1f3fcbe03b4f01c)) |
| 47 | + |
| 48 | +- Replace type(val) == torch.Tensor with isinstance() (12 occurrences) - Rename mean_output to |
| 49 | + output_std for accuracy |
| 50 | + |
| 51 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 52 | + |
| 53 | +### Refactoring |
| 54 | + |
| 55 | +- **postprocess**: Split monolithic postprocess.py into thematic package |
| 56 | + ([`cd14d27`](https://github.com/johnmarktaylor91/torchlens/commit/cd14d2744ea60db3a911905c377fc6c52123a1cc)) |
| 57 | + |
| 58 | +Break 2,115-line postprocess.py into a postprocess/ package with 5 modules: - graph_traversal.py: |
| 59 | + Steps 1-4 (output nodes, ancestry, orphans, distances) - control_flow.py: Steps 5-7 (conditional |
| 60 | + branches, module fixes, buffers) - loop_detection.py: Step 8 (loop detection, isomorphic subgraph |
| 61 | + expansion) - labeling.py: Steps 9-12 (label mapping, final info, renaming, cleanup) - |
| 62 | + finalization.py: Steps 13-18 (undecoration, timing, params, modules, finish) |
| 63 | + |
| 64 | +No behavioral changes — pure file reorganization. |
| 65 | + |
| 66 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 67 | + |
| 68 | +### Testing |
| 69 | + |
| 70 | +- **aesthetic**: Add aesthetic testing infrastructure for visual inspection |
| 71 | + ([`73cdf01`](https://github.com/johnmarktaylor91/torchlens/commit/73cdf017c29f2385cebb721e7b08b88177807365)) |
| 72 | + |
| 73 | +Add regenerable human-inspectable outputs in tests/test_outputs/: - Comprehensive text report |
| 74 | + (aesthetic_report.txt) covering all user-facing reprs, accessors, DataFrames, error messages, and |
| 75 | + field dumps for every major data structure (ModelLog, TensorLog, RolledTensorLog, ModuleLog, |
| 76 | + ModulePassLog, ParamLog, ModuleAccessor, ParamAccessor) - 28 visualization PDFs exercising nesting |
| 77 | + depth, rolled/unrolled views, buffer visibility, graph direction, frozen params, and loop |
| 78 | + detection - 6 new aesthetic test models (AestheticDeepNested, AestheticSharedModule, |
| 79 | + AestheticBufferBranch, AestheticKitchenSink, AestheticFrozenMix) - Rename visualization_outputs/ → |
| 80 | + test_outputs/ for cleaner structure |
| 81 | + |
| 82 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 83 | + |
| 84 | +- **aesthetic**: Add gradient visualization coverage |
| 85 | + ([`085dcd9`](https://github.com/johnmarktaylor91/torchlens/commit/085dcd9caf95b1ca364f83a7f97bd020f611c521)) |
| 86 | + |
| 87 | +Add gradient backward arrows (blue edges) to aesthetic testing: - New _vis_gradient helper using |
| 88 | + log_forward_pass(save_gradients=True) + backward() - 5 gradient vis PDFs: deep nested, frozen mix, |
| 89 | + kitchen sink (various configs) - Gradient section (G) in text report: TensorLog/ParamLog grad |
| 90 | + fields, frozen contrast - GRADIENT_VIS_GALLERY integrated into LaTeX PDF report as Section 3 |
| 91 | + |
| 92 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 93 | + |
| 94 | +- **aesthetic**: Add LaTeX PDF report with embedded visualizations |
| 95 | + ([`d101326`](https://github.com/johnmarktaylor91/torchlens/commit/d101326906573b95d62f5d518b13ee4be7025cb9)) |
| 96 | + |
| 97 | +Generate a comprehensive PDF report (aesthetic_report.pdf) alongside the text report, with: - |
| 98 | + tcolorbox-formatted sections for each model's outputs - Full field dumps for all data structures - |
| 99 | + All 28 visualization PDFs embedded inline with captions - Table of contents, figure numbering, |
| 100 | + proper typography - Skips gracefully if pdflatex not installed |
| 101 | + |
| 102 | +Also saves the .tex source for customization. |
| 103 | + |
| 104 | +Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
| 105 | + |
| 106 | + |
4 | 107 | ## v0.10.0 (2026-03-02) |
5 | 108 |
|
6 | 109 | ### Features |
|
0 commit comments