Commit Graph

26 Commits

Author SHA1 Message Date
Vijay Janapa Reddi
521aee0af3 Disable auto-protection to prevent permission errors during export
The auto-protection feature was setting core tinytorch files to read-only
after each export, which caused permission errors on subsequent exports.
Students who want file protection can run 'tito protect --enable' manually.
2025-11-22 15:27:33 -05:00
Vijay Janapa Reddi
37e254f8d7 Checkpoint: Paper revisions before Figure 1 restructuring
- Table 2 revised with balanced ML/Systems concepts
- Student feedback addressed (abstract, intro examples)
- Repetitions removed, progressive flow improved
- ~1,000 words cut from redundant content

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-19 21:52:23 -05:00
Vijay Janapa Reddi
96880b3133 Update tinytorch and tito with module exports
Re-exported all modules after restructuring:
- Updated _modidx.py with new module locations
- Removed outdated autogeneration headers
- Updated all core modules (tensor, autograd, layers, etc.)
- Updated optimization modules (quantization, compression, etc.)
- Updated TITO commands for new structure

Changes include:
- 24 tinytorch/ module files
- 24 tito/ command and core files
- Updated references from modules/source/ to modules/

All modules re-exported via nbdev from their new locations.
2025-11-10 19:42:03 -05:00
Vijay Janapa Reddi
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
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
Zappandy
fbea50d9da Feat(env) dynamic virtual env support for advanced users 2025-10-11 12:31:11 +02:00
Vijay Janapa Reddi
8be87d0add Fix nbdev export system across all 20 modules
PROBLEM:
- nbdev requires #| export directive on EACH cell to export when using # %% markers
- Cell markers inside class definitions split classes across multiple cells
- Only partial classes were being exported to tinytorch package
- Missing matmul, arithmetic operations, and activation classes in exports

SOLUTION:
1. Removed # %% cell markers INSIDE class definitions (kept classes as single units)
2. Added #| export to imports cell at top of each module
3. Added #| export before each exportable class definition in all 20 modules
4. Added __call__ method to Sigmoid for functional usage
5. Fixed numpy import (moved to module level from __init__)

MODULES FIXED:
- 01_tensor: Tensor class with all operations (matmul, arithmetic, shape ops)
- 02_activations: Sigmoid, ReLU, Tanh, GELU, Softmax classes
- 03_layers: Linear, Dropout classes
- 04_losses: MSELoss, CrossEntropyLoss, BinaryCrossEntropyLoss classes
- 05_autograd: Function, AddBackward, MulBackward, MatmulBackward, SumBackward
- 06_optimizers: Optimizer, SGD, Adam, AdamW classes
- 07_training: CosineSchedule, Trainer classes
- 08_dataloader: Dataset, TensorDataset, DataLoader classes
- 09_spatial: Conv2d, MaxPool2d, AvgPool2d, SimpleCNN classes
- 10-20: All exportable classes in remaining modules

TESTING:
- Test functions use 'if __name__ == "__main__"' guards
- Tests run in notebooks but NOT on import
- Rosenblatt Perceptron milestone working perfectly

RESULT:
 All 20 modules export correctly
 Perceptron (1957) milestone functional
 Clean separation: development (modules/source) vs package (tinytorch)
2025-09-30 11:21:04 -04:00
Vijay Janapa Reddi
d02f9258c5 Improve export workflow: Python-first with detailed logging
- Always regenerate notebooks from Python files (Python is source of truth)
- Add comprehensive logging for conversion and export steps
- Fix venv jupytext architecture issues with proper ARM64 packages
- Implement robust fallback from venv to system jupytext
- Show detailed progress: .py → .ipynb → tinytorch pipeline
- Remove timestamp checking - always ensure fresh notebooks

Workflow now: Work in Python → Export regenerates notebook → Export to package
Fixes stale notebook issues and provides clear visibility into export process.
2025-09-30 10:24:07 -04:00
Vijay Janapa Reddi
7d9b762d40 Fix tito export workflow for selective module export
- Fix jupytext conversion issues by using existing .ipynb files when available
- Add support for multiple modules in single export command
- Clean up interface to hide nbdev implementation details
- Update argument parsing from single 'module' to multiple 'modules'
- Add proper error handling and user-friendly messages
- Enable workflows like: tito export 01_tensor 02_activations

Resolves export command failures and provides clean reset/export workflow:
- tito package reset --force (clean slate)
- tito export 01_tensor 02_activations (selective export)
- tito export --all (export everything)
2025-09-30 10:10:50 -04:00
Vijay Janapa Reddi
e1a9541c4b Clean up module imports: convert tinytorch.core to sys.path style
- Remove circular imports where modules imported from themselves
- Convert tinytorch.core imports to sys.path relative imports
- Only import dependencies that are actually used in each module
- Preserve documentation imports in markdown cells
- Use consistent relative path pattern across all modules
- Remove hardcoded absolute paths in favor of relative imports

Affected modules: 02_activations, 03_layers, 04_losses, 06_optimizers,
07_training, 09_spatial, 12_attention, 17_quantization
2025-09-30 08:58:58 -04:00
Vijay Janapa Reddi
c7dbf68dcf Fix training pipeline: Parameter class, Variable.sum(), gradient handling
Major fixes for complete training pipeline functionality:

Core Components Fixed:
- Parameter class: Now wraps Variables with requires_grad=True for proper gradient tracking
- Variable.sum(): Essential for scalar loss computation from multi-element tensors
- Gradient handling: Fixed memoryview issues in autograd and activations
- Tensor indexing: Added __getitem__ support for weight inspection

Training Results:
- XOR learning: 100% accuracy (4/4) - network successfully learns XOR function
- Linear regression: Weight=1.991 (target=2.0), Bias=0.980 (target=1.0)
- Integration tests: 21/22 passing (95.5% success rate)
- Module tests: All individual modules passing
- General functionality: 4/5 tests passing with core training working

Technical Details:
- Fixed gradient data access patterns throughout activations.py
- Added safe memoryview handling in Variable.backward()
- Implemented proper Parameter-Variable delegation
- Added Tensor subscripting for debugging access(https://claude.ai/code)
2025-09-28 19:14:11 -04:00
Vijay Janapa Reddi
753ae52ae0 MAJOR: Implement beautiful module progression through strategic reordering
This commit implements the pedagogically optimal "inevitable discovery" module progression based on expert validation and educational design principles.

## Module Reordering Summary

**Previous Order (Problems)**:
- 05_losses → 06_autograd → 07_dataloader → 08_optimizers → 09_spatial → 10_training
- Issues: Autograd before optimizers, DataLoader before training, scattered dependencies

**New Order (Beautiful Progression)**:
- 05_losses → 06_optimizers → 07_autograd → 08_training → 09_spatial → 10_dataloader
- Benefits: Each module creates inevitable need for the next

## Pedagogical Flow Achieved

**05_losses** → "Need systematic weight updates" → **06_optimizers**
**06_optimizers** → "Need automatic gradients" → **07_autograd**
**07_autograd** → "Need systematic training" → **08_training**
**08_training** → "MLPs hit limits on images" → **09_spatial**
**09_spatial** → "Training is too slow" → **10_dataloader**

## Technical Changes

### Module Directory Renaming
- `06_autograd` → `07_autograd`
- `07_dataloader` → `10_dataloader`
- `08_optimizers` → `06_optimizers`
- `10_training` → `08_training`
- `09_spatial` → `09_spatial` (no change)

### System Integration Updates
- **MODULE_TO_CHECKPOINT mapping**: Updated in tito/commands/export.py
- **Test directories**: Renamed module_XX directories to match new numbers
- **Documentation**: Updated all references in MD files and agent configurations
- **CLI integration**: Updated next-steps suggestions for proper flow

### Agent Configuration Updates
- **Quality Assurance**: Updated module audit status with new numbers
- **Module Developer**: Updated work tracking with new sequence
- **Documentation**: Updated MASTER_PLAN_OF_RECORD.md with beautiful progression

## Educational Benefits

1. **Inevitable Discovery**: Each module naturally leads to the next
2. **Cognitive Load**: Concepts introduced exactly when needed
3. **Motivation**: Students understand WHY each tool is necessary
4. **Synthesis**: Everything flows toward complete ML systems understanding
5. **Professional Alignment**: Matches real ML engineering workflows

## Quality Assurance

-  All CLI commands still function
-  Checkpoint system mappings updated
-  Documentation consistency maintained
-  Test directory structure aligned
-  Agent configurations synchronized

**Impact**: This reordering transforms TinyTorch from a collection of modules into a coherent educational journey where each step naturally motivates the next, creating optimal conditions for deep learning systems understanding.
2025-09-24 15:56:47 -04:00
Vijay Janapa Reddi
7e6eccae4a feat: Implement comprehensive student protection system for TinyTorch
🛡️ **CRITICAL FIXES & PROTECTION SYSTEM**

**Core Variable/Tensor Compatibility Fixes:**
- Fix bias shape corruption in Adam optimizer (CIFAR-10 blocker)
- Add Variable/Tensor compatibility to matmul, ReLU, Softmax, MSE Loss
- Enable proper autograd support with gradient functions
- Resolve broadcasting errors with variable batch sizes

**Student Protection System:**
- Industry-standard file protection (read-only core files)
- Enhanced auto-generated warnings with prominent ASCII-art headers
- Git integration (pre-commit hooks, .gitattributes)
- VSCode editor protection and warnings
- Runtime validation system with import hooks
- Automatic protection during module exports

**CLI Integration:**
- New `tito system protect` command group
- Protection status, validation, and health checks
- Automatic protection enabled during `tito module complete`
- Non-blocking validation with helpful error messages

**Development Workflow:**
- Updated CLAUDE.md with protection guidelines
- Comprehensive validation scripts and health checks
- Clean separation of source vs compiled file editing
- Professional development practices enforcement

**Impact:**
 CIFAR-10 training now works reliably with variable batch sizes
 Students protected from accidentally breaking core functionality
 Professional development workflow with industry-standard practices
 Comprehensive testing and validation infrastructure

This enables reliable ML systems training while protecting students
from common mistakes that break the Variable/Tensor compatibility.
2025-09-21 12:22:18 -04:00
Vijay Janapa Reddi
a89211fb3a Complete auto-generated warning system and establish core file protection
BREAKTHROUGH IMPLEMENTATION:
 Auto-generated warnings now added to ALL exported files automatically
 Clear source file paths shown in every tinytorch/ file header
 CLAUDE.md updated with crystal clear rules: tinytorch/ = edit modules/
 Export process now runs warnings BEFORE success message

SYSTEMATIC PREVENTION:
- Every exported file shows: AUTOGENERATED! DO NOT EDIT! File to edit: [source]
- THIS FILE IS AUTO-GENERATED FROM SOURCE MODULES - CHANGES WILL BE LOST!
- To modify this code, edit the source file listed above and run: tito module complete

WORKFLOW ENFORCEMENT:
- Golden rule established: If file path contains tinytorch/, DON'T EDIT IT DIRECTLY
- Automatic detection of 16 module mappings from tinytorch/ back to modules/source/
- Post-export processing ensures no exported file lacks protection warning

VALIDATION:
 Tested with multiple module exports - warnings added correctly
 All tinytorch/core/ files now protected with clear instructions
 Source file paths correctly mapped and displayed

This prevents ALL future source/compiled mismatch issues systematically.
2025-09-21 11:43:35 -04:00
Vijay Janapa Reddi
eea6b21f3e Implement auto-generated warnings in module export system
FEATURE ADDITION:
- Add automatic warnings to all exported core files
- Clear source file path shown in warning header
- Prevents accidental direct editing of generated files

TECHNICAL IMPLEMENTATION:
- _add_autogenerated_warnings() post-processes exported files
- _find_source_file_for_export() maps exports to source files
- Comprehensive mapping for all 16 modules
- Warning format: "# AUTOGENERATED! DO NOT EDIT! File to edit: [source]"

WORKFLOW COMPLIANCE:
- Addresses user request for systematic prevention of core file editing
- Enforces proper development workflow: Edit source → Export → Use
- Prevents source/compiled mismatch issues
- Educational: Shows developers exactly where to make changes

VALIDATION:
- Tested with tito module export 02_tensor
- Successfully added warnings to 3 files
- Preserves existing export functionality
- Maintains compatibility with existing systems
2025-09-21 11:39:50 -04:00
Vijay Janapa Reddi
a17218592b Enhance tito export system with virtual environment support and validation
Improvements:
- Use project virtual environment jupytext for consistent conversion
- Add comprehensive notebook integrity validation with cell counting
- Provide detailed export progress tracking and error reporting
- Include JSON structure validation for generated notebooks

These enhancements ensure reliable .py → .ipynb conversion workflow
and catch conversion issues early in the development process.
2025-09-18 16:42:05 -04:00
Vijay Janapa Reddi
d04d66a716 Implement interactive ML Systems questions and standardize module structure
Major Educational Framework Enhancements:
• Deploy interactive NBGrader text response questions across ALL modules
• Replace passive question lists with active 150-300 word student responses
• Enable comprehensive ML Systems learning assessment and grading

TinyGPT Integration (Module 16):
• Complete TinyGPT implementation showing 70% component reuse from TinyTorch
• Demonstrates vision-to-language framework generalization principles
• Full transformer architecture with attention, tokenization, and generation
• Shakespeare demo showing autoregressive text generation capabilities

Module Structure Standardization:
• Fix section ordering across all modules: Tests → Questions → Summary
• Ensure Module Summary is always the final section for consistency
• Standardize comprehensive testing patterns before educational content

Interactive Question Implementation:
• 3 focused questions per module replacing 10-15 passive questions
• NBGrader integration with manual grading workflow for text responses
• Questions target ML Systems thinking: scaling, deployment, optimization
• Cumulative knowledge building across the 16-module progression

Technical Infrastructure:
• TPM agent for coordinated multi-agent development workflows
• Enhanced documentation with pedagogical design principles
• Updated book structure to include TinyGPT as capstone demonstration
• Comprehensive QA validation of all module structures

Framework Design Insights:
• Mathematical unity: Dense layers power both vision and language models
• Attention as key innovation for sequential relationship modeling
• Production-ready patterns: training loops, optimization, evaluation
• System-level thinking: memory, performance, scaling considerations

Educational Impact:
• Transform passive learning to active engagement through written responses
• Enable instructors to assess deep ML Systems understanding
• Provide clear progression from foundations to complete language models
• Demonstrate real-world framework design principles and trade-offs
2025-09-17 14:42:24 -04:00
Vijay Janapa Reddi
99af6bd094 Add automatic post-module integration testing workflow
Features:
- New `tito module complete <module>` command for full workflow
- Enhanced `tito export --test-checkpoint` for optional testing
- Automatic checkpoint tests after successful module exports
- Module-to-checkpoint mapping for 16 checkpoints
- Progress celebration and next step guidance
- Clear error handling and recovery guidance

Workflow:
- Student completes module → runs tito module complete
- System exports module → runs integration test → shows progress
- Immediate feedback on capability advancement
- Smart suggestions for next learning steps

Integration:
- Maps each module to corresponding checkpoint capability
- Provides Rich CLI celebration when checkpoints achieved
- Seamless integration with existing checkpoint system
- Maintains backward compatibility with existing commands
2025-09-16 21:15:03 -04:00
Vijay Janapa Reddi
87dcf5083a fix: Python 3.8 compatibility for CLI
- Replace str | None with Optional[str] in export.py
- Replace list[str] with List[str] in config.py
- Add missing typing imports for compatibility
- Ensures CLI works on Python 3.8 systems
2025-07-18 00:40:04 -04:00
Vijay Janapa Reddi
9247784cb7 feat: Enhanced tensor and activations modules with comprehensive educational content
- Added package structure documentation explaining modules/source/ vs tinytorch.core.
- Enhanced mathematical foundations with linear algebra refresher and Universal Approximation Theorem
- Added real-world applications for each activation function (ReLU, Sigmoid, Tanh, Softmax)
- Included mathematical properties, derivatives, ranges, and computational costs
- Added performance considerations and numerical stability explanations
- Connected to production ML systems (PyTorch, TensorFlow, JAX equivalents)
- Implemented streamlined 'tito export' command with automatic .py → .ipynb conversion
- All functionality preserved: scripts run correctly, tests pass, package integration works
- Ready to continue with remaining modules (layers, networks, cnn, dataloader)
2025-07-12 17:51:00 -04:00
Vijay Janapa Reddi
f1d47330b3 Simplify export workflow: remove module_paths.txt, use dynamic discovery
- Remove unnecessary module_paths.txt file for cleaner architecture
- Update export command to discover modules dynamically from modules/source/
- Simplify nbdev command to support --all and module-specific exports
- Use single source of truth: nbdev settings.ini for module paths
- Clean up import structure in setup module for proper nbdev export
- Maintain clean separation between module discovery and export logic

This implements a proper software engineering approach with:
- Single source of truth (settings.ini)
- Dynamic discovery (no hardcoded paths)
- Clean CLI interface (tito package nbdev --export [--all|module])
- Robust error handling with helpful feedback
2025-07-12 17:19:22 -04:00
Vijay Janapa Reddi
83fb269d9f Complete migration from modules/ to assignments/source/ structure
- Migrated all Python source files to assignments/source/ structure
- Updated nbdev configuration to use assignments/source as nbs_path
- Updated all tito commands (nbgrader, export, test) to use new structure
- Fixed hardcoded paths in Python files and documentation
- Updated config.py to use assignments/source instead of modules
- Fixed test command to use correct file naming (short names vs full module names)
- Regenerated all notebook files with clean metadata
- Verified complete workflow: Python source → NBGrader → nbdev export → testing

All systems now working: NBGrader (14 source assignments, 1 released), nbdev export (7 generated files), and pytest integration.

The modules/ directory has been retired and replaced with standard NBGrader structure.
2025-07-12 12:06:56 -04:00
Vijay Janapa Reddi
25e1e77492 Improve CLI: remove redundant --module flags
- Update test, export, and clean commands to use positional arguments
- Change from 'tito module test --module dataloader' to 'tito module test dataloader'
- Eliminates redundant --module flag within module command group
- Update help text and examples to reflect new syntax
- Maintains backward compatibility with --all flag
- More intuitive and consistent CLI design
2025-07-12 00:56:00 -04:00
Vijay Janapa Reddi
3454ea5fbe refactor: standardize module export command with --all flag
- Move export functionality from 'tito package export' to 'tito module export'
- Require --all flag for exporting all modules (consistent with test command)
- Remove export from package command group to eliminate duplication
- Update help text and examples across all commands
- Fix tensor module arithmetic operators for complete functionality
- Clean up duplicate _quarto.yml and sidebar.yml files in modules/

This creates a consistent CLI pattern:
- tito module export --all (export all modules)
- tito module export --module <name> (export specific module)
- tito module test --all (test all modules)
- tito module test --module <name> (test specific module)
2025-07-12 00:36:59 -04:00
Vijay Janapa Reddi
ca8ec10427 Simplify module.yaml and enhance export command with real export targets
- Remove redundant fields from module.yaml files: exports_to, files, components
- Keep only essential system metadata: name, title, description, dependencies
- Export command now reads actual export targets from dev files (#| default_exp directive)
- Status command updated to use dev files as source of truth for export targets
- Export command shows detailed source → target mapping for better clarity
- Dependencies field retained as it's useful for CLI module ordering and prerequisites
- Eliminates duplication between YAML and dev files - dev files are the real truth
2025-07-12 00:05:45 -04:00
Vijay Janapa Reddi
2a4bbc6a09 Rename sync command to export for clarity
- Rename SyncCommand to ExportCommand and sync.py to export.py
- Update all CLI references from 'tito package sync' to 'tito package export'
- Update help text and internal messages to use 'Export' terminology
- Update imports across all command files
- Update help text in main CLI, reset, clean, info, and notebooks commands
- Command now clearly communicates that it exports notebook code to Python package
- Maintains same functionality but with clearer naming for user experience
2025-07-11 23:59:25 -04:00