fix: let admin placement recover joined nodes
This commit is contained in:
@@ -1534,15 +1534,15 @@ def _force_model_load_locked(server: "_TrackerHTTPServer", model_key: str) -> di
|
|||||||
if preset is None or not preset.get("hf_repo"):
|
if preset is None or not preset.get("hf_repo"):
|
||||||
return None
|
return None
|
||||||
start, end = _preset_layer_bounds(preset)
|
start, end = _preset_layer_bounds(preset)
|
||||||
|
# An explicit admin eviction is permitted to recover a stuck/loading node
|
||||||
|
# and to use the preset default precision. It must only avoid a node that
|
||||||
|
# already has another assignment in flight.
|
||||||
candidates = [node for node in server.registry.values()
|
candidates = [node for node in server.registry.values()
|
||||||
if node.status == "ready" and node.pending_new_assignment is None
|
if node.pending_new_assignment is None]
|
||||||
and _has_usable_quantization(node)]
|
|
||||||
if not candidates:
|
if not candidates:
|
||||||
return None
|
return None
|
||||||
node = max(candidates, key=lambda item: item.benchmark_tokens_per_sec)
|
node = max(candidates, key=lambda item: item.benchmark_tokens_per_sec)
|
||||||
shard_end = min(end, start + min(_node_layer_capacity(node, preset), end - start + 1) - 1)
|
shard_end = min(end, start + max(1, min(_node_layer_capacity(node, preset), end - start + 1)) - 1)
|
||||||
if shard_end < start:
|
|
||||||
return None
|
|
||||||
quantization = _node_quantization(node, preset)
|
quantization = _node_quantization(node, preset)
|
||||||
directive = _load_directive(node, str(preset["hf_repo"]), start, shard_end, quantization)
|
directive = _load_directive(node, str(preset["hf_repo"]), start, shard_end, quantization)
|
||||||
replaced = node.hf_repo or node.model
|
replaced = node.hf_repo or node.model
|
||||||
|
|||||||
Reference in New Issue
Block a user