feat: merge code summary and support more traces (#1025)

* merge with code_change_summary

* fix: prevent max_sota_retrieved_num_per_trace from becoming zero

* select sota from more than 2 traces
This commit is contained in:
Tim
2025-07-08 10:00:52 +08:00
committed by GitHub
parent b05c2cba09
commit ed086dcec4
3 changed files with 10 additions and 5 deletions
@@ -38,6 +38,7 @@ trace: |-
{% else %}
Experiment Score: {{ exp_and_feedback[0].result.loc["ensemble"].iloc[0] }}
Experiment Feedback: {{ exp_and_feedback[1].reason }}
{% if exp_and_feedback[1].code_change_summary %}Code Change Summary: {{ exp_and_feedback[1].code_change_summary }}{% endif %}
{% endif %}
{% endfor %}
{% endif %}
@@ -104,8 +104,10 @@ class ParallelMultiTraceExpGen(ExpGen):
else:
selection = (leaves[0],)
if trace.sota_exp_to_submit is not None:
if trace.is_parent(trace.exp2idx(trace.sota_exp_to_submit), leaves[1]):
selection = (leaves[1],)
for i in range(1, len(leaves)):
if trace.is_parent(trace.exp2idx(trace.sota_exp_to_submit), leaves[i]):
selection = (leaves[i],)
break
trace.set_current_selection(selection)
return self.merge_exp_gen.gen(trace)
@@ -70,11 +70,13 @@ class AutoSOTAexpSelector(SOTAexpSelector):
if len(leaves) >= 2:
logger.info(f"Auto SOTA selector: Multiple traces found, collecting SOTA experiments from each trace")
logger.info(
f"Auto SOTA selector: {len(leaves)} traces found, collecting SOTA experiments from each trace"
)
# multiple trace case, collect the latest SOTA experiments from each trace
new_sota_exp_fb_list: list[tuple[DSExperiment, ExperimentFeedback]] = []
# calculate the number of SOTA experiments to retrieve from each trace
max_sota_retrieved_num_per_trace = DS_RD_SETTING.max_sota_retrieved_num // len(leaves)
# calculate the number of SOTA experiments to retrieve from each trace, prevent it from becoming zero
max_sota_retrieved_num_per_trace = max(DS_RD_SETTING.max_sota_retrieved_num // len(leaves), 2)
# recall, due to the integer division, the final number of SOTA experiments to retrieve may be different
for leaf in leaves:
sota_exp_fb_list_per_trace = trace.experiment_and_feedback_list_after_init(