Extend H3 spatial fallback ladder

This commit is contained in:
2026-09-04 09:22:35 +00:00
parent 5b52793fad
commit fbfbe4ef5a
2 changed files with 19 additions and 3 deletions
+3 -3
View File
@@ -506,8 +506,8 @@ def _shrink_model_tile_param(param):
next_param = dict(param) next_param = dict(param)
mode = str(next_param.get("tile_size_mode") or "specific_size") mode = str(next_param.get("tile_size_mode") or "specific_size")
if mode == "rows_cols": if mode == "rows_cols":
rows = min(16, max(1, int(next_param.get("grid_rows", 2) or 2) * 2)) rows = min(32, max(1, int(next_param.get("grid_rows", 2) or 2) * 2))
cols = min(16, max(1, int(next_param.get("grid_cols", 2) or 2) * 2)) cols = min(32, max(1, int(next_param.get("grid_cols", 2) or 2) * 2))
if rows == int(next_param.get("grid_rows", 2) or 2) and cols == int(next_param.get("grid_cols", 2) or 2): if rows == int(next_param.get("grid_rows", 2) or 2) and cols == int(next_param.get("grid_cols", 2) or 2):
return None return None
next_param["grid_rows"] = rows next_param["grid_rows"] = rows
@@ -527,7 +527,7 @@ def _shrink_model_tile_param(param):
# Jump straight from a coarse specific-size tile to a conservative 4x4 # Jump straight from a coarse specific-size tile to a conservative 4x4
# equal-grid split. That usually cuts peak VRAM much harder than halving # equal-grid split. That usually cuts peak VRAM much harder than halving
# the tile size through several retries, and it keeps the later retry # the tile size through several retries, and it keeps the later retry
# ladder simple: 4x4 -> 8x8 -> 16x16. # ladder simple: 4x4 -> 8x8 -> 16x16 -> 32x32.
next_param["tile_size_mode"] = "rows_cols" next_param["tile_size_mode"] = "rows_cols"
next_param["grid_rows"] = 4 next_param["grid_rows"] = 4
next_param["grid_cols"] = 4 next_param["grid_cols"] = 4
+16
View File
@@ -1202,6 +1202,22 @@ class DumasH3LongVideosHelperTests(unittest.TestCase):
self.assertEqual(smaller["fade_height"], 0) self.assertEqual(smaller["fade_height"], 0)
self.assertEqual(smaller["min_tile_size"], 32) self.assertEqual(smaller["min_tile_size"], 32)
def test_shrink_model_tile_param_rows_cols_can_reach_thirty_two(self):
latent = importlib.import_module("dumas_h3_latent_upscale")
smaller = latent._shrink_model_tile_param({
"tile_size_mode": "rows_cols",
"grid_rows": 16,
"grid_cols": 16,
"spatial_w_overlap": 0,
"spatial_h_overlap": 0,
"fade_width": 0,
"fade_height": 0,
"min_tile_size": 32,
})
self.assertIsNotNone(smaller)
self.assertEqual(smaller["grid_rows"], 32)
self.assertEqual(smaller["grid_cols"], 32)
def test_temporal_segments_split_long_sequences(self): def test_temporal_segments_split_long_sequences(self):
latent = importlib.import_module("dumas_h3_latent_upscale") latent = importlib.import_module("dumas_h3_latent_upscale")
bounds = latent._temporal_segments(36, 85, 17) bounds = latent._temporal_segments(36, 85, 17)