Skip to content

Commit 7852dde

Browse files
committed
CHG qwenvl collator
1 parent 648a523 commit 7852dde

1 file changed

Lines changed: 0 additions & 8 deletions

File tree

src/open_r1/sft.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)