mirror of
https://github.com/MLSysBook/TinyTorch.git
synced 2026-05-05 23:54:04 -05:00
- 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
343 lines
8.8 KiB
Markdown
343 lines
8.8 KiB
Markdown
# 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
|
|
```yaml
|
|
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
|
|
```yaml
|
|
status: "complete" # complete, in_progress, not_started, deprecated
|
|
implementation_status: "stable" # stable, beta, alpha, experimental, planned
|
|
```
|
|
|
|
**Status Values:**
|
|
- `complete`: Module is fully implemented and tested
|
|
- `in_progress`: Module is being actively developed
|
|
- `not_started`: Module is planned but not yet implemented
|
|
- `deprecated`: Module is no longer maintained
|
|
|
|
**Implementation Status:**
|
|
- `stable`: Production-ready, well-tested
|
|
- `beta`: Feature-complete but may have minor issues
|
|
- `alpha`: Basic functionality working but incomplete
|
|
- `experimental`: Early development, may change significantly
|
|
- `planned`: Not yet implemented
|
|
|
|
### Learning Information
|
|
```yaml
|
|
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
|
|
```yaml
|
|
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
|
|
```yaml
|
|
difficulty: "intermediate" # beginner, intermediate, advanced
|
|
estimated_time: "4-6 hours"
|
|
pedagogical_pattern: "Build → Use → Understand"
|
|
```
|
|
|
|
**Pedagogical Patterns:**
|
|
- `Build → Use → Understand`: Standard TinyTorch pattern
|
|
- `Build → Use → Reflect`: Emphasizes design trade-offs
|
|
- `Build → Use → Analyze`: Technical depth with profiling
|
|
- `Build → Use → Optimize`: Systems iteration focus
|
|
|
|
### Implementation Details
|
|
```yaml
|
|
components:
|
|
- name: "ComponentName"
|
|
type: "class" # class, function, methods, system
|
|
description: "What this component does"
|
|
status: "complete" # complete, in_progress, not_started
|
|
```
|
|
|
|
### Package Export Information
|
|
```yaml
|
|
exports_to: "tinytorch.core.module_name"
|
|
export_directive: "core.module_name"
|
|
```
|
|
|
|
### Testing Information
|
|
```yaml
|
|
test_coverage: "comprehensive" # comprehensive, partial, minimal, none, planned
|
|
test_count: 25
|
|
test_categories:
|
|
- "Basic functionality"
|
|
- "Edge cases"
|
|
- "Error handling"
|
|
```
|
|
|
|
### File Structure
|
|
```yaml
|
|
required_files:
|
|
- "module_dev.py"
|
|
- "module_dev.ipynb"
|
|
- "tests/test_module.py"
|
|
- "README.md"
|
|
```
|
|
|
|
### Systems Focus
|
|
```yaml
|
|
systems_concepts:
|
|
- "Memory management"
|
|
- "Performance optimization"
|
|
- "Error handling"
|
|
```
|
|
|
|
### Real-world Applications
|
|
```yaml
|
|
applications:
|
|
- "Neural network training"
|
|
- "Computer vision"
|
|
- "Natural language processing"
|
|
```
|
|
|
|
### Next Steps
|
|
```yaml
|
|
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
|
|
```bash
|
|
tito status
|
|
```
|
|
Shows module completion status with basic file structure information.
|
|
|
|
### Enhanced Status with Metadata
|
|
```bash
|
|
tito status --metadata
|
|
```
|
|
Shows comprehensive table with:
|
|
- Module status (complete/in_progress/not_started)
|
|
- Difficulty level
|
|
- Time estimates
|
|
- File structure status
|
|
|
|
### Detailed Metadata View
|
|
```bash
|
|
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
|
|
```bash
|
|
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
|
|
```bash
|
|
tito status --metadata
|
|
```
|
|
|
|
## Example: Complete Module Metadata
|
|
|
|
```yaml
|
|
# 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. |