diff options
| author | YurenHao0426 <Blackhao0426@gmail.com> | 2026-08-01 16:23:26 -0500 |
|---|---|---|
| committer | YurenHao0426 <Blackhao0426@gmail.com> | 2026-08-01 16:23:26 -0500 |
| commit | 66af02f1e5c50e041ced3e8b85659709a1c1f4f3 (patch) | |
| tree | 6dd0de68e644be5e7a5546123f44ea3c4a63646f | |
| parent | 735f9c7fd202d0eaed9183094d84d365e0e5404d (diff) | |
Record the gate correction in the concept document
The user-facing statement still carried the retired correlation
threshold. Adds the correction, the joint condition that replaces it,
the width diagnosis, and the closure of the shrink-N route.
Co-Authored-By: Claude <noreply@anthropic.com>
| -rw-r--r-- | PROJECT_CONCEPT.md | 47 | ||||
| -rw-r--r-- | RANK_RESULTS.md | 12 | ||||
| -rw-r--r-- | logs/obj_base_gpu.log | 4 | ||||
| -rw-r--r-- | logs/obj_large_gpu.log | 3 | ||||
| -rw-r--r-- | logs/rank_gate.log | 0 | ||||
| -rw-r--r-- | logs/rho_full_width.log | 1 | ||||
| -rw-r--r-- | worldalign/rank_gate.py | 138 |
7 files changed, 204 insertions, 1 deletions
diff --git a/PROJECT_CONCEPT.md b/PROJECT_CONCEPT.md index d5c0265..d9232e6 100644 --- a/PROJECT_CONCEPT.md +++ b/PROJECT_CONCEPT.md @@ -297,6 +297,53 @@ E(\text{permuted / semantically wrong configurations}), 唯一、低能的一致解释。视图级探针给出了这个方向的第一个正信号: 以粗对齐为参照系,细粒度状态在种群上下文中变得跨模态可比。 +## 2026-08-01 更正:我们一直在看错的那个统计量 + +过去几个月的判据是「真配对处的场相关 ρ 要到 0.9」,低于就不值得跑 +搜索。**这条判据是错的**,而且是被我们自己的对照实验推翻的:把那个 +能恢复到 95.3% 的合成世界的场截断到秩 r,ρ 几乎不动(0.902 / 0.906 +/ 0.928),恢复率却横跨整个量程(6.2% / 12.9% / **95.6%**,秩 4 / 8 +/ 16)。一个 ρ=0.906、已经越过所谓门槛的场,只恢复 13%。 + +理论其实早就说了,是我们读错了。相关匹配的门槛是为**满秩可交换噪声** +推导的,那里 N²/2 个矩阵元每一个都独立约束配对;而秩 r 的共享成分只 +提供约 rN 个。256 个场景、r≈10 时,这是门槛公式所假设的八分之一。 + +新的判据是**二元条件**:场相关,加上**共享谱宽度**——两侧关系场主 +特征子空间之间主角余弦大于 0.7 的方向数,以打乱场景顺序的 null 为 +基线(null=1.0)。两者缺一不可:18 个共享方向配 ρ=0.508 会失败, +11 个配 ρ=0.902 也会失败。 + +旧判据一撤,「自然数据不值得跑搜索」的理由也没了,于是跑了: +**0.0000,chance 是 0.0039**。结论没变,但现在它是测量结果,而不是 +从一个并不支配它的统计量推出来的。 + +诊断比「特征不够好」精确得多:照片上两个模态**各自都很丰富**(视觉 +有效秩 40,文本 48),但只在 15 个方向上一致——**各自丰富的东西不 +是同一批东西**。而且这个交集对视觉侧几乎一切可调项免疫:分割数 6→16 +掉 1 个方向,直接给标注框只买到 1 个,集合核加三阶矩把视觉自身的秩 +抬高 7 而共享只 +1。文本侧能推动但很快饱和(10→17)。场景数从 256 +加到 1024 反而从 23 降到 19。 + +于是**语料选择变成一等变量**:合成世界能到 26 个共享方向,是因为它 +的 caption 恰好陈述了完整世界状态;VG 只有 15,是因为一句 region +description 和一个 patch descriptor 大概就只在这么多个方面重叠。下一 +步要找的不是更好的特征,而是**天然重叠就宽的语料对**——稠密描述、 +带完整规格的商品图文、截图配可访问性树。 + +顺带的免费收益:判别方向按自身特征值加权、保留更宽的基底,再把文本 +向量提到 128 维,把 ρ 从 0.656 推到 0.716,共享方向从 10 到 16; +短语按中心词/修饰词分开编码再到 0.725。hubness 假设被证伪(度模型只 +占场方差 1–5%,去掉反而让 ρ 略升)。 + +另外**「缩小 N」这条路彻底死了,而且方向是反的**:信息论门槛 +ρ_IT ≈ √(4 log N / N) 随 N 减小而**升高**(256 时 0.29,64 时 0.51, +16 时 0.83)。闸门直接证实:N = 16 至 96 的每个尺寸上,强搜索器找到 +的最深状态都比真值更深,3/3 复现。真值都不是最优解时,算法类别就不 +重要了——这也顺带回答了「接受指数级代价」为什么没用。 + +详见 `RANK_RESULTS.md`。 + ## 合作者应避免的误解 - 这不是“LLM 通过文本已经获得了视觉知觉”。语言模型拥有的可能是可被 diff --git a/RANK_RESULTS.md b/RANK_RESULTS.md index e1c4343..0e481b9 100644 --- a/RANK_RESULTS.md +++ b/RANK_RESULTS.md @@ -91,6 +91,18 @@ segmentation and nothing over using fewer segments. This confirms from a new angle what the earlier oracle-box comparison found: **segmentation is not the constraint on photographs.** +The correlation column in that table should be read against a noise floor. +Moving the segmentation eigendecomposition from CPU to GPU changes nothing in +the recipe, yet re-deriving segments through it takes the baseline correlation +from 0.6559 to 0.6767 — the eigenvectors differ in sign and, where eigenvalues +are near-degenerate, in rotation, so the clustering that follows lands +differently. **Segmentation reseeding is worth about 0.02 in correlation**, so +the 6-versus-16-segment and oracle-box differences in that table are inside +the noise and only the shared counts distinguish them. The session's headline +movements, 0.656 to 0.716 to 0.725, are three times the floor. The pipeline +itself is unchanged: run against the original CPU-derived segments it +reproduces 0.6559 exactly. + The text side does move it, and saturates: | Text vector dimension | text eff. rank | ρ | shared | diff --git a/logs/obj_base_gpu.log b/logs/obj_base_gpu.log index c3ea786..3fccb88 100644 --- a/logs/obj_base_gpu.log +++ b/logs/obj_base_gpu.log @@ -1,3 +1,5 @@ Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`. `torch_dtype` is deprecated! Use `dtype` instead! -
segment: 0%| | 0/250 [00:00<?, ?it/s]
segment: 0%| | 1/250 [00:02<10:41, 2.58s/it]
segment: 1%| | 2/250 [00:04<08:49, 2.13s/it]
segment: 1%| | 3/250 [00:06<08:11, 1.99s/it]
segment: 2%|▏ | 4/250 [00:08<07:52, 1.92s/it]
segment: 2%|▏ | 5/250 [00:09<07:41, 1.88s/it]
segment: 2%|▏ | 6/250 [00:11<07:02, 1.73s/it]
segment: 3%|▎ | 7/250 [00:12<06:28, 1.60s/it]
segment: 3%|▎ | 8/250 [00:13<06:06, 1.52s/it]
segment: 4%|▎ | 9/250 [00:15<05:50, 1.45s/it]
segment: 4%|▍ | 10/250 [00:16<05:40, 1.42s/it]
segment: 4%|▍ | 11/250 [00:17<05:31, 1.39s/it]
segment: 5%|▍ | 12/250 [00:19<05:26, 1.37s/it]
segment: 5%|▌ | 13/250 [00:20<05:23, 1.37s/it]
segment: 6%|▌ | 14/250 [00:21<05:20, 1.36s/it]
segment: 6%|▌ | 15/250 [00:23<05:16, 1.35s/it]
segment: 6%|▋ | 16/250 [00:24<05:14, 1.34s/it]
segment: 7%|▋ | 17/250 [00:25<05:12, 1.34s/it]
segment: 7%|▋ | 18/250 [00:27<05:10, 1.34s/it]
segment: 8%|▊ | 19/250 [00:28<05:07, 1.33s/it]
segment: 8%|▊ | 20/250 [00:29<05:06, 1.33s/it]
segment: 8%|▊ | 21/250 [00:31<05:04, 1.33s/it]
segment: 9%|▉ | 22/250 [00:32<05:01, 1.32s/it]
segment: 9%|▉ | 23/250 [00:33<04:59, 1.32s/it]
segment: 10%|▉ | 24/250 [00:35<04:58, 1.32s/it]
segment: 10%|█ | 25/250 [00:36<04:57, 1.32s/it]
segment: 10%|█ | 26/250 [00:37<04:56, 1.32s/it]
segment: 11%|█ | 27/250 [00:39<04:56, 1.33s/it]
segment: 11%|█ | 28/250 [00:40<04:55, 1.33s/it]
segment: 12%|█▏ | 29/250 [00:41<04:54, 1.33s/it]
segment: 12%|█▏ | 30/250 [00:43<04:53, 1.33s/it]
segment: 12%|█▏ | 31/250 [00:44<04:51, 1.33s/it]
segment: 13%|█▎ | 32/250 [00:45<04:48, 1.32s/it]
segment: 13%|█▎ | 33/250 [00:47<04:46, 1.32s/it]
segment: 14%|█▎ | 34/250 [00:48<04:44, 1.32s/it]
segment: 14%|█▍ | 35/250 [00:49<04:43, 1.32s/it]
segment: 14%|█▍ | 36/250 [00:51<04:43, 1.32s/it]
segment: 15%|█▍ | 37/250 [00:52<04:41, 1.32s/it]
segment: 15%|█▌ | 38/250 [00:53<04:40, 1.32s/it]
segment: 16%|█▌ | 39/250 [00:55<04:39, 1.32s/it]
segment: 16%|█▌ | 40/250 [00:56<04:36, 1.32s/it]
segment: 16%|█▋ | 41/250 [00:57<04:34, 1.31s/it]
segment: 17%|█▋ | 42/250 [00:59<04:33, 1.32s/it]
segment: 17%|█▋ | 43/250 [01:00<04:32, 1.32s/it]
segment: 18%|█▊ | 44/250 [01:01<04:31, 1.32s/it]
segment: 18%|█▊ | 45/250 [01:03<04:34, 1.34s/it]
segment: 18%|█▊ | 46/250 [01:04<04:31, 1.33s/it]
segment: 19%|█▉ | 47/250 [01:05<04:27, 1.32s/it]
segment: 19%|█▉ | 48/250 [01:06<04:25, 1.32s/it]
segment: 20%|█▉ | 49/250 [01:08<04:23, 1.31s/it]
segment: 20%|██ | 50/250 [01:09<04:21, 1.31s/it]
segment: 20%|██ | 51/250 [01:10<04:21, 1.31s/it]
segment: 21%|██ | 52/250 [01:12<04:20, 1.31s/it]
segment: 21%|██ | 53/250 [01:13<04:19, 1.32s/it]
segment: 22%|██▏ | 54/250 [01:14<04:17, 1.32s/it]
segment: 22%|██▏ | 55/250 [01:16<04:16, 1.32s/it]
segment: 22%|██▏ | 56/250 [01:17<04:15, 1.32s/it]
segment: 23%|██▎ | 57/250 [01:18<04:14, 1.32s/it]
segment: 23%|██▎ | 58/250 [01:20<04:13, 1.32s/it]
segment: 24%|██▎ | 59/250 [01:21<04:11, 1.32s/it]
segment: 24%|██▍ | 60/250 [01:22<04:10, 1.32s/it]
segment: 24%|██▍ | 61/250 [01:24<04:08, 1.32s/it]
segment: 25%|██▍ | 62/250 [01:25<04:07, 1.32s/it]
segment: 25%|██▌ | 63/250 [01:26<04:06, 1.32s/it]
segment: 26%|██▌ | 64/250 [01:27<04:04, 1.31s/it]
segment: 26%|██▌ | 65/250 [01:29<04:03, 1.32s/it]
segment: 26%|██▋ | 66/250 [01:30<04:01, 1.32s/it]
segment: 27%|██▋ | 67/250 [01:31<04:01, 1.32s/it]
segment: 27%|██▋ | 68/250 [01:33<03:58, 1.31s/it]
segment: 28%|██▊ | 69/250 [01:34<03:57, 1.31s/it]
segment: 28%|██▊ | 70/250 [01:35<03:56, 1.31s/it]
segment: 28%|██▊ | 71/250 [01:37<03:56, 1.32s/it]
segment: 29%|██▉ | 72/250 [01:38<03:54, 1.32s/it]
segment: 29%|██▉ | 73/250 [01:39<03:52, 1.31s/it]
segment: 30%|██▉ | 74/250 [01:41<03:52, 1.32s/it]
segment: 30%|███ | 75/250 [01:42<03:51, 1.32s/it]
segment: 30%|███ | 76/250 [01:43<03:49, 1.32s/it]
segment: 31%|███ | 77/250 [01:45<03:47, 1.32s/it]
segment: 31%|███ | 78/250 [01:46<03:47, 1.32s/it]
segment: 32%|███▏ | 79/250 [01:47<03:44, 1.31s/it]
segment: 32%|███▏ | 80/250 [01:49<03:43, 1.32s/it]
segment: 32%|███▏ | 81/250 [01:50<03:42, 1.32s/it]
segment: 33%|███▎ | 82/250 [01:51<03:41, 1.32s/it]
segment: 33%|███▎ | 83/250 [01:53<03:39, 1.31s/it]
segment: 34%|███▎ | 84/250 [01:54<03:37, 1.31s/it]
segment: 34%|███▍ | 85/250 [01:55<03:37, 1.32s/it]
segment: 34%|███▍ | 86/250 [01:56<03:35, 1.31s/it]
segment: 35%|███▍ | 87/250 [01:58<03:34, 1.31s/it]
segment: 35%|███▌ | 88/250 [01:59<03:33, 1.32s/it]
segment: 36%|███▌ | 89/250 [02:00<03:32, 1.32s/it]
segment: 36%|███▌ | 90/250 [02:02<03:30, 1.32s/it]
segment: 36%|███▋ | 91/250 [02:03<03:30, 1.32s/it]
segment: 37%|███▋ | 92/250 [02:04<03:29, 1.32s/it]
segment: 37%|███▋ | 93/250 [02:06<03:28, 1.32s/it]
segment: 38%|███▊ | 94/250 [02:07<03:26, 1.33s/it]
segment: 38%|███▊ | 95/250 [02:08<03:24, 1.32s/it]
segment: 38%|███▊ | 96/250 [02:10<03:23, 1.32s/it]
segment: 39%|███▉ | 97/250 [02:11<03:21, 1.32s/it]
segment: 39%|███▉ | 98/250 [02:12<03:20, 1.32s/it]
segment: 40%|███▉ | 99/250 [02:14<03:18, 1.32s/it]
segment: 40%|████ | 100/250 [02:15<03:16, 1.31s/it]
segment: 40%|████ | 101/250 [02:16<03:15, 1.31s/it]
segment: 41%|████ | 102/250 [02:18<03:14, 1.31s/it]
segment: 41%|████ | 103/250 [02:19<03:13, 1.31s/it]
segment: 42%|████▏ | 104/250 [02:20<03:11, 1.31s/it]
segment: 42%|████▏ | 105/250 [02:21<03:10, 1.31s/it]
segment: 42%|████▏ | 106/250 [02:23<03:09, 1.32s/it]
segment: 43%|████▎ | 107/250 [02:24<03:08, 1.32s/it]
segment: 43%|████▎ | 108/250 [02:25<03:06, 1.31s/it]
segment: 44%|████▎ | 109/250 [02:27<03:04, 1.31s/it]
segment: 44%|████▍ | 110/250 [02:28<03:03, 1.31s/it]
segment: 44%|████▍ | 111/250 [02:29<03:03, 1.32s/it]
segment: 45%|████▍ | 112/250 [02:31<03:02, 1.32s/it]
segment: 45%|████▌ | 113/250 [02:32<03:00, 1.32s/it]
segment: 46%|████▌ | 114/250 [02:33<02:59, 1.32s/it]
segment: 46%|████▌ | 115/250 [02:35<02:57, 1.31s/it]
segment: 46%|████▋ | 116/250 [02:36<02:56, 1.32s/it]
segment: 47%|████▋ | 117/250 [02:37<02:55, 1.32s/it]
segment: 47%|████▋ | 118/250 [02:39<02:54, 1.32s/it]
segment: 48%|████▊ | 119/250 [02:40<02:52, 1.32s/it]
segment: 48%|████▊ | 120/250 [02:41<02:50, 1.31s/it]
segment: 48%|████▊ | 121/250 [02:43<02:48, 1.31s/it]
segment: 49%|████▉ | 122/250 [02:44<02:47, 1.31s/it]
segment: 49%|████▉ | 123/250 [02:45<02:46, 1.31s/it]
segment: 50%|████▉ | 124/250 [02:46<02:45, 1.32s/it]
segment: 50%|█████ | 125/250 [02:48<02:43, 1.31s/it]
segment: 50%|█████ | 126/250 [02:49<02:42, 1.31s/it]
segment: 51%|█████ | 127/250 [02:50<02:40, 1.31s/it]
segment: 51%|█████ | 128/250 [02:52<02:39, 1.31s/it]
segment: 52%|█████▏ | 129/250 [02:53<02:38, 1.31s/it]
segment: 52%|█████▏ | 130/250 [02:54<02:37, 1.31s/it]
segment: 52%|█████▏ | 131/250 [02:56<02:36, 1.32s/it]
segment: 53%|█████▎ | 132/250 [02:57<02:35, 1.32s/it]
segment: 53%|█████▎ | 133/250 [02:58<02:33, 1.31s/it]
segment: 54%|█████▎ | 134/250 [03:00<02:31, 1.31s/it]
segment: 54%|█████▍ | 135/250 [03:01<02:30, 1.31s/it]
segment: 54%|█████▍ | 136/250 [03:02<02:28, 1.31s/it]
segment: 55%|█████▍ | 137/250 [03:03<02:28, 1.31s/it]
segment: 55%|█████▌ | 138/250 [03:05<02:26, 1.31s/it]
segment: 56%|█████▌ | 139/250 [03:06<02:25, 1.31s/it]
segment: 56%|█████▌ | 140/250 [03:07<02:23, 1.31s/it]
segment: 56%|█████▋ | 141/250 [03:09<02:22, 1.31s/it]
segment: 57%|█████▋ | 142/250 [03:10<02:21, 1.31s/it]
segment: 57%|█████▋ | 143/250 [03:11<02:20, 1.31s/it]
segment: 58%|█████▊ | 144/250 [03:13<02:19, 1.32s/it]
segment: 58%|█████▊ | 145/250 [03:14<02:18, 1.32s/it]
segment: 58%|█████▊ | 146/250 [03:15<02:18, 1.33s/it]
segment: 59%|█████▉ | 147/250 [03:17<02:15, 1.31s/it]
segment: 59%|█████▉ | 148/250 [03:18<02:13, 1.31s/it]
segment: 60%|█████▉ | 149/250 [03:19<02:12, 1.31s/it]
segment: 60%|██████ | 150/250 [03:21<02:11, 1.32s/it]
segment: 60%|██████ | 151/250 [03:22<02:10, 1.32s/it]
segment: 61%|██████ | 152/250 [03:23<02:09, 1.32s/it]
segment: 61%|██████ | 153/250 [03:25<02:08, 1.32s/it]
segment: 62%|██████▏ | 154/250 [03:26<02:07, 1.33s/it]
segment: 62%|██████▏ | 155/250 [03:27<02:05, 1.32s/it]
segment: 62%|██████▏ | 156/250 [03:29<02:04, 1.33s/it]
segment: 63%|██████▎ | 157/250 [03:30<02:02, 1.32s/it]
segment: 63%|██████▎ | 158/250 [03:31<02:01, 1.32s/it]
segment: 64%|██████▎ | 159/250 [03:33<02:02, 1.35s/it]
segment: 64%|██████▍ | 160/250 [03:34<02:00, 1.34s/it]
segment: 64%|██████▍ | 161/250 [03:35<01:58, 1.34s/it]
segment: 65%|██████▍ | 162/250 [03:37<01:57, 1.33s/it]
segment: 65%|██████▌ | 163/250 [03:38<01:55, 1.33s/it]
segment: 66%|██████▌ | 164/250 [03:39<02:00, 1.40s/it]
segment: 66%|██████▌ | 165/250 [03:41<02:09, 1.53s/it]
segment: 66%|██████▋ | 166/250 [03:43<02:16, 1.62s/it]
segment: 67%|██████▋ | 167/250 [03:45<02:19, 1.68s/it]
segment: 67%|██████▋ | 168/250 [03:47<02:21, 1.73s/it]
segment: 68%|██████▊ | 169/250 [03:49<02:22, 1.76s/it]
segment: 68%|██████▊ | 170/250 [03:50<02:22, 1.79s/it]
segment: 68%|██████▊ | 171/250 [03:52<02:22, 1.80s/it]
segment: 69%|██████▉ | 172/250 [03:54<02:21, 1.82s/it]
segment: 69%|██████▉ | 173/250 [03:56<02:20, 1.82s/it]
segment: 70%|██████▉ | 174/250 [03:58<02:19, 1.83s/it]
segment: 70%|███████ | 175/250 [04:00<02:19, 1.86s/it]
segment: 70%|███████ | 176/250 [04:02<02:17, 1.85s/it]
segment: 71%|███████ | 177/250 [04:03<02:15, 1.85s/it]
segment: 71%|███████ | 178/250 [04:05<02:13, 1.86s/it]
segment: 72%|███████▏ | 179/250 [04:07<02:11, 1.86s/it]
segment: 72%|███████▏ | 180/250 [04:09<02:09, 1.85s/it]
segment: 72%|███████▏ | 181/250 [04:11<02:07, 1.84s/it]
segment: 73%|███████▎ | 182/250 [04:13<02:05, 1.84s/it]
segment: 73%|███████▎ | 183/250 [04:15<02:03, 1.84s/it]
segment: 74%|███████▎ | 184/250 [04:16<02:01, 1.84s/it]
segment: 74%|███████▍ | 185/250 [04:18<01:59, 1.84s/it]
segment: 74%|███████▍ | 186/250 [04:20<01:58, 1.85s/it]
segment: 75%|███████▍ | 187/250 [04:22<01:56, 1.85s/it]
segment: 75%|███████▌ | 188/250 [04:24<01:54, 1.85s/it]
segment: 76%|███████▌ | 189/250 [04:26<01:52, 1.85s/it]
segment: 76%|███████▌ | 190/250 [04:27<01:50, 1.85s/it]
segment: 76%|███████▋ | 191/250 [04:29<01:49, 1.86s/it]
segment: 77%|███████▋ | 192/250 [04:31<01:47, 1.86s/it]
segment: 77%|███████▋ | 193/250 [04:33<01:45, 1.85s/it]
segment: 78%|███████▊ | 194/250 [04:35<01:43, 1.85s/it]
segment: 78%|███████▊ | 195/250 [04:37<01:41, 1.85s/it]
segment: 78%|███████▊ | 196/250 [04:39<01:40, 1.86s/it]
segment: 79%|███████▉ | 197/250 [04:40<01:38, 1.86s/it]
segment: 79%|███████▉ | 198/250 [04:42<01:36, 1.85s/it]
segment: 80%|███████▉ | 199/250 [04:44<01:34, 1.85s/it]
segment: 80%|████████ | 200/250 [04:46<01:32, 1.85s/it]
segment: 80%|████████ | 201/250 [04:48<01:30, 1.85s/it]
segment: 81%|████████ | 202/250 [04:50<01:28, 1.85s/it]
segment: 81%|████████ | 203/250 [04:52<01:26, 1.85s/it]
segment: 82%|████████▏ | 204/250 [04:53<01:25, 1.85s/it]
segment: 82%|████████▏ | 205/250 [04:55<01:23, 1.85s/it]
segment: 82%|████████▏ | 206/250 [04:57<01:22, 1.87s/it]
segment: 83%|████████▎ | 207/250 [04:59<01:20, 1.86s/it]
segment: 83%|████████▎ | 208/250 [05:01<01:18, 1.86s/it]
segment: 84%|████████▎ | 209/250 [05:03<01:16, 1.86s/it]
segment: 84%|████████▍ | 210/250 [05:05<01:15, 1.88s/it]
segment: 84%|████████▍ | 211/250 [05:06<01:12, 1.87s/it]
segment: 85%|████████▍ | 212/250 [05:08<01:10, 1.86s/it]
segment: 85%|████████▌ | 213/250 [05:10<01:08, 1.85s/it]
segment: 86%|████████▌ | 214/250 [05:12<01:06, 1.86s/it]
segment: 86%|████████▌ | 215/250 [05:14<01:04, 1.85s/it]
segment: 86%|████████▋ | 216/250 [05:16<01:02, 1.85s/it]
segment: 87%|████████▋ | 217/250 [05:18<01:01, 1.85s/it]
segment: 87%|████████▋ | 218/250 [05:19<00:59, 1.86s/it]
segment: 88%|████████▊ | 219/250 [05:21<00:57, 1.85s/it]
segment: 88%|████████▊ | 220/250 [05:23<00:55, 1.85s/it]
segment: 88%|████████▊ | 221/250 [05:25<00:53, 1.85s/it]
segment: 89%|████████▉ | 222/250 [05:27<00:51, 1.85s/it]
segment: 89%|████████▉ | 223/250 [05:29<00:49, 1.85s/it]
segment: 90%|████████▉ | 224/250 [05:31<00:48, 1.85s/it]
segment: 90%|█████████ | 225/250 [05:32<00:46, 1.84s/it]
segment: 90%|█████████ | 226/250 [05:34<00:44, 1.84s/it]
segment: 91%|█████████ | 227/250 [05:36<00:42, 1.84s/it]
segment: 91%|█████████ | 228/250 [05:38<00:40, 1.85s/it]
segment: 92%|█████████▏| 229/250 [05:40<00:38, 1.85s/it]
segment: 92%|█████████▏| 230/250 [05:42<00:36, 1.84s/it]
segment: 92%|█████████▏| 231/250 [05:43<00:34, 1.84s/it]
segment: 93%|█████████▎| 232/250 [05:45<00:33, 1.84s/it]
segment: 93%|█████████▎| 233/250 [05:47<00:31, 1.85s/it]
segment: 94%|█████████▎| 234/250 [05:49<00:29, 1.86s/it]
segment: 94%|█████████▍| 235/250 [05:51<00:28, 1.88s/it]
segment: 94%|█████████▍| 236/250 [05:53<00:26, 1.87s/it]
segment: 95%|█████████▍| 237/250 [05:56<00:30, 2.35s/it]
segment: 95%|█████████▌| 238/250 [05:58<00:26, 2.20s/it]
segment: 96%|█████████▌| 239/250 [06:00<00:22, 2.09s/it]
segment: 96%|█████████▌| 240/250 [06:02<00:20, 2.01s/it]
segment: 96%|█████████▋| 241/250 [06:04<00:17, 1.96s/it]
segment: 97%|█████████▋| 242/250 [06:05<00:15, 1.92s/it]
segment: 97%|█████████▋| 243/250 [06:07<00:13, 1.90s/it]
segment: 98%|█████████▊| 244/250 [06:09<00:11, 1.88s/it]
segment: 98%|█████████▊| 245/250 [06:11<00:09, 1.87s/it]
segment: 98%|█████████▊| 246/250 [06:13<00:07, 1.86s/it]
segment: 99%|█████████▉| 247/250 [06:15<00:05, 1.86s/it]
\ No newline at end of file +
segment: 0%| | 0/250 [00:00<?, ?it/s]
segment: 0%| | 1/250 [00:02<10:41, 2.58s/it]
segment: 1%| | 2/250 [00:04<08:49, 2.13s/it]
segment: 1%| | 3/250 [00:06<08:11, 1.99s/it]
segment: 2%|▏ | 4/250 [00:08<07:52, 1.92s/it]
segment: 2%|▏ | 5/250 [00:09<07:41, 1.88s/it]
segment: 2%|▏ | 6/250 [00:11<07:02, 1.73s/it]
segment: 3%|▎ | 7/250 [00:12<06:28, 1.60s/it]
segment: 3%|▎ | 8/250 [00:13<06:06, 1.52s/it]
segment: 4%|▎ | 9/250 [00:15<05:50, 1.45s/it]
segment: 4%|▍ | 10/250 [00:16<05:40, 1.42s/it]
segment: 4%|▍ | 11/250 [00:17<05:31, 1.39s/it]
segment: 5%|▍ | 12/250 [00:19<05:26, 1.37s/it]
segment: 5%|▌ | 13/250 [00:20<05:23, 1.37s/it]
segment: 6%|▌ | 14/250 [00:21<05:20, 1.36s/it]
segment: 6%|▌ | 15/250 [00:23<05:16, 1.35s/it]
segment: 6%|▋ | 16/250 [00:24<05:14, 1.34s/it]
segment: 7%|▋ | 17/250 [00:25<05:12, 1.34s/it]
segment: 7%|▋ | 18/250 [00:27<05:10, 1.34s/it]
segment: 8%|▊ | 19/250 [00:28<05:07, 1.33s/it]
segment: 8%|▊ | 20/250 [00:29<05:06, 1.33s/it]
segment: 8%|▊ | 21/250 [00:31<05:04, 1.33s/it]
segment: 9%|▉ | 22/250 [00:32<05:01, 1.32s/it]
segment: 9%|▉ | 23/250 [00:33<04:59, 1.32s/it]
segment: 10%|▉ | 24/250 [00:35<04:58, 1.32s/it]
segment: 10%|█ | 25/250 [00:36<04:57, 1.32s/it]
segment: 10%|█ | 26/250 [00:37<04:56, 1.32s/it]
segment: 11%|█ | 27/250 [00:39<04:56, 1.33s/it]
segment: 11%|█ | 28/250 [00:40<04:55, 1.33s/it]
segment: 12%|█▏ | 29/250 [00:41<04:54, 1.33s/it]
segment: 12%|█▏ | 30/250 [00:43<04:53, 1.33s/it]
segment: 12%|█▏ | 31/250 [00:44<04:51, 1.33s/it]
segment: 13%|█▎ | 32/250 [00:45<04:48, 1.32s/it]
segment: 13%|█▎ | 33/250 [00:47<04:46, 1.32s/it]
segment: 14%|█▎ | 34/250 [00:48<04:44, 1.32s/it]
segment: 14%|█▍ | 35/250 [00:49<04:43, 1.32s/it]
segment: 14%|█▍ | 36/250 [00:51<04:43, 1.32s/it]
segment: 15%|█▍ | 37/250 [00:52<04:41, 1.32s/it]
segment: 15%|█▌ | 38/250 [00:53<04:40, 1.32s/it]
segment: 16%|█▌ | 39/250 [00:55<04:39, 1.32s/it]
segment: 16%|█▌ | 40/250 [00:56<04:36, 1.32s/it]
segment: 16%|█▋ | 41/250 [00:57<04:34, 1.31s/it]
segment: 17%|█▋ | 42/250 [00:59<04:33, 1.32s/it]
segment: 17%|█▋ | 43/250 [01:00<04:32, 1.32s/it]
segment: 18%|█▊ | 44/250 [01:01<04:31, 1.32s/it]
segment: 18%|█▊ | 45/250 [01:03<04:34, 1.34s/it]
segment: 18%|█▊ | 46/250 [01:04<04:31, 1.33s/it]
segment: 19%|█▉ | 47/250 [01:05<04:27, 1.32s/it]
segment: 19%|█▉ | 48/250 [01:06<04:25, 1.32s/it]
segment: 20%|█▉ | 49/250 [01:08<04:23, 1.31s/it]
segment: 20%|██ | 50/250 [01:09<04:21, 1.31s/it]
segment: 20%|██ | 51/250 [01:10<04:21, 1.31s/it]
segment: 21%|██ | 52/250 [01:12<04:20, 1.31s/it]
segment: 21%|██ | 53/250 [01:13<04:19, 1.32s/it]
segment: 22%|██▏ | 54/250 [01:14<04:17, 1.32s/it]
segment: 22%|██▏ | 55/250 [01:16<04:16, 1.32s/it]
segment: 22%|██▏ | 56/250 [01:17<04:15, 1.32s/it]
segment: 23%|██▎ | 57/250 [01:18<04:14, 1.32s/it]
segment: 23%|██▎ | 58/250 [01:20<04:13, 1.32s/it]
segment: 24%|██▎ | 59/250 [01:21<04:11, 1.32s/it]
segment: 24%|██▍ | 60/250 [01:22<04:10, 1.32s/it]
segment: 24%|██▍ | 61/250 [01:24<04:08, 1.32s/it]
segment: 25%|██▍ | 62/250 [01:25<04:07, 1.32s/it]
segment: 25%|██▌ | 63/250 [01:26<04:06, 1.32s/it]
segment: 26%|██▌ | 64/250 [01:27<04:04, 1.31s/it]
segment: 26%|██▌ | 65/250 [01:29<04:03, 1.32s/it]
segment: 26%|██▋ | 66/250 [01:30<04:01, 1.32s/it]
segment: 27%|██▋ | 67/250 [01:31<04:01, 1.32s/it]
segment: 27%|██▋ | 68/250 [01:33<03:58, 1.31s/it]
segment: 28%|██▊ | 69/250 [01:34<03:57, 1.31s/it]
segment: 28%|██▊ | 70/250 [01:35<03:56, 1.31s/it]
segment: 28%|██▊ | 71/250 [01:37<03:56, 1.32s/it]
segment: 29%|██▉ | 72/250 [01:38<03:54, 1.32s/it]
segment: 29%|██▉ | 73/250 [01:39<03:52, 1.31s/it]
segment: 30%|██▉ | 74/250 [01:41<03:52, 1.32s/it]
segment: 30%|███ | 75/250 [01:42<03:51, 1.32s/it]
segment: 30%|███ | 76/250 [01:43<03:49, 1.32s/it]
segment: 31%|███ | 77/250 [01:45<03:47, 1.32s/it]
segment: 31%|███ | 78/250 [01:46<03:47, 1.32s/it]
segment: 32%|███▏ | 79/250 [01:47<03:44, 1.31s/it]
segment: 32%|███▏ | 80/250 [01:49<03:43, 1.32s/it]
segment: 32%|███▏ | 81/250 [01:50<03:42, 1.32s/it]
segment: 33%|███▎ | 82/250 [01:51<03:41, 1.32s/it]
segment: 33%|███▎ | 83/250 [01:53<03:39, 1.31s/it]
segment: 34%|███▎ | 84/250 [01:54<03:37, 1.31s/it]
segment: 34%|███▍ | 85/250 [01:55<03:37, 1.32s/it]
segment: 34%|███▍ | 86/250 [01:56<03:35, 1.31s/it]
segment: 35%|███▍ | 87/250 [01:58<03:34, 1.31s/it]
segment: 35%|███▌ | 88/250 [01:59<03:33, 1.32s/it]
segment: 36%|███▌ | 89/250 [02:00<03:32, 1.32s/it]
segment: 36%|███▌ | 90/250 [02:02<03:30, 1.32s/it]
segment: 36%|███▋ | 91/250 [02:03<03:30, 1.32s/it]
segment: 37%|███▋ | 92/250 [02:04<03:29, 1.32s/it]
segment: 37%|███▋ | 93/250 [02:06<03:28, 1.32s/it]
segment: 38%|███▊ | 94/250 [02:07<03:26, 1.33s/it]
segment: 38%|███▊ | 95/250 [02:08<03:24, 1.32s/it]
segment: 38%|███▊ | 96/250 [02:10<03:23, 1.32s/it]
segment: 39%|███▉ | 97/250 [02:11<03:21, 1.32s/it]
segment: 39%|███▉ | 98/250 [02:12<03:20, 1.32s/it]
segment: 40%|███▉ | 99/250 [02:14<03:18, 1.32s/it]
segment: 40%|████ | 100/250 [02:15<03:16, 1.31s/it]
segment: 40%|████ | 101/250 [02:16<03:15, 1.31s/it]
segment: 41%|████ | 102/250 [02:18<03:14, 1.31s/it]
segment: 41%|████ | 103/250 [02:19<03:13, 1.31s/it]
segment: 42%|████▏ | 104/250 [02:20<03:11, 1.31s/it]
segment: 42%|████▏ | 105/250 [02:21<03:10, 1.31s/it]
segment: 42%|████▏ | 106/250 [02:23<03:09, 1.32s/it]
segment: 43%|████▎ | 107/250 [02:24<03:08, 1.32s/it]
segment: 43%|████▎ | 108/250 [02:25<03:06, 1.31s/it]
segment: 44%|████▎ | 109/250 [02:27<03:04, 1.31s/it]
segment: 44%|████▍ | 110/250 [02:28<03:03, 1.31s/it]
segment: 44%|████▍ | 111/250 [02:29<03:03, 1.32s/it]
segment: 45%|████▍ | 112/250 [02:31<03:02, 1.32s/it]
segment: 45%|████▌ | 113/250 [02:32<03:00, 1.32s/it]
segment: 46%|████▌ | 114/250 [02:33<02:59, 1.32s/it]
segment: 46%|████▌ | 115/250 [02:35<02:57, 1.31s/it]
segment: 46%|████▋ | 116/250 [02:36<02:56, 1.32s/it]
segment: 47%|████▋ | 117/250 [02:37<02:55, 1.32s/it]
segment: 47%|████▋ | 118/250 [02:39<02:54, 1.32s/it]
segment: 48%|████▊ | 119/250 [02:40<02:52, 1.32s/it]
segment: 48%|████▊ | 120/250 [02:41<02:50, 1.31s/it]
segment: 48%|████▊ | 121/250 [02:43<02:48, 1.31s/it]
segment: 49%|████▉ | 122/250 [02:44<02:47, 1.31s/it]
segment: 49%|████▉ | 123/250 [02:45<02:46, 1.31s/it]
segment: 50%|████▉ | 124/250 [02:46<02:45, 1.32s/it]
segment: 50%|█████ | 125/250 [02:48<02:43, 1.31s/it]
segment: 50%|█████ | 126/250 [02:49<02:42, 1.31s/it]
segment: 51%|█████ | 127/250 [02:50<02:40, 1.31s/it]
segment: 51%|█████ | 128/250 [02:52<02:39, 1.31s/it]
segment: 52%|█████▏ | 129/250 [02:53<02:38, 1.31s/it]
segment: 52%|█████▏ | 130/250 [02:54<02:37, 1.31s/it]
segment: 52%|█████▏ | 131/250 [02:56<02:36, 1.32s/it]
segment: 53%|█████▎ | 132/250 [02:57<02:35, 1.32s/it]
segment: 53%|█████▎ | 133/250 [02:58<02:33, 1.31s/it]
segment: 54%|█████▎ | 134/250 [03:00<02:31, 1.31s/it]
segment: 54%|█████▍ | 135/250 [03:01<02:30, 1.31s/it]
segment: 54%|█████▍ | 136/250 [03:02<02:28, 1.31s/it]
segment: 55%|█████▍ | 137/250 [03:03<02:28, 1.31s/it]
segment: 55%|█████▌ | 138/250 [03:05<02:26, 1.31s/it]
segment: 56%|█████▌ | 139/250 [03:06<02:25, 1.31s/it]
segment: 56%|█████▌ | 140/250 [03:07<02:23, 1.31s/it]
segment: 56%|█████▋ | 141/250 [03:09<02:22, 1.31s/it]
segment: 57%|█████▋ | 142/250 [03:10<02:21, 1.31s/it]
segment: 57%|█████▋ | 143/250 [03:11<02:20, 1.31s/it]
segment: 58%|█████▊ | 144/250 [03:13<02:19, 1.32s/it]
segment: 58%|█████▊ | 145/250 [03:14<02:18, 1.32s/it]
segment: 58%|█████▊ | 146/250 [03:15<02:18, 1.33s/it]
segment: 59%|█████▉ | 147/250 [03:17<02:15, 1.31s/it]
segment: 59%|█████▉ | 148/250 [03:18<02:13, 1.31s/it]
segment: 60%|█████▉ | 149/250 [03:19<02:12, 1.31s/it]
segment: 60%|██████ | 150/250 [03:21<02:11, 1.32s/it]
segment: 60%|██████ | 151/250 [03:22<02:10, 1.32s/it]
segment: 61%|██████ | 152/250 [03:23<02:09, 1.32s/it]
segment: 61%|██████ | 153/250 [03:25<02:08, 1.32s/it]
segment: 62%|██████▏ | 154/250 [03:26<02:07, 1.33s/it]
segment: 62%|██████▏ | 155/250 [03:27<02:05, 1.32s/it]
segment: 62%|██████▏ | 156/250 [03:29<02:04, 1.33s/it]
segment: 63%|██████▎ | 157/250 [03:30<02:02, 1.32s/it]
segment: 63%|██████▎ | 158/250 [03:31<02:01, 1.32s/it]
segment: 64%|██████▎ | 159/250 [03:33<02:02, 1.35s/it]
segment: 64%|██████▍ | 160/250 [03:34<02:00, 1.34s/it]
segment: 64%|██████▍ | 161/250 [03:35<01:58, 1.34s/it]
segment: 65%|██████▍ | 162/250 [03:37<01:57, 1.33s/it]
segment: 65%|██████▌ | 163/250 [03:38<01:55, 1.33s/it]
segment: 66%|██████▌ | 164/250 [03:39<02:00, 1.40s/it]
segment: 66%|██████▌ | 165/250 [03:41<02:09, 1.53s/it]
segment: 66%|██████▋ | 166/250 [03:43<02:16, 1.62s/it]
segment: 67%|██████▋ | 167/250 [03:45<02:19, 1.68s/it]
segment: 67%|██████▋ | 168/250 [03:47<02:21, 1.73s/it]
segment: 68%|██████▊ | 169/250 [03:49<02:22, 1.76s/it]
segment: 68%|██████▊ | 170/250 [03:50<02:22, 1.79s/it]
segment: 68%|██████▊ | 171/250 [03:52<02:22, 1.80s/it]
segment: 69%|██████▉ | 172/250 [03:54<02:21, 1.82s/it]
segment: 69%|██████▉ | 173/250 [03:56<02:20, 1.82s/it]
segment: 70%|██████▉ | 174/250 [03:58<02:19, 1.83s/it]
segment: 70%|███████ | 175/250 [04:00<02:19, 1.86s/it]
segment: 70%|███████ | 176/250 [04:02<02:17, 1.85s/it]
segment: 71%|███████ | 177/250 [04:03<02:15, 1.85s/it]
segment: 71%|███████ | 178/250 [04:05<02:13, 1.86s/it]
segment: 72%|███████▏ | 179/250 [04:07<02:11, 1.86s/it]
segment: 72%|███████▏ | 180/250 [04:09<02:09, 1.85s/it]
segment: 72%|███████▏ | 181/250 [04:11<02:07, 1.84s/it]
segment: 73%|███████▎ | 182/250 [04:13<02:05, 1.84s/it]
segment: 73%|███████▎ | 183/250 [04:15<02:03, 1.84s/it]
segment: 74%|███████▎ | 184/250 [04:16<02:01, 1.84s/it]
segment: 74%|███████▍ | 185/250 [04:18<01:59, 1.84s/it]
segment: 74%|███████▍ | 186/250 [04:20<01:58, 1.85s/it]
segment: 75%|███████▍ | 187/250 [04:22<01:56, 1.85s/it]
segment: 75%|███████▌ | 188/250 [04:24<01:54, 1.85s/it]
segment: 76%|███████▌ | 189/250 [04:26<01:52, 1.85s/it]
segment: 76%|███████▌ | 190/250 [04:27<01:50, 1.85s/it]
segment: 76%|███████▋ | 191/250 [04:29<01:49, 1.86s/it]
segment: 77%|███████▋ | 192/250 [04:31<01:47, 1.86s/it]
segment: 77%|███████▋ | 193/250 [04:33<01:45, 1.85s/it]
segment: 78%|███████▊ | 194/250 [04:35<01:43, 1.85s/it]
segment: 78%|███████▊ | 195/250 [04:37<01:41, 1.85s/it]
segment: 78%|███████▊ | 196/250 [04:39<01:40, 1.86s/it]
segment: 79%|███████▉ | 197/250 [04:40<01:38, 1.86s/it]
segment: 79%|███████▉ | 198/250 [04:42<01:36, 1.85s/it]
segment: 80%|███████▉ | 199/250 [04:44<01:34, 1.85s/it]
segment: 80%|████████ | 200/250 [04:46<01:32, 1.85s/it]
segment: 80%|████████ | 201/250 [04:48<01:30, 1.85s/it]
segment: 81%|████████ | 202/250 [04:50<01:28, 1.85s/it]
segment: 81%|████████ | 203/250 [04:52<01:26, 1.85s/it]
segment: 82%|████████▏ | 204/250 [04:53<01:25, 1.85s/it]
segment: 82%|████████▏ | 205/250 [04:55<01:23, 1.85s/it]
segment: 82%|████████▏ | 206/250 [04:57<01:22, 1.87s/it]
segment: 83%|████████▎ | 207/250 [04:59<01:20, 1.86s/it]
segment: 83%|████████▎ | 208/250 [05:01<01:18, 1.86s/it]
segment: 84%|████████▎ | 209/250 [05:03<01:16, 1.86s/it]
segment: 84%|████████▍ | 210/250 [05:05<01:15, 1.88s/it]
segment: 84%|████████▍ | 211/250 [05:06<01:12, 1.87s/it]
segment: 85%|████████▍ | 212/250 [05:08<01:10, 1.86s/it]
segment: 85%|████████▌ | 213/250 [05:10<01:08, 1.85s/it]
segment: 86%|████████▌ | 214/250 [05:12<01:06, 1.86s/it]
segment: 86%|████████▌ | 215/250 [05:14<01:04, 1.85s/it]
segment: 86%|████████▋ | 216/250 [05:16<01:02, 1.85s/it]
segment: 87%|████████▋ | 217/250 [05:18<01:01, 1.85s/it]
segment: 87%|████████▋ | 218/250 [05:19<00:59, 1.86s/it]
segment: 88%|████████▊ | 219/250 [05:21<00:57, 1.85s/it]
segment: 88%|████████▊ | 220/250 [05:23<00:55, 1.85s/it]
segment: 88%|████████▊ | 221/250 [05:25<00:53, 1.85s/it]
segment: 89%|████████▉ | 222/250 [05:27<00:51, 1.85s/it]
segment: 89%|████████▉ | 223/250 [05:29<00:49, 1.85s/it]
segment: 90%|████████▉ | 224/250 [05:31<00:48, 1.85s/it]
segment: 90%|█████████ | 225/250 [05:32<00:46, 1.84s/it]
segment: 90%|█████████ | 226/250 [05:34<00:44, 1.84s/it]
segment: 91%|█████████ | 227/250 [05:36<00:42, 1.84s/it]
segment: 91%|█████████ | 228/250 [05:38<00:40, 1.85s/it]
segment: 92%|█████████▏| 229/250 [05:40<00:38, 1.85s/it]
segment: 92%|█████████▏| 230/250 [05:42<00:36, 1.84s/it]
segment: 92%|█████████▏| 231/250 [05:43<00:34, 1.84s/it]
segment: 93%|█████████▎| 232/250 [05:45<00:33, 1.84s/it]
segment: 93%|█████████▎| 233/250 [05:47<00:31, 1.85s/it]
segment: 94%|█████████▎| 234/250 [05:49<00:29, 1.86s/it]
segment: 94%|█████████▍| 235/250 [05:51<00:28, 1.88s/it]
segment: 94%|█████████▍| 236/250 [05:53<00:26, 1.87s/it]
segment: 95%|█████████▍| 237/250 [05:56<00:30, 2.35s/it]
segment: 95%|█████████▌| 238/250 [05:58<00:26, 2.20s/it]
segment: 96%|█████████▌| 239/250 [06:00<00:22, 2.09s/it]
segment: 96%|█████████▌| 240/250 [06:02<00:20, 2.01s/it]
segment: 96%|█████████▋| 241/250 [06:04<00:17, 1.96s/it]
segment: 97%|█████████▋| 242/250 [06:05<00:15, 1.92s/it]
segment: 97%|█████████▋| 243/250 [06:07<00:13, 1.90s/it]
segment: 98%|█████████▊| 244/250 [06:09<00:11, 1.88s/it]
segment: 98%|█████████▊| 245/250 [06:11<00:09, 1.87s/it]
segment: 98%|█████████▊| 246/250 [06:13<00:07, 1.86s/it]
segment: 99%|█████████▉| 247/250 [06:15<00:05, 1.86s/it]
segment: 99%|█████████▉| 248/250 [06:16<00:03, 1.86s/it]
segment: 100%|█████████▉| 249/250 [06:18<00:01, 1.85s/it]
segment: 100%|██████████| 250/250 [06:20<00:00, 1.85s/it]
segment: 100%|██████████| 250/250 [06:20<00:00, 1.52s/it] +{"nodes": 2000, "mean_segments": 6.0, "min_segments": 6} +Wrote artifacts/vg_5k/nobj_base_gpu.pt diff --git a/logs/obj_large_gpu.log b/logs/obj_large_gpu.log new file mode 100644 index 0000000..0ba1ad7 --- /dev/null +++ b/logs/obj_large_gpu.log @@ -0,0 +1,3 @@ +Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`. +`torch_dtype` is deprecated! Use `dtype` instead! +
segment: 0%| | 0/250 [00:00<?, ?it/s]
segment: 0%| | 1/250 [00:03<14:05, 3.39s/it]
segment: 1%| | 2/250 [00:06<12:26, 3.01s/it]
segment: 1%| | 3/250 [00:08<11:50, 2.88s/it]
segment: 2%|▏ | 4/250 [00:11<11:34, 2.82s/it]
segment: 2%|▏ | 5/250 [00:14<11:25, 2.80s/it]
segment: 2%|▏ | 6/250 [00:17<11:16, 2.77s/it]
segment: 3%|▎ | 7/250 [00:19<11:09, 2.76s/it]
segment: 3%|▎ | 8/250 [00:22<11:08, 2.76s/it]
segment: 4%|▎ | 9/250 [00:25<11:02, 2.75s/it]
segment: 4%|▍ | 10/250 [00:28<10:59, 2.75s/it]
segment: 4%|▍ | 11/250 [00:30<10:55, 2.74s/it]
segment: 5%|▍ | 12/250 [00:33<10:52, 2.74s/it]
segment: 5%|▌ | 13/250 [00:36<10:49, 2.74s/it]
segment: 6%|▌ | 14/250 [00:38<10:47, 2.74s/it]
segment: 6%|▌ | 15/250 [00:41<10:43, 2.74s/it]
segment: 6%|▋ | 16/250 [00:44<10:40, 2.74s/it]
segment: 7%|▋ | 17/250 [00:47<10:39, 2.74s/it]
segment: 7%|▋ | 18/250 [00:49<10:35, 2.74s/it]
segment: 8%|▊ | 19/250 [00:52<10:31, 2.73s/it]
segment: 8%|▊ | 20/250 [00:55<10:29, 2.74s/it]
segment: 8%|▊ | 21/250 [00:58<10:26, 2.74s/it]
segment: 9%|▉ | 22/250 [01:00<10:24, 2.74s/it]
segment: 9%|▉ | 23/250 [01:03<10:21, 2.74s/it]
segment: 10%|▉ | 24/250 [01:06<10:20, 2.75s/it]
segment: 10%|█ | 25/250 [01:09<10:16, 2.74s/it]
segment: 10%|█ | 26/250 [01:11<10:11, 2.73s/it]
segment: 11%|█ | 27/250 [01:14<10:09, 2.73s/it]
segment: 11%|█ | 28/250 [01:17<10:07, 2.74s/it]
segment: 12%|█▏ | 29/250 [01:20<10:05, 2.74s/it]
segment: 12%|█▏ | 30/250 [01:22<10:02, 2.74s/it]
segment: 12%|█▏ | 31/250 [01:25<10:00, 2.74s/it]
segment: 13%|█▎ | 32/250 [01:28<09:56, 2.74s/it]
segment: 13%|█▎ | 33/250 [01:30<09:53, 2.74s/it]
segment: 14%|█▎ | 34/250 [01:33<09:50, 2.73s/it]
segment: 14%|█▍ | 35/250 [01:36<09:47, 2.73s/it]
segment: 14%|█▍ | 36/250 [01:39<10:36, 2.97s/it]
segment: 15%|█▍ | 37/250 [01:43<11:11, 3.15s/it]
segment: 15%|█▌ | 38/250 [01:47<11:35, 3.28s/it]
segment: 16%|█▌ | 39/250 [01:50<11:50, 3.37s/it]
segment: 16%|█▌ | 40/250 [01:54<11:58, 3.42s/it]
segment: 16%|█▋ | 41/250 [01:57<12:03, 3.46s/it]
segment: 17%|█▋ | 42/250 [02:01<12:07, 3.50s/it]
segment: 17%|█▋ | 43/250 [02:04<12:06, 3.51s/it]
segment: 18%|█▊ | 44/250 [02:08<12:05, 3.52s/it]
segment: 18%|█▊ | 45/250 [02:12<12:05, 3.54s/it]
segment: 18%|█▊ | 46/250 [02:15<12:00, 3.53s/it]
segment: 19%|█▉ | 47/250 [02:19<11:58, 3.54s/it]
segment: 19%|█▉ | 48/250 [02:22<11:56, 3.55s/it]
segment: 20%|█▉ | 49/250 [02:26<11:54, 3.55s/it]
segment: 20%|██ | 50/250 [02:29<11:51, 3.56s/it]
\ No newline at end of file diff --git a/logs/rank_gate.log b/logs/rank_gate.log new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/logs/rank_gate.log diff --git a/logs/rho_full_width.log b/logs/rho_full_width.log index e69de29..f0255ac 100644 --- a/logs/rho_full_width.log +++ b/logs/rho_full_width.log @@ -0,0 +1 @@ +noise=0.0 rho=0.928 shared= 21.0 recovery=0.961 diff --git a/worldalign/rank_gate.py b/worldalign/rank_gate.py new file mode 100644 index 0000000..d55f12e --- /dev/null +++ b/worldalign/rank_gate.py @@ -0,0 +1,138 @@ +"""Is low-rank failure an information limit or a solver limit? + +The rank ladder is the result that retires the correlation gate, so it has to +survive the objection the project has fallen for three times before: a limit +that looks intrinsic and turns out to belong to the search operator. At rank +eight the composed solver reaches 13%, and that alone does not say whether the +truth is unreachable or merely unreached. + +The gate answers it. If the deepest state a strong searcher finds is deeper +than the truth, the truth is not the optimum and no solver of any cost +recovers it -- the width really is an information limit. If the truth is +deepest and the solver still misses it, the ladder measures search difficulty +instead and the conclusion has to be rewritten. +""" + +from __future__ import annotations + +import argparse +import json + +import numpy as np +import torch + +from .common import write_json +from .spectral_match import grampa +from .synth_fast_gate import ClosedFormEnergy, all_swaps, steepest_descent +from .synth_triangle_gate import standardized + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument("--fields", default="artifacts/synth_v1/fields_tier0_ws_256.pt") + parser.add_argument("--ranks", type=int, nargs="+", default=[4, 8, 16, 256]) + parser.add_argument("--restarts", type=int, default=60) + parser.add_argument("--trials", type=int, default=3) + parser.add_argument("--device", default="cuda:3") + parser.add_argument("--output", default="artifacts/synth_v1/rank_gate.json") + return parser.parse_args() + + +def offdiagonal(matrix: np.ndarray) -> np.ndarray: + return matrix[~np.eye(len(matrix), dtype=bool)] + + +def normalise(matrix: np.ndarray) -> np.ndarray: + values = offdiagonal(matrix) + out = (matrix - values.mean()) / values.std() + np.fill_diagonal(out, 0.0) + return out + + +def truncate(matrix: np.ndarray, rank: int) -> np.ndarray: + symmetric = (matrix + matrix.T) / 2.0 + values, vectors = np.linalg.eigh(symmetric) + order = np.argsort(np.abs(values))[::-1][:rank] + return (vectors[:, order] * values[order]) @ vectors[:, order].T + + +def main() -> None: + args = parse_args() + state = torch.load(args.fields, map_location="cpu", weights_only=False) + visual_full = state["visual_field"].double().numpy() + text_full = state["text_field"].double().numpy() + size = len(visual_full) + device = torch.device(args.device) + swaps = all_swaps(size, device) + + rows = [] + for rank in args.ranks: + visual = normalise(truncate(visual_full, rank) if rank < size else visual_full) + text = normalise(truncate(text_full, rank) if rank < size else text_full) + verdicts, gaps, accuracies = [], [], [] + for trial in range(args.trials): + generator = np.random.default_rng(trial) + hidden = generator.permutation(size) + shuffled = text[np.ix_(hidden, hidden)] + energy = ClosedFormEnergy( + standardized(torch.from_numpy(shuffled).to(device)).float(), + standardized(torch.from_numpy(visual).to(device)).float(), + 1.0, 1.0, 256, + ) + truth = torch.from_numpy(np.argsort(hidden).copy()).to(device) + truth_energy = float(energy.energy(truth[None])[0]) + + starts = [torch.from_numpy(grampa(visual, shuffled, 1.0).copy()).to(device)] + starts += [ + torch.from_numpy(generator.permutation(size).copy()).to(device) + for _ in range(args.restarts) + ] + best_energy, best_accuracy = np.inf, 0.0 + for start in starts: + final, _ = steepest_descent(energy, start, swaps, 4000) + value = float(energy.energy(final[None])[0]) + if value < best_energy: + best_energy = value + best_accuracy = float( + (hidden[final.cpu().numpy()] == np.arange(size)).mean() + ) + verdicts.append(truth_energy <= best_energy + 1e-6) + gaps.append(best_energy - truth_energy) + accuracies.append(best_accuracy) + + row = { + "rank": rank, + "truth_is_deepest": f"{sum(verdicts)}/{args.trials}", + "mean_energy_gap_best_minus_truth": float(np.mean(gaps)), + "best_accuracy": float(np.mean(accuracies)), + "reading": ( + "information limit" if sum(verdicts) == 0 else + "truth is optimal; failure is search" if sum(verdicts) == args.trials + else "mixed" + ), + } + rows.append(row) + print( + f"rank={rank:<5} truth deepest {row['truth_is_deepest']} " + f"gap(best-truth)={row['mean_energy_gap_best_minus_truth']:+.4f} " + f"best acc={row['best_accuracy']:.3f} -> {row['reading']}", + flush=True, + ) + + summary = { + "protocol": ( + "Spectral start plus random restarts, each run to a local optimum " + "under exact steepest descent. A negative gap means the searcher " + "found a state deeper than the truth, so the truth is not the " + "optimum and the limit is information rather than search." + ), + "size": size, + "restarts": args.restarts, + "rows": rows, + } + print(json.dumps({"done": True})) + write_json(args.output, summary) + + +if __name__ == "__main__": + main() |
