Student: Martynas Prascevicius Student ID: 001263199 Course: COMP1818 Artificial Intelligence Applications
cd /Users/m2000uk/Desktop/coding/AI/CW2
# Use parent directory's virtual environment (recommended)
# OR install packages globally
pip3 install torch transformers datasets scikit-learn numpy pandas matplotlib seaborn tqdm# Test enhanced model
python3 src/enhanced_model.py
# List all experiments
python3 src/experiment_runner.py --list# Run baseline (reproduces CW1 result: 91.16%)
python3 src/experiment_runner.py --experiment baseline_defaultThis will:
- Download IMDB dataset automatically
- Train DistilBERT for 3 epochs (~30-45 minutes on Mac M4)
- Save results to
results/baseline_default.json
python3 src/experiment_runner.py --experiment lr_3e5# Run all Phase 2 experiments (learning rates)
python3 src/experiment_runner.py --phase 2python3 src/experiment_runner.py --allpython3 src/results_analyzer.pyShows:
- Total experiments completed
- Best overall accuracy
- Best configuration details
- Results by phase
python3 src/results_analyzer.py --compare-allpython3 src/results_analyzer.py --phase 2python3 src/results_analyzer.py --hyperparameter learning_ratepython3 src/results_analyzer.py --export-latexCreates experiments/results_table.tex ready for your report!
python3 src/experiment_runner.py --phase 1 # Baseline: ~45 min
python3 src/experiment_runner.py --phase 2 # Learning rates: ~3 hoursGoal: Find optimal learning rate (likely 2e-5 or 3e-5)
python3 src/experiment_runner.py --phase 3 # Batch sizes: ~2 hours
python3 src/experiment_runner.py --phase 4 # Epochs: ~2 hoursGoal: Balance speed and accuracy
python3 src/experiment_runner.py --phase 5 # Max length: ~2 hours
python3 src/experiment_runner.py --phase 6 # Schedulers: ~2 hoursGoal: Optimize training schedule
python3 src/experiment_runner.py --phase 7 # Regularization
python3 src/experiment_runner.py --phase 8 # Layer freezing
python3 src/experiment_runner.py --phase 10 # Pooling strategiesGoal: Explore advanced techniques
# Update optimized_v1 in experiment_configs.py with best hyperparameters
# Then run it
python3 src/experiment_runner.py --experiment optimized_v1
# Export for LaTeX
python3 src/results_analyzer.py --export-latexCW2/
├── src/
│ ├── experiment_configs.py # All experiment definitions
│ ├── enhanced_model.py # DistilBERT with advanced features
│ ├── experiment_runner.py # Automated training
│ └── results_analyzer.py # Results comparison
│
├── results/ # JSON files (one per experiment)
├── figures/ # Visualizations (to be generated)
├── experiments/ # Logs and LaTeX exports
├── literature/
│ └── references_distilbert.bib # 10 academic papers
│
├── EXPERIMENT_PLAN.md # Detailed plan (12 phases)
├── SETUP_GUIDE.md # This file
└── README.md # Project overview
- baseline_default: 91.16% ± 0.02% (reproduces CW1)
- lr_1e5: ~90.5% (conservative, stable)
- lr_2e5: ~91.2% (baseline)
- lr_3e5: ~91.5% (expected best)
- lr_5e5: ~90.0% (too aggressive)
- batch_8: ~91.0% (slower, noisier)
- batch_16: ~91.2% (baseline)
- batch_32: ~91.4% (faster, smoother)
- Achieve >92% accuracy with optimized configuration
- Document all findings with academic references
- Write comprehensive 4-page LaTeX report
- Start with Phase 1-2 to understand the baseline and find optimal LR
- Run experiments overnight on Mac M4 (each takes 30-60 min)
- Track results using results_analyzer.py after each phase
- Document everything - note which configs work and why
- Cite papers - Use references_distilbert.bib for your report
- Generate figures - All visualizations programmatically (no screenshots!)
# Install missing packages
pip3 install torch transformers datasets scikit-learn numpy pandas# Reduce batch size in experiment_configs.py
batch_size: 8 # instead of 16# Fall back to CPU in experiment_configs.py
device: 'cpu' # instead of 'mps'Name: Martynas Prascevicius Student ID: 001263199 Course: COMP1818 Artificial Intelligence Applications University: University of Greenwich (2025-26) Deadline: Nov 19, 2025, 5pm (Grace: Nov 21, 2025, 5pm)