Files
TinyTorch/site/usage-paths/ta-guide.md
Vijay Janapa Reddi 6a322627dc Add community and benchmark features with baseline validation
- Implement tito benchmark baseline and capstone commands
- Add SPEC-style normalization for baseline benchmarks
- Implement tito community join, update, leave, stats, profile commands
- Use project-local storage (.tinytorch/) for user data
- Add privacy-by-design with explicit consent prompts
- Update site documentation for community and benchmark features
- Add Marimo integration for online notebooks
- Clean up redundant milestone setup exploration docs
- Finalize baseline design: fast setup validation (~1 second) with normalized results
2025-11-20 00:17:21 -05:00

265 lines
7.2 KiB
Markdown

# Teaching Assistant Guide for TinyTorch
Complete guide for TAs supporting TinyTorch courses, covering common student errors, debugging strategies, and effective support techniques.
## 🎯 TA Preparation
### Critical Modules for Deep Familiarity
TAs should develop deep familiarity with modules where students commonly struggle:
1. **Module 05: Autograd** - Most conceptually challenging
2. **Module 09: CNNs (Spatial)** - Complex nested loops and memory patterns
3. **Module 13: Transformers** - Attention mechanisms and scaling
### Preparation Process
1. **Complete modules yourself** - Implement all three critical modules
2. **Introduce bugs intentionally** - Understand common error patterns
3. **Practice debugging** - Work through error scenarios
4. **Review student submissions** - Familiarize yourself with common mistakes
## 🐛 Common Student Errors
### Module 05: Autograd
#### Error 1: Gradient Shape Mismatches
**Symptom**: `ValueError: shapes don't match for gradient`
**Common Cause**: Incorrect gradient accumulation or shape handling
**Debugging Strategy**:
- Check gradient shapes match parameter shapes
- Verify gradient accumulation logic
- Look for broadcasting issues
**Example**:
```python
# Wrong: Gradient shape mismatch
param.grad = grad # grad might be wrong shape
# Right: Ensure shapes match
assert grad.shape == param.shape
param.grad = grad
```
#### Error 2: Disconnected Computational Graph
**Symptom**: Gradients are None or zero
**Common Cause**: Operations not tracked in computational graph
**Debugging Strategy**:
- Verify `requires_grad=True` on input tensors
- Check that operations create new Tensor objects
- Ensure backward() is called on leaf nodes
**Example**:
```python
# Wrong: Graph disconnected
x = Tensor([1, 2, 3]) # requires_grad=False by default
y = x * 2
y.backward() # No gradients!
# Right: Enable gradient tracking
x = Tensor([1, 2, 3], requires_grad=True)
y = x * 2
y.backward() # Gradients flow correctly
```
#### Error 3: Broadcasting Failures
**Symptom**: Shape errors during backward pass
**Common Cause**: Incorrect handling of broadcasted operations
**Debugging Strategy**:
- Understand NumPy broadcasting rules
- Check gradient accumulation for broadcasted dimensions
- Verify gradient shapes match original tensor shapes
### Module 09: CNNs (Spatial)
#### Error 1: Index Out of Bounds
**Symptom**: `IndexError` in convolution loops
**Common Cause**: Incorrect padding or stride calculations
**Debugging Strategy**:
- Verify output shape calculations
- Check padding logic
- Test with small examples first
#### Error 2: Memory Issues
**Symptom**: Out of memory errors
**Common Cause**: Creating unnecessary intermediate arrays
**Debugging Strategy**:
- Profile memory usage
- Look for unnecessary copies
- Optimize loop structure
### Module 13: Transformers
#### Error 1: Attention Scaling Issues
**Symptom**: Attention weights don't sum to 1
**Common Cause**: Missing softmax or incorrect scaling
**Debugging Strategy**:
- Verify softmax is applied
- Check scaling factor (1/sqrt(d_k))
- Test attention weights sum to 1
#### Error 2: Positional Encoding Errors
**Symptom**: Model doesn't learn positional information
**Common Cause**: Incorrect positional encoding implementation
**Debugging Strategy**:
- Verify sinusoidal patterns
- Check encoding is added correctly
- Test with simple sequences
## 🔧 Debugging Strategies
### Structured Debugging Questions
When students ask for help, guide them with questions rather than giving answers:
1. **What error message are you seeing?**
- Read the full traceback
- Identify the specific line causing the error
2. **What did you expect to happen?**
- Clarify their mental model
- Identify misconceptions
3. **What actually happened?**
- Compare expected vs actual
- Look for patterns
4. **What have you tried?**
- Avoid repeating failed approaches
- Build on their attempts
5. **Can you test with a simpler case?**
- Reduce complexity
- Isolate the problem
### Productive vs Unproductive Struggle
**Productive Struggle** (encourage):
- Trying different approaches
- Making incremental progress
- Understanding error messages
- Passing additional tests over time
**Unproductive Frustration** (intervene):
- Repeated identical errors
- Random code changes
- Unable to articulate the problem
- No progress after 30+ minutes
### When to Provide Scaffolding
Offer scaffolding modules when students reach unproductive frustration:
- **Before Autograd**: Numerical gradient checking module
- **Before Tensor Autograd**: Scalar autograd module
- **Before CNNs**: Simple 1D convolution exercises
## 📊 Office Hour Patterns
### Expected Demand Spikes
**Module 05 (Autograd)**: Highest demand
- Schedule additional TA capacity
- Pre-record debugging walkthroughs
- Create FAQ document
**Module 09 (CNNs)**: High demand
- Focus on memory profiling
- Loop optimization strategies
- Padding/stride calculations
**Module 13 (Transformers)**: Moderate-high demand
- Attention mechanism debugging
- Positional encoding issues
- Scaling problems
### Support Channels
1. **Synchronous**: Office hours, lab sessions
2. **Asynchronous**: Discussion forums, email
3. **Self-service**: Common errors documentation, FAQ
## 🎓 Grading Support
### Manual Review Focus Areas
While NBGrader automates 70-80% of assessment, focus manual review on:
1. **Code Clarity and Design Choices**
- Is code readable?
- Are design decisions justified?
- Is the implementation clean?
2. **Edge Case Handling**
- Does code handle edge cases?
- Are there appropriate checks?
- Is error handling present?
3. **Computational Complexity Analysis**
- Do students understand complexity?
- Can they analyze their code?
- Do they recognize bottlenecks?
4. **Memory Profiling Insights**
- Do students understand memory usage?
- Can they identify memory issues?
- Do they optimize appropriately?
### Grading Rubrics
See `INSTRUCTOR.md` for detailed grading rubrics for:
- ML Systems Thinking questions
- Code quality assessment
- Systems analysis evaluation
## 💡 Teaching Tips
### 1. Encourage Exploration
- Let students try different approaches
- Support learning from mistakes
- Celebrate incremental progress
### 2. Connect to Production
- Reference PyTorch equivalents
- Discuss real-world debugging scenarios
- Share production war stories
### 3. Make Systems Visible
- Profile memory usage together
- Analyze computational complexity
- Visualize computational graphs
### 4. Build Confidence
- Acknowledge when students are on the right track
- Validate their understanding
- Provide encouragement during struggle
## 📚 Resources
- **INSTRUCTOR.md**: Complete instructor guide with grading rubrics
- **Common Errors**: This document (expanded as needed)
- **Module Documentation**: Each module's ABOUT.md file
- **Student Forums**: Community discussion areas
## 🔄 Continuous Improvement
### Feedback Collection
- Track common errors in office hours
- Document new error patterns
- Update this guide regularly
- Share insights with instructor team
### TA Training
- Regular TA meetings
- Share debugging strategies
- Review student submissions together
- Practice debugging sessions
---
**Last Updated**: November 2024
**For Questions**: See INSTRUCTOR.md or contact course instructor