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):
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user