mirror of
https://github.com/MLSysBook/TinyTorch.git
synced 2026-07-17 17:32:28 -05:00
- 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
265 lines
7.2 KiB
Markdown
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
|
|
|