vlm: fix shared memory bug of deep copy mm_items (#24231)
This commit is contained in:
@@ -1444,6 +1444,12 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin):
|
|||||||
for i in range(batch_size):
|
for i in range(batch_size):
|
||||||
tmp_obj = copy.copy(objs[i])
|
tmp_obj = copy.copy(objs[i])
|
||||||
tokenized_obj = copy.copy(tokenized_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.rid = tmp_obj.regenerate_rid()
|
||||||
tokenized_obj.sampling_params = copy.copy(tokenized_obj.sampling_params)
|
tokenized_obj.sampling_params = copy.copy(tokenized_obj.sampling_params)
|
||||||
tokenized_obj.sampling_params.max_new_tokens = 0
|
tokenized_obj.sampling_params.max_new_tokens = 0
|
||||||
@@ -1457,6 +1463,12 @@ class TokenizerManager(TokenizerControlMixin, TokenizerManagerScoreMixin):
|
|||||||
for _ in range(obj.parallel_sample_num):
|
for _ in range(obj.parallel_sample_num):
|
||||||
tmp_obj = copy.copy(objs[i])
|
tmp_obj = copy.copy(objs[i])
|
||||||
tokenized_obj = copy.copy(tokenized_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.rid = tmp_obj.regenerate_rid()
|
||||||
self._init_req_state(tmp_obj)
|
self._init_req_state(tmp_obj)
|
||||||
tokenized_obj.time_stats = self.rid_to_state[tmp_obj.rid].time_stats
|
tokenized_obj.time_stats = self.rid_to_state[tmp_obj.rid].time_stats
|
||||||
|
|||||||
Reference in New Issue
Block a user