Skip to content

Commit c3e389d

Browse files
committed
Adding try/except to catch question, responses, or judge score generation errors
1 parent 897c127 commit c3e389d

File tree

1 file changed

+61
-42
lines changed

1 file changed

+61
-42
lines changed

datafast/datasets.py

Lines changed: 61 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,28 +1135,40 @@ def generate(self,
11351135
# Process each input document
11361136
for doc in self.config.input_documents:
11371137
# Generate questions for each document
1138-
questions = self._generate_questions(doc, question_gen_llm, language_name)
1138+
try:
1139+
questions = self._generate_questions(doc, question_gen_llm, language_name)
1140+
except Exception as e:
1141+
logger.warning(
1142+
f"Failed to generate questions for document '{doc.get('title', 'unknown')}' | Error: {e}"
1143+
)
1144+
continue
11391145

11401146
# For each question, generate chosen and rejected responses
11411147
for question in questions:
1142-
# Track preference pair generation start time
1143-
pair_start_time = time.time()
1144-
1145-
# Generate chosen response
1146-
chosen_response = self._generate_chosen_response(
1147-
doc,
1148-
question,
1149-
chosen_response_gen_llm,
1150-
language_name
1151-
)
1148+
try:
1149+
# Track preference pair generation start time
1150+
pair_start_time = time.time()
1151+
# Generate chosen response
1152+
chosen_response = self._generate_chosen_response(
1153+
doc,
1154+
question,
1155+
chosen_response_gen_llm,
1156+
language_name
1157+
)
11521158

1153-
# Generate rejected response
1154-
rejected_response = self._generate_rejected_response(
1155-
doc,
1156-
question,
1157-
rejected_response_gen_llm,
1158-
language_name
1159-
)
1159+
# Generate rejected response
1160+
rejected_response = self._generate_rejected_response(
1161+
doc,
1162+
question,
1163+
rejected_response_gen_llm,
1164+
language_name
1165+
)
1166+
1167+
except Exception as e:
1168+
logger.warning(
1169+
f"Failed to generate responses for question '{question}' | Error: {e}"
1170+
)
1171+
continue
11601172

11611173
# If evolutionary instruction is enabled, refine the instruction and response
11621174
if self.config.evol_instruct and evolution_llm:
@@ -1181,31 +1193,38 @@ def generate(self,
11811193

11821194
# If LLM as judge is enabled, use the judge LLM to evaluate the preference pair
11831195
if self.config.llm_as_judge and judge_llm:
1184-
# Get judge scores for chosen response
1185-
chosen_response_result = self._judge_scoring(
1186-
doc, question, chosen_response, judge_llm
1187-
)
1188-
chosen_response_score = chosen_response_result.score
1189-
chosen_response_assessment = chosen_response_result.assessment
1196+
try:
1197+
# Get judge scores for chosen response
1198+
chosen_response_result = self._judge_scoring(
1199+
doc, question, chosen_response, judge_llm
1200+
)
1201+
chosen_response_score = chosen_response_result.score
1202+
chosen_response_assessment = chosen_response_result.assessment
11901203

1191-
# Get judge scores for rejected response
1192-
rejected_response_result = self._judge_scoring(
1193-
doc, question, rejected_response, judge_llm
1194-
)
1195-
rejected_response_score = rejected_response_result.score
1196-
rejected_response_assessment = rejected_response_result.assessment
1197-
1198-
# Swap chosen and rejected responses based on scores if needed
1199-
# This ensures the higher-scored response is always the chosen one
1200-
if rejected_response_score > chosen_response_score:
1201-
# Swap responses
1202-
chosen_response, rejected_response = rejected_response, chosen_response
1203-
# Swap scores
1204-
chosen_response_score, rejected_response_score = rejected_response_score, chosen_response_score
1205-
# Swap assessments
1206-
chosen_response_assessment, rejected_response_assessment = rejected_response_assessment, chosen_response_assessment
1207-
# Swap model IDs
1208-
chosen_model_id, rejected_model_id = rejected_model_id, chosen_model_id
1204+
# Get judge scores for rejected response
1205+
rejected_response_result = self._judge_scoring(
1206+
doc, question, rejected_response, judge_llm
1207+
)
1208+
rejected_response_score = rejected_response_result.score
1209+
rejected_response_assessment = rejected_response_result.assessment
1210+
1211+
# Swap chosen and rejected responses based on scores if needed
1212+
# This ensures the higher-scored response is always the chosen one
1213+
if rejected_response_score > chosen_response_score:
1214+
# Swap responses
1215+
chosen_response, rejected_response = rejected_response, chosen_response
1216+
# Swap scores
1217+
chosen_response_score, rejected_response_score = rejected_response_score, chosen_response_score
1218+
# Swap assessments
1219+
chosen_response_assessment, rejected_response_assessment = rejected_response_assessment, chosen_response_assessment
1220+
# Swap model IDs
1221+
chosen_model_id, rejected_model_id = rejected_model_id, chosen_model_id
1222+
except Exception as e:
1223+
question_preview = question[:100] + "..." if len(question) > 100 else question
1224+
logger.warning(
1225+
f"Failed to score responses with judge for question '{question_preview}' | Error: {e}"
1226+
)
1227+
# Continue without judge scores - the row will be created with None values
12091228

12101229
# Create and store the preference row
12111230
row_data = {

0 commit comments

Comments
 (0)