Rewrite docs: honest state, real plan (reverse-engineer 6043 into DSL solvers)
Browse files- own-solver/README.md +32 -44
own-solver/README.md
CHANGED
|
@@ -1,65 +1,53 @@
|
|
| 1 |
-
# NeuroGolf Solver
|
| 2 |
|
| 3 |
Builds minimal ONNX networks for ARC-AGI tasks. Modular Python package with opset 10-17, zero-cost Slice-based transforms + embedded trained weights.
|
| 4 |
|
| 5 |
-
**Public LB: 5560.70** (V3
|
| 6 |
|
| 7 |
## Target: LB > 6043
|
| 8 |
|
| 9 |
-
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
## Scoring Formula (
|
| 12 |
|
| 13 |
```python
|
| 14 |
score = max(1.0, 25.0 - math.log(max(1.0, memory + params)))
|
| 15 |
```
|
| 16 |
-
- memory = ORT Profiler
|
| 17 |
-
- params =
|
| 18 |
-
-
|
|
|
|
| 19 |
|
| 20 |
-
##
|
| 21 |
|
| 22 |
-
|
| 23 |
-
-
|
| 24 |
-
-
|
|
|
|
|
|
|
|
|
|
| 25 |
|
| 26 |
-
|
| 27 |
-
- Merged with 5743 (80 tasks use compact 5743 models)
|
| 28 |
-
- Stage 1 trivial optimization (6 tasks at 18-25 pts)
|
| 29 |
-
- Proved: fewer nodes = less memory = higher score
|
| 30 |
-
|
| 31 |
-
## Architecture
|
| 32 |
-
|
| 33 |
-
| Component | Tasks | Description |
|
| 34 |
-
|-----------|-------|-------------|
|
| 35 |
-
| Wave 22 (automated) | 143 | Compact reverse-engineered from 5743 (15-50 nodes) |
|
| 36 |
-
| Waves 17-21 (automated) | 78 | Learned weights + analytical graphs |
|
| 37 |
-
| Analytical (waves 1-16) | 129 | Hand-coded + reverse-engineered DSL |
|
| 38 |
-
| Conv lstsq | 35 | Least-squares fitted kernels |
|
| 39 |
-
| Fallback reference | 15 | Reference models for crash-tasks |
|
| 40 |
-
|
| 41 |
-
## Optimization Tools
|
| 42 |
-
|
| 43 |
-
| Tool | Purpose | Impact |
|
| 44 |
-
|------|---------|--------|
|
| 45 |
-
| `merge_best_of_both.py` | Pick compact model from 5743 vs V90 | +200 pts |
|
| 46 |
-
| `stage1_trivial_optimizer.py` | Rebuild simple tasks (transpose=25pts) | +38 pts |
|
| 47 |
-
| `sign_corrected_conv.py` | Direct Conv→output for conv_var | +8 pts |
|
| 48 |
-
| `fp16_optimizer.py` | fp16 weight conversion | needs Cast fix |
|
| 49 |
-
|
| 50 |
-
## Usage
|
| 51 |
|
| 52 |
```bash
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
--
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
python stage1_trivial_optimizer.py
|
| 60 |
-
|
|
|
|
|
|
|
| 61 |
```
|
| 62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
## Repo
|
| 64 |
|
| 65 |
https://huggingface.co/rogermt/neurogolf-solver
|
|
|
|
| 1 |
+
# NeuroGolf Solver
|
| 2 |
|
| 3 |
Builds minimal ONNX networks for ARC-AGI tasks. Modular Python package with opset 10-17, zero-cost Slice-based transforms + embedded trained weights.
|
| 4 |
|
| 5 |
+
**Public LB: 5560.70** (V3, 400/400 tasks)
|
| 6 |
|
| 7 |
## Target: LB > 6043
|
| 8 |
|
| 9 |
+
submission-6043.zip already scored 6043 on Kaggle. It's in this repo.
|
| 10 |
+
The models inside it are NOT generated by our solver — they come from an external source.
|
| 11 |
+
To beat 6043 with OUR solver, we need to reverse-engineer those models into DSL solver code.
|
| 12 |
|
| 13 |
+
## Scoring Formula (neurogolf_utils.py, May 14)
|
| 14 |
|
| 15 |
```python
|
| 16 |
score = max(1.0, 25.0 - math.log(max(1.0, memory + params)))
|
| 17 |
```
|
| 18 |
+
- memory = ORT Profiler intermediate tensor bytes (excludes input/output)
|
| 19 |
+
- params = initializer element count + Constant element count
|
| 20 |
+
- Initializer BYTES are NOT in memory — only element counts go to params
|
| 21 |
+
- NO MACs (removed May 4)
|
| 22 |
|
| 23 |
+
## What We Have
|
| 24 |
|
| 25 |
+
| Source | LB Score | Origin |
|
| 26 |
+
|--------|----------|--------|
|
| 27 |
+
| submission-6043.zip | 6043 | External. Not from our solver. Needs reverse-engineering. |
|
| 28 |
+
| submission-5743.zip | 5743 | External. Partially reverse-engineered into wave22. |
|
| 29 |
+
| submission-v90.zip | 5322 | Our solver output. |
|
| 30 |
+
| V3 (merged) | 5560 | merge_best_of_both.py + stage1_trivial_optimizer.py |
|
| 31 |
|
| 32 |
+
## Pipeline (current, working)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
|
| 34 |
```bash
|
| 35 |
+
python merge_best_of_both.py \
|
| 36 |
+
--sub_5743 submission-5743.zip \
|
| 37 |
+
--sub_v90 submission-v90.zip \
|
| 38 |
+
--data_dir /kaggle/input/competitions/neurogolf-2026 \
|
| 39 |
+
--output_zip /kaggle/working/merged.zip
|
| 40 |
+
|
| 41 |
+
python stage1_trivial_optimizer.py \
|
| 42 |
+
--input_zip /kaggle/working/merged.zip \
|
| 43 |
+
--data_dir /kaggle/input/competitions/neurogolf-2026 \
|
| 44 |
+
--output_zip /kaggle/working/submission.zip
|
| 45 |
```
|
| 46 |
|
| 47 |
+
## What Needs to Happen
|
| 48 |
+
|
| 49 |
+
Reverse-engineer submission-6043.zip models into solver code. See NEXT_AGENT.md.
|
| 50 |
+
|
| 51 |
## Repo
|
| 52 |
|
| 53 |
https://huggingface.co/rogermt/neurogolf-solver
|