Commit Graph
876 Commits
Author SHA1 Message Date
Vijay Janapa Reddi f15a4fabd8 Fix modules 10-13 tests and add CLAUDE.md
- 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
2025-10-25 17:04:00 -04:00
Vijay Janapa Reddi 964f425eb4 refactor: Update transformers module and milestone compatibility
- 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
2025-10-25 16:42:02 -04:00
Vijay Janapa Reddi 7c8b94b59a refactor: Update attention module to match tokenization style
- Clean import structure following TinyTorch dependency chain
- Add proper export declarations for key functions and classes
- Standardize NBGrader cell structure and testing patterns
- Enhance ASCII diagrams with improved formatting
- Align documentation style with tokenization module standards
- Maintain all core functionality and educational value
2025-10-25 15:26:33 -04:00
Vijay Janapa Reddi d4b1d7c279 Merge remote-tracking branch 'origin/dev' into dev 2025-10-25 15:01:45 -04:00
Vijay Janapa Reddi 548e66f0db refactor: Update embeddings module to match tokenization style
- Standardize import structure following TinyTorch dependency chain
- Enhance section organization with 6 clear educational sections
- Add comprehensive ASCII diagrams matching tokenization patterns
- Improve code organization and function naming consistency
- Strengthen systems analysis and performance documentation
- Align package integration documentation with module standards(https://claude.ai/code)
2025-10-25 14:58:30 -04:00
Vijay Janapa ReddiandGitHub 9d3fb50d6f Update work in progress status in README 2025-10-25 14:00:22 -04:00
Vijay Janapa Reddi 850fd1d973 Add .cursor/ and .claude/ to .gitignore and remove from tracking 2025-10-25 13:59:11 -04:00
Vijay Janapa Reddi bde003d908 fix: Adjust ASCII diagram spacing for consistent alignment 2025-10-24 17:51:11 -04:00
Vijay Janapa Reddi c6853d7550 docs: Improve tokenization module with enhanced ASCII diagrams
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
2025-10-24 17:51:11 -04:00
Vijay Janapa Reddi 0e997e4a10 refactor: Standardize imports across modules 10-17 to match 01-09
Enforce consistent import pattern across all modules:
- Direct imports from tinytorch.core.* (no fallbacks)
- Remove all sys.path.append manipulations
- Remove try/except import fallbacks
- Remove mock/dummy class fallbacks

Fixed modules:
- Module 10 (tokenization): Removed try/except fallback
- Module 12 (attention): Removed sys.path.append for tensor/layers
- Module 15 (profiling): Removed sys.path + mock Tensor/Linear/Conv2d
- Module 16 (acceleration): Removed hardcoded path + importlib + mock Tensor
- Module 17 (quantization): Removed sys.path + disabled fallback block

All modules now follow the same pattern as modules 01-09:
  from tinytorch.core.tensor import Tensor
  from tinytorch.core.layers import Linear
  # etc.

No development fallbacks - assume tinytorch package is installed.
2025-10-24 17:51:10 -04:00
Vijay Janapa ReddiandGitHub 191f6db7c7 Merge pull request #7 from Zappandy/feature/dynamic-venv-config
Feature/dynamic venv config
2025-10-22 09:07:00 -04:00
Vijay Janapa Reddi e6c92e85a0 Add construction-themed work-in-progress banner to website
- 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)
2025-10-19 16:19:10 -04:00
Vijay Janapa Reddi 65dbcf1f44 fix: Add sphinxcontrib-mermaid to book requirements
- Book _config.yml uses mermaid extension
- Extension was missing from requirements.txt
- Fixes Jupyter Book build error
2025-10-19 13:20:30 -04:00
Vijay Janapa Reddi c9bde1d2a5 fix: Use python -m tito.main instead of tito command
- tito entry point not configured in pyproject.toml
- Use module invocation for deploy-book workflow
2025-10-19 13:17:00 -04:00
Vijay Janapa Reddi e161b018c1 ci: Disable test-notebooks workflow
- 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
2025-10-19 13:00:16 -04:00
Vijay Janapa Reddi da10115f91 fix: Look for module dev files in modules/source subdirectory
- NotebooksCommand now checks modules/source/ for dev files
- Fixes 'No *_dev.py files found' error in CI
- Maintains backwards compatibility with flat structure
2025-10-19 12:59:20 -04:00
Vijay Janapa Reddi 4ac2b736c5 fix: Register notebooks command in CLI
- Add NotebooksCommand to commands dictionary in main.py
- Command was imported but not registered
- Fixes 'invalid choice: notebooks' error in workflow
2025-10-19 12:55:15 -04:00
Vijay Janapa Reddi ef820791b9 fix: Correct tito command syntax 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
2025-10-19 12:53:02 -04:00
Vijay Janapa Reddi d33c59fd91 fix: Remove mutually exclusive group from export command
- 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
2025-10-19 12:50:59 -04:00
Vijay Janapa Reddi 9a4c329b61 fix: Update GitHub Actions to use v4 of upload-artifact and cache
- Upgrade actions/upload-artifact from v3 to v4
- Upgrade actions/cache from v3 to v4
- Resolves deprecation warnings causing workflow failures
2025-10-19 12:49:23 -04:00
Vijay Janapa Reddi c0f99164a5 Merge transformers-integration into dev
- Resolve conflicts in README.md and milestones-overview.md
- Add transformer modules and milestones
- Fix GitHub Actions workflow issues
2025-10-19 12:48:18 -04:00
Vijay Janapa Reddi 0755b9e113 docs: update README and website with milestones structure
- 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
2025-10-19 12:47:17 -04:00
Vijay Janapa Reddi 0e84216700 feat: Complete transformer integration with milestones
- Add tokenization module (tinytorch/text/tokenization.py)
- Update Milestone 05 transformer demos (validation, TinyCoder, Shakespeare)
- Update book chapters with milestones overview
- Update README and integration plan
- Sync module notebooks and metadata
2025-10-19 12:46:58 -04:00
Vijay Janapa Reddi 8160776485 fix: Resolve GitHub Actions workflow failures
- Fix YAML syntax error in test-notebooks.yml (multi-line Python code)
- Add missing setup-dev.sh script referenced by workflow
- Both workflow files now pass YAML validation
2025-10-19 12:46:34 -04:00
Vijay Janapa ReddiandGitHub f08865f255 Update README.md 2025-10-12 22:21:24 -04:00
Zappandy bf94650cf4 fixed default venv value in config for validation 2025-10-11 13:12:40 +02:00
Zappandy fbea50d9da Feat(env) dynamic virtual env support for advanced users 2025-10-11 12:31:11 +02:00
Vijay Janapa Reddi bc4f6f4c78 Add Milestone 05: TinyGPT transformer demos (validation, TinyCoder, Shakespeare) 2025-09-30 18:42:37 -04:00
Vijay Janapa Reddi 174e3dea62 docs: update README and website with milestones structure
- 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
2025-09-30 17:42:12 -04:00
Vijay Janapa Reddi 94227ccf16 feat: Add overfitting detection to Milestones 03 and 04
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!
2025-09-30 17:33:54 -04:00
Vijay Janapa Reddi a8f672028d style: Make Milestone 04 architecture consistent with others
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!
2025-09-30 17:17:46 -04:00
Vijay Janapa Reddi 9a8d5de49e refactor: Keep explicit module imports + optimize CNN milestone
Import Strategy:
- Keep explicit 'from tinytorch.core.spatial import Conv2d'
- Maps directly to module structure (Module 09 → core.spatial)
- Better for education: students see exactly where each concept lives
- Removed redundant tinytorch/nn.py (nn/ directory already exists)

Milestone 04 Optimizations:
- Reduced epochs: 50 → 20 (explicit loops are slow!)
- Print progress every 5 epochs (instead of 10)
- Load from local npz file (no sklearn dependency)
- Still achieves ~80%+ accuracy

Educational Rationale:
TinyTorch uses explicit imports to show module structure:
  tinytorch.core.tensor      # Module 01
  tinytorch.core.layers      # Module 03
  tinytorch.core.spatial     # Module 09
  tinytorch.core.losses      # Module 04

PyTorch's torch.nn is convenient but pedagogically unclear.
Our approach: clarity over convenience!
2025-09-30 17:15:40 -04:00
Vijay Janapa Reddi 688e5826ec feat: Add Milestone 04 (CNN Revolution 1998) + Clean spatial imports
Milestone 04 - CNN Revolution:
 Complete 5-Act narrative structure (Challenge → Reflection)
 SimpleCNN architecture: Conv2d → ReLU → MaxPool → Linear
 Trains on 8x8 digits dataset (1,437 train, 360 test)
 Achieves 84.2% accuracy with only 810 parameters
 Demonstrates spatial operations preserve structure
 Beautiful visual output with progress tracking

Key Features:
- Conv2d (1→8 channels, 3×3 kernel) detects local patterns
- MaxPool2d (2×2) provides translation invariance
- 100× fewer parameters than equivalent MLP
- Training completes in ~105 seconds (50 epochs)
- Sample predictions table shows 9/10 correct

Module 09 Spatial Improvements:
- Removed ugly try/except import pattern
- Clean imports: 'from tinytorch.core.tensor import Tensor'
- Matches PyTorch style (simple and professional)
- No fallback logic needed

All 4 milestones now follow consistent 5-Act structure!
2025-09-30 17:04:41 -04:00
Vijay Janapa Reddi 928b4b7836 test: Add comprehensive CNN integration tests
Created test_cnn_integration.py with:

 Conv2d Operations Tests:
- Verifies actual convolution (not just shape manipulation)
- Edge detector test proves Conv2d computes correctly
- Shape transformations for various configurations
- Parameter count verification (448 params for 3→16, k=3)

 Pooling Operations Tests:
- MaxPool2d actually computes maximum values
- AvgPool2d actually computes averages
- Shape transformations validated
- Handles negative values correctly

 Numerical Stability Tests:
- Zero inputs handled correctly
- Negative values in pooling work properly

⚠️  Gradient Flow Tests (TODO):
- Placeholder for Conv2d backward support
- Will add when Conv2d autograd integration is implemented

All forward pass tests passing (8/8)!
These tests ensure CNNs actually work, not just shape shuffle.
2025-09-30 16:57:14 -04:00
Vijay Janapa Reddi 0d4bcf58c1 fix: Update Module 09 spatial for standalone classes
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) ✓
2025-09-30 16:54:21 -04:00
Vijay Janapa Reddi 1e92b87bd0 refactor: Display training times in milliseconds for better resolution
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'
2025-09-30 16:48:26 -04:00
Vijay Janapa Reddi fedbbf27a5 fix: Use len(train_dataset) instead of train_dataset.features
TensorDataset implements __len__ but doesn't expose a 'features' attribute.
Fixed throughput calculation in batch size comparison experiment.
2025-09-30 16:46:57 -04:00
Vijay Janapa Reddi 28198b1481 refactor: Apply 5-Act narrative structure to Milestone 03 + Fix duplicates
Milestone 03 Updates:
- Full 5-Act narrative structure implemented
- ACT 1: Challenge with data description
- ACT 2: Setup with architecture + hyperparameters
- ACT 3: Experiment with training progress
- ACT 4: Diagnosis with results + insights
- ACT 5: Reflection with internal separators (━)
- Horizontal separators (─) between all acts

Fixes Across All Milestones:
- Removed duplicate 'Training Complete' print in Milestone 02
- Standardized table column widths across all 3 milestones:
  * Metric: 18
  * Before Training: 16
  * After Training: 16
  * Improvement: 14
- Consistent table title: 'Training Outcome'
- All final panels now have internal separators

All milestones now follow identical 5-Act structure with:
- Clear visual flow with horizontal rules
- Consistent emoji usage
- Same panel styles and widths
- Beautiful internal separators in celebration panels
2025-09-30 16:45:28 -04:00
Vijay Janapa Reddi 97e4058268 refactor: Apply 5-Act narrative structure to Milestone 02
Implemented complete 5-Act flow for XOR solution:

ACT 1: THE CHALLENGE 🎯
- Problem: Can networks solve non-linearly separable problems?
- XOR dataset with pattern explanation
- Challenge: NOT linearly separable
- Horizontal separator

ACT 2: THE SETUP 🏗️
- Architecture with hidden layer emphasis
- Components: hidden layer transforms space
- Hyperparameters including aggressive LR
- Horizontal separator

ACT 3: THE EXPERIMENT 🔬
- Before: impossible for single-layer
- Training with hidden layers
- Completion message
- Horizontal separator

ACT 4: THE DIAGNOSIS 📊
- Results table (Training Outcome)
- XOR truth table with all 4 cases
- Key insights about hidden layers
- Horizontal separator

ACT 5: THE REFLECTION 🌟
- Final panel with internal separators (━)
- Accomplishments (✓ bullets)
- Historical timeline (1969→1986→TODAY)
- Key insight about hidden layers
- Breakthrough explanation
- Preview of Milestone 03

Consistent with Milestone 01 structure!
2025-09-30 16:42:37 -04:00
Vijay Janapa Reddi 070d78b3ae refactor: Apply 5-Act narrative structure to Milestone 01
Implemented complete 5-Act flow:

ACT 1: THE CHALLENGE 🎯
- Opening panel with problem statement
- Data description
- Horizontal separator

ACT 2: THE SETUP 🏗️
- Architecture diagram
- Components breakdown
- Hyperparameters
- Horizontal separator

ACT 3: THE EXPERIMENT 🔬
- Before training baseline
- Training progress with live updates
- Completion message
- Horizontal separator

ACT 4: THE DIAGNOSIS 📊
- Results table (Training Outcome)
- Sample predictions with context
- Key insights bullet points
- Horizontal separator

ACT 5: THE REFLECTION 🌟
- Celebration panel with internal separators
- What you accomplished (✓ bullets)
- Why this matters (historical/technical)
- Key insight + limitation
- What's next (preview)

Visual improvements:
- Horizontal rules (─) between acts
- Better emoji usage (📊 🏗️ 🔬 📌 💡 🔍)
- Internal separators (━) in final panel
- Consistent [dim] hints throughout
2025-09-30 16:40:06 -04:00
Vijay Janapa Reddi 36988ae241 fix: Add missing box import and remove duplicate prints in Milestone 02
- Added 'from rich import box' import
- Removed duplicate Step 1 prints from generate_xor_data()
- Created MILESTONE_NARRATIVE_FLOW.md with 5-Act structure

New structure creates clear narrative flow:
- Act 1: The Challenge (problem + data)
- Act 2: The Setup (architecture + hyperparams)
- Act 3: The Experiment (training)
- Act 4: The Diagnosis (results + insights)
- Act 5: The Reflection (accomplishment + meaning)

Visual separators between acts for clarity.
2025-09-30 16:37:57 -04:00
Vijay Janapa Reddi 38f99cb18f feat: Apply consistent structure template to Milestones 01 & 02
Updated both milestones to match the standard 7-part template:

1. OPENING - Historical Context
   - Cyan box.DOUBLE panel
   - Year + context in title
   - What they'll build

2. ARCHITECTURE - Visual Understanding
   - ASCII diagram
   - Component breakdown
   - Parameter count

3. STEPS - Numbered Training Process
   - Consistent [bold yellow]Step N:[/bold yellow] format
   - Clear progression
   - Status updates

4. RESULTS TABLE - Before/After Comparison
   - Title: 🎯 Training Results
   - box.ROUNDED style
   - Consistent colors (yellow/green/magenta)

5. SAMPLE PREDICTIONS - Real Outputs
   - 10 sample predictions
   - ✓/✗ with color coding

6. CELEBRATION - Victory!
   - Already standardized
   - Green box.DOUBLE panel

Benefits:
- Students now experience consistent flow
- Clear progression across milestones
- Familiar structure reduces cognitive load
- 'Wow, I'm improving!' experience

Milestone 03 already matches this template!
2025-09-30 16:34:27 -04:00
Vijay Janapa Reddi d1d654f093 feat: Add batch size experiment to Milestone 03 + Create milestone structure guide
Added batch size comparison experiment:
- Optional experiment after main training
- Compares batch sizes: 16, 64, 256
- Shows DataLoader impact on training
- Demonstrates throughput vs update frequency trade-off
- Beautiful comparison table and insights panel

Created MILESTONE_STRUCTURE_GUIDE.md:
- Defines consistent structure across all milestones
- 7-part template: Opening → Architecture → Steps → Results → Predictions → Celebration
- Consistent colors, emojis, box styles
- Ensures students experience progression and familiarity
- Template for future milestones

This creates a cohesive learning journey!
2025-09-30 16:31:21 -04:00
Vijay Janapa Reddi 761533e82b feat: Standardize milestone ending panels across all milestones
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!
2025-09-30 16:28:48 -04:00
Vijay Janapa Reddi 6187725af3 feat: Add CrossEntropyLoss autograd support + Milestone 03 MLP on digits
Key Changes:
- Implemented CrossEntropyBackward for gradient computation
- Integrated CrossEntropyLoss into enable_autograd() patching
- Created comprehensive loss gradient test suite
- Milestone 03: MLP digits classifier (77.5% accuracy)
- Shipped tiny 8x8 digits dataset (67KB) for instant demos
- Updated DataLoader module with ASCII visualizations

Tests:
- All 3 losses (MSE, BCE, CrossEntropy) now have gradient flow
- MLP successfully learns digit classification (6.9% → 77.5%)
- Integration tests pass

Technical:
- CrossEntropyBackward: softmax - one_hot gradient
- Numerically stable via log-softmax
- Works with raw class labels (no one-hot needed)
2025-09-30 16:22:09 -04:00
Vijay Janapa Reddi 1c26ce5164 Fix DataLoader integration tests to work before export
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
2025-09-30 16:08:21 -04:00
Vijay Janapa Reddi 22309fa39d Finalize Module 08 and add integration tests
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'
2025-09-30 16:07:55 -04:00
Vijay Janapa Reddi ee9ffec32e Clean up Module 08: Remove unconditional function calls
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.
2025-09-30 15:26:00 -04:00
Vijay Janapa Reddi 51035606ad Add ASCII visualizations to Module 08 for understanding image data
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.
2025-09-30 15:22:30 -04:00
Vijay Janapa Reddi 8528142c60 Simplify Module 08: Focus on DataLoader mechanics, not dataset downloads
Removed synthetic download functions (download_mnist, download_cifar10):
- These were placeholder stubs generating random noise
- Conflicted with 'Real Data, Real Systems' philosophy
- Added scope creep (dataset management vs data loading)

Module 08 now focuses purely on:
 Dataset abstraction (interface design)
 TensorDataset implementation (in-memory wrapper)
 DataLoader mechanics (batching, shuffling, iteration)

Real datasets handled in examples/milestones:
- datasets/tiny/digits_8x8.npz ships with repo (instant)
- Milestone 03: MNIST download + training
- Milestone 04: CIFAR-10 download + CNN training

Separation of concerns:
- Module 08: Learn DataLoader abstraction (synthetic test data)
- Examples: Apply DataLoader to real data (actual datasets)

This follows PyTorch's pattern:
- torch.utils.data.DataLoader (abstraction)
- torchvision.datasets (actual data)

Tests still pass 100% with simplified synthetic data.
2025-09-30 15:10:08 -04:00