md rework. new code
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user