Fix OOM when updating expert locations (#6660)

This commit is contained in:
fzyzcjy
2025-05-27 09:59:53 -07:00
committed by GitHub
parent 183d9f969c
commit 447be24228
2 changed files with 27 additions and 17 deletions
@@ -27,21 +27,30 @@ from sglang.srt.managers.expert_location import (
logger = logging.getLogger(__name__)
def update_expert_location(
routed_experts_weights_of_layer: Dict[int, List[torch.Tensor]],
new_expert_location_metadata: ExpertLocationMetadata,
nnodes: int,
rank: int,
):
old_expert_location_metadata = get_global_expert_location_metadata()
_update_expert_weights(
routed_experts_weights_of_layer,
old_expert_location_metadata,
new_expert_location_metadata,
nnodes,
rank,
)
old_expert_location_metadata.update(new_expert_location_metadata)
class ExpertLocationUpdater:
def __init__(self):
self._first_execution = True
def update(
self,
routed_experts_weights_of_layer: Dict[int, List[torch.Tensor]],
new_expert_location_metadata: ExpertLocationMetadata,
nnodes: int,
rank: int,
):
if self._first_execution:
self._first_execution = False
torch.cuda.empty_cache()
old_expert_location_metadata = get_global_expert_location_metadata()
_update_expert_weights(
routed_experts_weights_of_layer,
old_expert_location_metadata,
new_expert_location_metadata,
nnodes,
rank,
)
old_expert_location_metadata.update(new_expert_location_metadata)
def _update_expert_weights(