rogermt commited on
Commit
b8deeea
·
verified ·
1 Parent(s): 1cf77ac

Rewrite docs: honest state, real plan (reverse-engineer 6043 into DSL solvers)

Browse files
Files changed (1) hide show
  1. own-solver/README.md +32 -44
own-solver/README.md CHANGED
@@ -1,65 +1,53 @@
1
- # NeuroGolf Solver v9.2
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 optimizer, 400/400 tasks submitted)
6
 
7
  ## Target: LB > 6043
8
 
9
- Gap: +483 pts. Strategy: reduce intermediate tensor count (score = 25 - ln(memory + params)).
 
 
10
 
11
- ## Scoring Formula (CONFIRMED — May 14 neurogolf_utils.py)
12
 
13
  ```python
14
  score = max(1.0, 25.0 - math.log(max(1.0, memory + params)))
15
  ```
16
- - memory = ORT Profiler measured tensor sizes (all intermediates, excludes input/output)
17
- - params = total initializer + Constant element count
18
- - **NO MACs** (removed May 4 after exploit)
 
19
 
20
- ## Session Summary
21
 
22
- **V90 (solver): LB 5322.64**
23
- - 385 tasks solved by solvers + 15 fallback reference models
24
- - All 400 tasks submitted
 
 
 
25
 
26
- **V3 (optimizer): LB 5560.70 (+238 pts)**
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
- # Standard solver run:
54
- python -m neurogolf_solver.main --device cpu --conv_budget 5 \
55
- --data_dir $DATA_DIR --kaggle --output_dir submission --fallback_zip fallback_unsolved.zip
56
-
57
- # Post-processing optimization:
58
- python sign_corrected_conv.py --data_dir $DATA_DIR --output_dir submission
59
- python stage1_trivial_optimizer.py --input_zip submission.zip --data_dir $DATA_DIR --output_zip out.zip
60
- python merge_best_of_both.py --sub_5743 5743.zip --sub_v90 out.zip --data_dir $DATA_DIR --output_zip submission.zip
 
 
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