@@ -62,7 +62,6 @@ def create_vlm_collate_fn(processor):
6262
6363
6464 def collate_fn (examples : list [dict [str , str | Image .Image ]]):
65- # Step 1: Prepare inputs and messages
6665 batch_messages = []
6766 system_prompts = []
6867 user_prompts = []
@@ -83,7 +82,6 @@ def collate_fn(examples: list[dict[str, str | Image.Image]]):
8382 {"role" : "assistant" , "content" : assistant }
8483 ])
8584
86- # Step 2: Generate full text inputs
8785 texts = [
8886 processor .apply_chat_template (
8987 messages ,
@@ -93,14 +91,12 @@ def collate_fn(examples: list[dict[str, str | Image.Image]]):
9391 for messages in batch_messages
9492 ]
9593
96- # Step 3: Extract vision info (images)
9794 all_image_inputs = []
9895 for messages in batch_messages :
9996 image_inputs , _ = process_vision_info (messages )
10097 if image_inputs :
10198 all_image_inputs .extend (image_inputs )
10299
103- # Step 4: Tokenize full examples
104100 batch = processor (
105101 text = texts ,
106102 images = all_image_inputs if all_image_inputs else None ,
@@ -113,7 +109,6 @@ def collate_fn(examples: list[dict[str, str | Image.Image]]):
113109 labels = input_ids .clone ()
114110 labels [labels == processor .tokenizer .pad_token_id ] = - 100
115111
116- # Step 5: Mask image tokens
117112 if hasattr (processor , "image_token" ):
118113 image_token_id = processor .tokenizer .convert_tokens_to_ids (processor .image_token )
119114 if image_token_id is not None :
@@ -122,7 +117,6 @@ def collate_fn(examples: list[dict[str, str | Image.Image]]):
122117 raise ValueError ("Processor does not have image_token" )
123118
124119
125- # Step 6: Efficient batched system prompt masking
126120 system_encodings = processor .tokenizer (
127121 system_prompts ,
128122 add_special_tokens = False ,
@@ -138,11 +132,9 @@ def collate_fn(examples: list[dict[str, str | Image.Image]]):
138132
139133 for encodings in [system_encodings , user_encodings ]:
140134 for i , system_ids in enumerate (encodings ):
141- # Fast prefix check (common case)
142135 if input_ids [i , :len (system_ids )].tolist () == system_ids :
143136 labels [i , :len (system_ids )] = - 100
144137 else :
145- # Fallback: scan to find match
146138 seq = input_ids [i ].tolist ()
147139 for j in range (len (seq ) - len (system_ids ) + 1 ):
148140 if seq [j :j + len (system_ids )] == system_ids :
0 commit comments