- Add module.yaml files for setup, tensor, activations, layers, and autograd modules - Enhanced tito status command with --metadata flag for rich information display - Created metadata schema with learning objectives, dependencies, components, and more - Added metadata generation script (bin/generate_module_metadata.py) - Comprehensive documentation in docs/development/module-metadata-system.md - Status command now shows module status, difficulty, time estimates, and detailed metadata - Supports dependency tracking, component-level status, and educational information - Enables rich CLI experience with structured module information
8.8 KiB
Module Metadata System
TinyTorch uses a comprehensive metadata system to track module information, learning objectives, dependencies, and implementation status. Each module contains a module.yaml file that provides structured information for CLI tools, documentation generation, and progress tracking.
Overview
The metadata system enables:
- Rich status reporting with
tito status --metadata - Dependency tracking and prerequisite checking
- Learning objective documentation for educational purposes
- Progress tracking for students and instructors
- Automated documentation generation
- Component-level status tracking
Metadata Schema
Each module.yaml file follows this comprehensive schema:
Basic Information
name: "module_name"
title: "Module Title - Brief Description"
description: "Detailed description of what the module teaches and implements"
version: "1.0.0"
author: "TinyTorch Team"
last_updated: "2024-12-19"
Module Status
status: "complete" # complete, in_progress, not_started, deprecated
implementation_status: "stable" # stable, beta, alpha, experimental, planned
Status Values:
complete: Module is fully implemented and testedin_progress: Module is being actively developednot_started: Module is planned but not yet implementeddeprecated: Module is no longer maintained
Implementation Status:
stable: Production-ready, well-testedbeta: Feature-complete but may have minor issuesalpha: Basic functionality working but incompleteexperimental: Early development, may change significantlyplanned: Not yet implemented
Learning Information
learning_objectives:
- "Understand core concepts and their importance"
- "Implement key algorithms and data structures"
- "Apply knowledge to real-world problems"
key_concepts:
- "Concept 1"
- "Concept 2"
- "Concept 3"
Dependencies
dependencies:
prerequisites: ["setup", "tensor"] # Must complete before this module
builds_on: ["tensor"] # Direct dependencies
enables: ["layers", "networks"] # Modules that depend on this one
Educational Metadata
difficulty: "intermediate" # beginner, intermediate, advanced
estimated_time: "4-6 hours"
pedagogical_pattern: "Build → Use → Understand"
Pedagogical Patterns:
Build → Use → Understand: Standard TinyTorch patternBuild → Use → Reflect: Emphasizes design trade-offsBuild → Use → Analyze: Technical depth with profilingBuild → Use → Optimize: Systems iteration focus
Implementation Details
components:
- name: "ComponentName"
type: "class" # class, function, methods, system
description: "What this component does"
status: "complete" # complete, in_progress, not_started
Package Export Information
exports_to: "tinytorch.core.module_name"
export_directive: "core.module_name"
Testing Information
test_coverage: "comprehensive" # comprehensive, partial, minimal, none, planned
test_count: 25
test_categories:
- "Basic functionality"
- "Edge cases"
- "Error handling"
File Structure
required_files:
- "module_dev.py"
- "module_dev.ipynb"
- "tests/test_module.py"
- "README.md"
Systems Focus
systems_concepts:
- "Memory management"
- "Performance optimization"
- "Error handling"
Real-world Applications
applications:
- "Neural network training"
- "Computer vision"
- "Natural language processing"
Next Steps
next_modules: ["next_module1", "next_module2"]
completion_criteria:
- "All tests pass"
- "Can implement basic functionality"
- "Understand core concepts"
CLI Integration
The metadata system integrates with the TinyTorch CLI:
Basic Status Check
tito status
Shows module completion status with basic file structure information.
Enhanced Status with Metadata
tito status --metadata
Shows comprehensive table with:
- Module status (complete/in_progress/not_started)
- Difficulty level
- Time estimates
- File structure status
Detailed Metadata View
tito status --metadata
Also includes detailed metadata section showing:
- Learning objectives
- Dependencies
- Component status
- Key concepts
- Next steps
Creating Module Metadata
1. Create the metadata file
touch modules/your_module/module.yaml
2. Use the template
Copy from an existing module or use the schema above.
3. Customize for your module
- Set appropriate status and difficulty
- List learning objectives
- Define dependencies
- Document components
- Set time estimates
4. Test the metadata
tito status --metadata
Example: Complete Module Metadata
# modules/tensor/module.yaml
name: "tensor"
title: "Tensor - Core Data Structure"
description: "Implement the fundamental data structure that powers all ML systems"
version: "1.0.0"
author: "TinyTorch Team"
last_updated: "2024-12-19"
status: "complete"
implementation_status: "stable"
learning_objectives:
- "Understand tensors as N-dimensional arrays"
- "Implement arithmetic operations"
- "Handle shape management and broadcasting"
key_concepts:
- "N-dimensional arrays"
- "Broadcasting"
- "Memory layout"
dependencies:
prerequisites: ["setup"]
builds_on: ["setup"]
enables: ["activations", "layers", "networks"]
difficulty: "intermediate"
estimated_time: "4-6 hours"
pedagogical_pattern: "Build → Use → Understand"
components:
- name: "Tensor"
type: "class"
description: "Core tensor class"
status: "complete"
exports_to: "tinytorch.core.tensor"
export_directive: "core.tensor"
test_coverage: "comprehensive"
test_count: 25
required_files:
- "tensor_dev.py"
- "tensor_dev.ipynb"
- "tests/test_tensor.py"
- "README.md"
next_modules: ["activations", "layers"]
completion_criteria:
- "All tests pass"
- "Can perform tensor operations"
- "Ready for neural networks"
Benefits
For Students
- Clear learning paths with prerequisite tracking
- Time estimation for planning study sessions
- Progress tracking with component-level status
- Learning objectives for focused study
For Instructors
- Course planning with dependency graphs
- Progress monitoring across all modules
- Curriculum organization with difficulty levels
- Assessment planning with completion criteria
For Developers
- System overview with component status
- Dependency management for development planning
- Testing coverage tracking
- Documentation generation from metadata
Best Practices
1. Keep Metadata Current
- Update status when implementation changes
- Refresh time estimates based on student feedback
- Add new components as they're implemented
2. Clear Learning Objectives
- Write specific, measurable objectives
- Focus on understanding, not just implementation
- Connect to real-world applications
3. Accurate Dependencies
- List only direct prerequisites
- Distinguish between prerequisites and enables
- Keep dependency graphs acyclic
4. Realistic Time Estimates
- Base on actual student completion times
- Include time for understanding, not just coding
- Account for debugging and testing
5. Component Granularity
- Break large modules into logical components
- Track status at meaningful granularity
- Use descriptive component names
Integration with Other Systems
Documentation Generation
Metadata can be used to automatically generate:
- Module overview pages
- Dependency graphs
- Learning path documentation
- Progress tracking dashboards
Testing Integration
Metadata supports:
- Test coverage tracking
- Component-level test organization
- Automated test discovery
- Progress-based test selection
CLI Enhancement
The metadata system enables:
- Rich status reporting
- Dependency checking
- Progress visualization
- Learning path recommendations
Future Enhancements
Planned Features
- Dependency visualization with graph generation
- Learning path optimization based on prerequisites
- Progress dashboards for course management
- Automated testing based on component status
- Documentation generation from metadata
- Integration with git for automatic updates
Extensibility
The YAML format allows for:
- Custom fields for specific use cases
- Institution-specific metadata
- Research project tracking
- Performance benchmarking data
Conclusion
The module metadata system provides a foundation for rich educational experiences in TinyTorch. By maintaining comprehensive metadata, we enable better learning outcomes, clearer progress tracking, and more effective course management.
The system balances simplicity with power, providing essential information while remaining easy to maintain and extend.