- Add CLAUDE.md entry point for Claude AI system
- Fix tito test command to set PYTHONPATH for module imports
- Fix embeddings export directive placement for nbdev
- Fix attention module to export imports properly
- Fix transformers embedding index casting to int
- Update transformers module to match tokenization style with improved ASCII diagrams
- Fix attention module to use proper multi-head interface
- Update transformer era milestone for refined module integration
- Fix import paths and ensure forward() method consistency
- All transformer components now work seamlessly together
Following module developer guidelines, added comprehensive visual diagrams:
1. Text-to-Numbers Pipeline (Introduction):
- Added full boxed diagram showing 4-step tokenization process
- Clear visual flow from human text to numerical IDs
- Each step explained inline with the diagram
2. Character Tokenization Process:
- Step-by-step vocabulary building visualization
- Shows corpus → unique chars → vocab with IDs
- Encoding process with ID lookup visualization
- Decoding process with reverse lookup
- All in clear nested boxes
3. BPE Training Algorithm:
- Comprehensive 4-step process with nested boxes
- Pair frequency analysis with bar charts (████)
- Before/After merge visualizations
- Iteration examples showing vocabulary growth
- Final results with key insights
4. Memory Layout for Embedding Tables:
- Visual bars showing relative memory sizes
- Character (204KB) vs BPE-50K (102MB) vs Word-100K (204MB)
- Shows fp32/fp16/int8 precision trade-offs
- Real production model examples (GPT-2/3, BERT, T5, LLaMA)
- Clear table format for comparison
Educational improvements:
- More visual, less text-heavy
- Clearer step-by-step flows
- Better intuition building
- Production context throughout
- Following module developer ASCII diagram patterns
Students now see:
- HOW tokenization works (not just WHAT)
- WHY different strategies exist
- WHAT the memory implications are
- HOW production models make these choices
- Bright yellow/orange gradient banner with construction icons (🚧⚠️🔨)
- Interactive controls for collapsing and dismissing the banner
- Responsive design that adapts to different screen sizes
- Clear messaging about active development and community feedback
- Proper spacing and professional appearance
- JavaScript functionality for persistent user preferences(https://claude.ai/code)
- This workflow was testing notebook conversion features
- Not required for website deployment
- Website deploys via deploy-book.yml on main branch
- Can re-enable later if needed for CI testing
- NotebooksCommand now checks modules/source/ for dev files
- Fixes 'No *_dev.py files found' error in CI
- Maintains backwards compatibility with flat structure
- Add NotebooksCommand to commands dictionary in main.py
- Command was imported but not registered
- Fixes 'invalid choice: notebooks' error in workflow
- Change 'tito module notebooks' to 'tito notebooks'
- The notebooks command is a top-level command, not a module subcommand
- Fixes workflow test failures
- Positional arguments cannot be in mutually exclusive groups in argparse
- Keep modules as positional argument, --all as optional flag
- Fixes CLI initialization error in GitHub Actions
- Updated main README to prominently feature historical milestones (1957-2024)
- Added new 'Journey Through ML History' section to book navigation
- Created comprehensive milestones-overview.md chapter explaining the progression
- Updated intro.md with milestone achievements section
- Enhanced quickstart-guide.md with milestone unlock information
- Reflects working milestones/ directory structure with 6 historical demonstrations
- Clear progression: Perceptron (1957) → XOR (1969) → MLP (1986) → CNN (1998) → Transformers (2017) → Systems (2024)
- Emphasizes proof-of-mastery approach with real achievements
- Updated main README to prominently feature historical milestones (1957-2024)
- Added new 'Journey Through ML History' section to book navigation
- Created comprehensive milestones-overview.md chapter explaining the progression
- Updated intro.md with milestone achievements section
- Enhanced quickstart-guide.md with milestone unlock information
- Reflects working milestones/ directory structure with 6 historical demonstrations
- Clear progression: Perceptron (1957) → XOR (1969) → MLP (1986) → CNN (1998) → Transformers (2017) → Systems (2024)
- Emphasizes proof-of-mastery approach with real achievements
Track train vs test accuracy to detect overfitting:
Training Progress:
- Print both train and test accuracy every 5 epochs
- Show gap between train/test with indicator:
✓ Gap < 10%: Healthy generalization
⚠️ Gap > 10%: Overfitting warning
Results Table (ACT 4):
- Train Accuracy + improvement
- Test Accuracy + improvement
- Overfitting Gap + status
- Training Time
Final Panel (ACT 5):
- Show test accuracy with gap
- Celebrate good generalization
Educational Value:
Students now see:
1. How to detect overfitting (growing train/test gap)
2. When model memorizes vs generalizes
3. Real ML systems track BOTH metrics
Example output:
Epoch 5/20 Loss: 1.234 Train: 85.0% Test: 82.0% ✓ Gap: 3.0%
Epoch 10/20 Loss: 0.891 Train: 90.0% Test: 87.0% ✓ Gap: 3.0%
This prepares them for regularization techniques (Dropout, etc.)
in later modules!
Changed from Panel to plain console.print with ASCII diagram.
All 4 milestones now follow identical format:
- console.print('[bold]🏗️ The Architecture:[/bold]')
- ASCII box diagram with arrows
- console.print('[bold]🔧 Components:[/bold]')
- Bullet list of components
This ensures visual consistency across all milestone demonstrations!
Changes:
- Removed broken _SimplifiedTensor and internal Module helper classes
- Updated imports to use tinytorch.core instead of dev modules
- Removed Module inheritance from Conv2d, MaxPool2d, AvgPool2d, SimpleCNN
- All spatial classes now standalone like Linear in layers module
This allows spatial module to export cleanly and import correctly:
from tinytorch.core.spatial import Conv2d, MaxPool2d, AvgPool2d
Smoke test: Conv2d(1,3,8,8) → (1,16,6,6) ✓
Training on 8x8 digits is so fast (< 1 second) that showing
seconds rounded to 1 decimal doesn't provide meaningful resolution.
Changed to milliseconds (ms) to show actual time differences between
batch sizes.
Now shows: '147ms' instead of '0.1s'
All milestones now have consistent celebratory summary panels:
- Same box.DOUBLE style with green border
- '🎉 Success! ...' format
- '💡 What YOU Just Accomplished' section
- Historical context and significance
- '📌 Note' with technical insight
- Preview of next milestone
Updates:
- Milestone 01: Single comprehensive panel
- Milestone 02: Combined into one panel
- Milestone 03: Already had perfect format (template)
This creates a consistent, celebratory learning experience!
Added fallback import logic:
- Try importing from tinytorch package first
- Fall back to dev modules if not exported yet
- Works both before and after 'tito export 08_dataloader'
All 3 integration tests pass:
✅ Training workflow integration
✅ Shuffle consistency across epochs
✅ Memory efficiency verification
Added integration tests for DataLoader:
- test_dataloader_integration.py in tests/integration/
- Training workflow integration
- Shuffle consistency across epochs
- Memory efficiency verification
Updated Module 08:
- Added note about optional performance analysis
- Clarified that analysis functions can be run manually
- Clean flow: text → code → tests
Updated datasets/tiny/README.md:
- Minor formatting fixes
Module 08 is now complete and ready to export:
✅ Dataset abstraction
✅ TensorDataset implementation
✅ DataLoader with batching/shuffling
✅ ASCII visualizations for understanding
✅ Unit tests (in module)
✅ Integration tests (in tests/)
✅ Performance analysis tools (optional)
Next: Export with 'bin/tito export 08_dataloader'
Fixed issue where performance analysis functions were called every time
the module was imported, instead of only when needed.
Changes:
- Commented out analyze_dataloader_performance() bare call
- Commented out analyze_memory_usage() bare call
- Removed redundant test_training_integration() comment
These functions are still defined and can be called manually for
performance insights, but won't run on every import.
The test_module() function still calls all necessary tests when
the module is run as __main__.
Result: Module imports cleanly without running expensive performance
benchmarks unless explicitly requested.
Added educational ASCII art showing:
1. **Actual pixel values** - What 8×8 digit images look like as numbers
- Shows digits 5, 3, and 8 with real pixel values (0-16 range)
- Helps students understand images are just 2D arrays
2. **Visual representation** - How humans see the digits
- ASCII art showing recognizable digit shapes
- Connects abstract numbers to concrete patterns
3. **Shape transformations** - How DataLoader batches data
- Individual: (8, 8) → Batched: (32, 8, 8)
- Shows what the model actually receives
4. **Complete example** - Loading and using tiny digits dataset
- Real code showing datasets/tiny/digits_8x8.npz usage
- Demonstrates the full DataLoader workflow
Benefits:
✅ Students visualize what image data IS
✅ Understand DataLoader's batching transformation
✅ See connection between numbers and visual patterns
✅ Ready to work with real datasets in milestones
This makes the abstract concept of 'image tensors' concrete and visual.