vlm: fix shared memory bug of deep copy mm_items (#24231)

This commit is contained in:
mingyue300
2026-05-20 11:06:51 +08:00
committed by GitHub
parent a8c82c652e
commit 5fe655bf26
@@ -1444,6 +1444,12 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin):
for i in range(batch_size):
tmp_obj = copy.copy(objs[i])
tokenized_obj = copy.copy(tokenized_objs[i])
# Ensure independent mm_items so wrap_shm_features won't mutate the original
if hasattr(tokenized_obj, "mm_inputs") and tokenized_obj.mm_inputs:
tokenized_obj.mm_inputs = copy.copy(tokenized_obj.mm_inputs)
tokenized_obj.mm_inputs.mm_items = [
copy.copy(item) for item in tokenized_obj.mm_inputs.mm_items
]
tokenized_obj.rid = tmp_obj.regenerate_rid()
tokenized_obj.sampling_params = copy.copy(tokenized_obj.sampling_params)
tokenized_obj.sampling_params.max_new_tokens = 0
@@ -1457,6 +1463,12 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin):
for _ in range(obj.parallel_sample_num):
tmp_obj = copy.copy(objs[i])
tokenized_obj = copy.copy(tokenized_objs[i])
# Ensure independent mm_items so wrap_shm_features won't mutate the original
if hasattr(tokenized_obj, "mm_inputs") and tokenized_obj.mm_inputs:
tokenized_obj.mm_inputs = copy.copy(tokenized_obj.mm_inputs)
tokenized_obj.mm_inputs.mm_items = [
copy.copy(item) for item in tokenized_obj.mm_inputs.mm_items
]
tokenized_obj.rid = tmp_obj.regenerate_rid()
self._init_req_state(tmp_obj)
tokenized_obj.time_stats = self.rid_to_state[tmp_obj.rid].time_stats