Update TODO.md: deprioritize 023, focus on 133/158/018 for 14pts bronze gap
Browse files- medal-solvers/TODO.md +24 -59
medal-solvers/TODO.md
CHANGED
|
@@ -1,98 +1,63 @@
|
|
| 1 |
# medal-solvers β TODO (ORDERED)
|
| 2 |
|
| 3 |
-
## Current: 6139
|
| 4 |
|
| 5 |
---
|
| 6 |
|
| 7 |
-
## βββ #1 PRIORITY: TASK
|
| 8 |
-
|
| 9 |
-
### Current: score=11.06 (370 nodes, 1.33M memory) | Second dataset: 11.62
|
| 10 |
-
### Target: 13-15+ if reduced algorithm works
|
| 11 |
-
|
| 12 |
-
### ALGORITHM IS KNOWN (reverse-engineered from 370-node model):
|
| 13 |
-
The algorithm uses **iterative endpoint propagation** β 12 iterations of:
|
| 14 |
-
1. Compute MinPool(2Γ2), H-triplet(1Γ3), V-triplet(3Γ1)
|
| 15 |
-
2. Convolve with shifted kernels, find cells with exactly 1 evidence
|
| 16 |
-
3. Intersect with previous features β refined markers
|
| 17 |
-
4. After all iterations: body = remaining MinPool, edge = remaining triplets
|
| 18 |
-
|
| 19 |
-
### Current bottleneck: 370 nodes create ~369 intermediates of [1,1,30,30] = 1.33M memory.
|
| 20 |
-
|
| 21 |
-
### Path to higher score:
|
| 22 |
-
1. **FIX Python reimplementation** (currently 76.74% β threshold bugs at iteration step)
|
| 23 |
-
- The model uses threshold 3.5/2.5 for initial extraction, 0.5 for subsequent intersections
|
| 24 |
-
- Need to trace exact values at each step to match
|
| 25 |
-
2. **Reduce iterations** using LARGER kernels:
|
| 26 |
-
- 5Γ5 kernel reaches 2 cells per iteration β 6 iterations instead of 12
|
| 27 |
-
- 7Γ7 kernel reaches 3 cells β 4 iterations
|
| 28 |
-
- Each iteration has ~30 nodes. Reducing from 12β6 saves ~180 nodes = ~180 intermediates
|
| 29 |
-
- Memory drops from 1.33M to ~650K β score ~11.6 β to ~320K β score ~12.3
|
| 30 |
-
3. **Build reduced ONNX** and validate on all 266 + random generated examples
|
| 31 |
-
4. **Profile on Kaggle** (static scoring is UNRELIABLE)
|
| 32 |
-
|
| 33 |
-
### DO NOT:
|
| 34 |
-
- β Don't try gradient-trained approach (Kaggle rejected it β doesn't generalize)
|
| 35 |
-
- β Don't use static scoring to estimate gains
|
| 36 |
-
- β Don't declare the problem impossible β the algorithm IS known and works
|
| 37 |
-
|
| 38 |
-
### Training script (backup plan):
|
| 39 |
-
`medal-solvers/build_tasks/train_task023.py` β run on Kaggle GPU with N_GEN=5000+.
|
| 40 |
-
Uses oracle (370-node model) to label random shapes. If hand-crafted approach stalls,
|
| 41 |
-
this is the fallback but MUST verify on 5000+ random shapes before submitting.
|
| 42 |
-
|
| 43 |
-
---
|
| 44 |
-
|
| 45 |
-
## β
DONE: TASK 258 β Score 18.187 β 19.925 (+1.738, V118)
|
| 46 |
-
Single Conv[10,10,1,3] with bias threshold AND trick. See `convolution_series_part_2.py`.
|
| 47 |
-
|
| 48 |
-
## β
DONE: TASK 285 β Score 8.836 β 10.696 (+1.86 pts, V114)
|
| 49 |
-
|
| 50 |
-
---
|
| 51 |
-
|
| 52 |
-
## ββ #2: TASK 133 β PER-CHANNEL CONVERSION ββ
|
| 53 |
|
| 54 |
### Current: score=8.97, memory=9,115,804
|
| 55 |
### Target: score=11-12 (gain +2-3 pts)
|
| 56 |
|
| 57 |
Unroll per-color: process at [1,1,30,30] instead of [1,9,30,30].
|
|
|
|
| 58 |
|
| 59 |
---
|
| 60 |
|
| 61 |
-
## ββ #
|
| 62 |
|
| 63 |
### Current: score=9.30, memory=6,563,608
|
| 64 |
### Target: score=11-12 (gain +1.5-2.5 pts)
|
| 65 |
|
| 66 |
-
MaxPool propagation framework (same as task 285 V4).
|
|
|
|
| 67 |
|
| 68 |
---
|
| 69 |
|
| 70 |
-
## β #
|
| 71 |
|
| 72 |
### Current: score=11.32, memory=868,894
|
| 73 |
### Target: score=12.5-13.5 (gain +1.2-2.2 pts)
|
| 74 |
|
| 75 |
---
|
| 76 |
|
| 77 |
-
## β #
|
| 78 |
|
| 79 |
### Current: score=11.62, memory=643,378
|
| 80 |
### Target: score=12.5-13 (gain +0.9-1.4 pts)
|
| 81 |
|
| 82 |
---
|
| 83 |
|
| 84 |
-
##
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
---
|
| 90 |
|
| 91 |
## RULES:
|
| 92 |
-
- β
|
| 93 |
- β Don't submit with <100% accuracy on known + generated examples
|
| 94 |
-
- β Don't
|
| 95 |
- β
Hand-craft weights using bias threshold trick where rule is understood
|
| 96 |
-
- β
Use
|
| 97 |
-
- β
|
|
|
|
| 98 |
- β
Profile on Kaggle before submitting
|
|
|
|
|
|
| 1 |
# medal-solvers β TODO (ORDERED)
|
| 2 |
|
| 3 |
+
## Current: ~6139 (V119) | Target: 6153+ (bronze) | Gap: 14 pts
|
| 4 |
|
| 5 |
---
|
| 6 |
|
| 7 |
+
## βββ #1 PRIORITY: TASK 133 β PER-CHANNEL CONVERSION βββ
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
### Current: score=8.97, memory=9,115,804
|
| 10 |
### Target: score=11-12 (gain +2-3 pts)
|
| 11 |
|
| 12 |
Unroll per-color: process at [1,1,30,30] instead of [1,9,30,30].
|
| 13 |
+
Same technique as task 025. See `build_task025_onnx.py`.
|
| 14 |
|
| 15 |
---
|
| 16 |
|
| 17 |
+
## βββ #2: TASK 158 β PROPAGATION REBUILD βββ
|
| 18 |
|
| 19 |
### Current: score=9.30, memory=6,563,608
|
| 20 |
### Target: score=11-12 (gain +1.5-2.5 pts)
|
| 21 |
|
| 22 |
+
MaxPool propagation framework (same as task 285 V4 which gave +1.86).
|
| 23 |
+
See `build_task285_v4_propagation.py`.
|
| 24 |
|
| 25 |
---
|
| 26 |
|
| 27 |
+
## ββ #3: TASK 018 β NODE REDUCTION ββ
|
| 28 |
|
| 29 |
### Current: score=11.32, memory=868,894
|
| 30 |
### Target: score=12.5-13.5 (gain +1.2-2.2 pts)
|
| 31 |
|
| 32 |
---
|
| 33 |
|
| 34 |
+
## ββ #4: TASK 255 β ELIMINATE [30,30] MATRICES ββ
|
| 35 |
|
| 36 |
### Current: score=11.62, memory=643,378
|
| 37 |
### Target: score=12.5-13 (gain +0.9-1.4 pts)
|
| 38 |
|
| 39 |
---
|
| 40 |
|
| 41 |
+
## β #5: TASK 023 β CONV7x7 TRAINING (needs Kaggle GPU)
|
| 42 |
+
|
| 43 |
+
### Current: score=11.06 | Target: 12.5-13.2 (gain +1.4-2.1)
|
| 44 |
+
### Status: Script ready, needs run with --hidden 128 --n-train 50000
|
| 45 |
+
### Script: `medal-solvers/build_tasks/train_task023_final.py`
|
| 46 |
+
### DO NOT attempt fp16 surgery or reduced iterations (both proven to fail)
|
| 47 |
+
|
| 48 |
+
---
|
| 49 |
+
|
| 50 |
+
## TOTAL POTENTIAL: +6.6 to +11.1 pts (tasks 1-4 alone = +5.6 to +9.1)
|
| 51 |
|
| 52 |
---
|
| 53 |
|
| 54 |
## RULES:
|
| 55 |
+
- β NEVER use static scoring β profile on Kaggle ONLY
|
| 56 |
- β Don't submit with <100% accuracy on known + generated examples
|
| 57 |
+
- β Don't work on task 219
|
| 58 |
- β
Hand-craft weights using bias threshold trick where rule is understood
|
| 59 |
+
- β
Use per-channel [1,1,H,W] to minimize memory
|
| 60 |
+
- β
Use MaxPool propagation for iterative algorithms
|
| 61 |
+
- β
Use delta approach for output (input + delta)
|
| 62 |
- β
Profile on Kaggle before submitting
|
| 63 |
+
- β
Verify on ALL examples + 5000+ random inputs
|