md rework. new code

This commit is contained in:
Dobromir Popov
2026-07-08 17:59:08 +02:00
parent 194fa1d926
commit e06969fcb5
5 changed files with 563 additions and 582 deletions

View File

@@ -1275,16 +1275,23 @@ def _deployment_summary(nodes: list[_NodeEntry], preset: dict | None) -> dict:
}
def _max_layers_for_memory(memory_mb: int, total_layers: int, preset: dict | None = None) -> int:
def _max_layers_for_memory(
memory_mb: int,
total_layers: int,
preset: dict | None = None,
*,
device: str | None = None,
) -> int:
if total_layers <= 0:
return 0
if memory_mb <= 0:
return max(1, total_layers // 2)
memory_bytes = memory_mb * 1024 * 1024
bytes_per_layer = next(iter(_preset_bytes_per_layer(preset).values())) if preset is not None else 30 * 1024 * 1024
safety_fraction = 0.55 if device == "cpu" else 0.8
return min(
total_layers,
max(1, int((memory_bytes * 0.8) // bytes_per_layer)),
max(1, int((memory_bytes * safety_fraction) // bytes_per_layer)),
)
@@ -5273,7 +5280,7 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
required_start, required_end = _preset_layer_bounds(preset)
total_l = required_end - required_start + 1
memory_mb = vram_mb if (device == "cuda" and vram_mb > 0) else ram_mb
max_layers = _max_layers_for_memory(memory_mb, total_l, preset)
max_layers = _max_layers_for_memory(memory_mb, total_l, preset, device=device)
shard_start = required_start
shard_end = min(required_end, shard_start + max_layers - 1)
self._send_json(200, {
@@ -5373,11 +5380,11 @@ class _TrackerHandler(http.server.BaseHTTPRequestHandler):
memory_mb = vram_mb if (device == "cuda" and vram_mb > 0) else ram_mb
resolved_name, best_preset = _resolve_model_preset(server.model_presets, str(best_repo))
if memory_mb > 0:
max_layers = _max_layers_for_memory(memory_mb, total_l, best_preset)
max_layers = _max_layers_for_memory(memory_mb, total_l, best_preset, device=device)
elif device == "cuda" and vram_mb >= 8192:
max_layers = total_l
else:
max_layers = _max_layers_for_memory(memory_mb, total_l, best_preset)
max_layers = _max_layers_for_memory(memory_mb, total_l, best_preset, device=device)
shard_start = best_gap_start
shard_end = min(total_l - 1, shard_start + max_layers - 1)