mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-28 16:07:46 +00:00
fix: add wait_retry to exp_gen v2 (#783)
* add wait retry to v2 * format * fix a bug --------- Co-authored-by: Xu <v-xuminrui@microsoft.com> Co-authored-by: yuanteli <1957922024@qq.com>
This commit is contained in:
@@ -242,13 +242,7 @@ class DSProposalV2ExpGen(ExpGen):
|
||||
)
|
||||
return json.loads(response)
|
||||
|
||||
def identify_feedback_problem(
|
||||
self,
|
||||
scenario_desc: str,
|
||||
exp_feedback_list_desc: str,
|
||||
sota_exp_desc: str,
|
||||
pipeline: bool,
|
||||
) -> Dict:
|
||||
def identify_feedback_problem(self, scenario_desc: str, exp_feedback_list_desc: str, sota_exp_desc: str) -> Dict:
|
||||
sys_prompt = T(".prompts_v2:scenario_problem.system").r(
|
||||
problem_spec=T(".prompts_v2:specification.problem").r(),
|
||||
problem_output_format=T(".prompts_v2:output_format.problem").r(),
|
||||
@@ -266,6 +260,13 @@ class DSProposalV2ExpGen(ExpGen):
|
||||
)
|
||||
return json.loads(response)
|
||||
|
||||
def _append_retry(args: tuple, kwargs: dict) -> tuple[tuple, dict]:
|
||||
# Only modify the user_prompt on retries (i > 0)
|
||||
user_prompt = args[0]
|
||||
user_prompt += "\n\nretrying..."
|
||||
return (user_prompt,), kwargs
|
||||
|
||||
@wait_retry(retry_n=5, transform_args_fn=_append_retry)
|
||||
def hypothesis_gen(
|
||||
self,
|
||||
component_desc: str,
|
||||
@@ -293,7 +294,13 @@ class DSProposalV2ExpGen(ExpGen):
|
||||
json_mode=True,
|
||||
json_target_type=Dict[str, Dict[str, str | Dict[str, str | int]]],
|
||||
)
|
||||
return json.loads(response)
|
||||
resp_dict = json.loads(response)
|
||||
for key, value in resp_dict.items():
|
||||
assert "reason" in value, "Reason not provided."
|
||||
assert "component" in value, "Component not provided."
|
||||
assert "hypothesis" in value, "Hypothesis not provided."
|
||||
assert "evaluation" in value, "Evaluation not provided."
|
||||
return resp_dict
|
||||
|
||||
def hypothesis_rank(self, hypothesis_dict: dict, problem_dict: dict, pipeline: bool) -> DSHypothesis:
|
||||
weights = {
|
||||
@@ -361,7 +368,6 @@ class DSProposalV2ExpGen(ExpGen):
|
||||
component_desc=component_desc,
|
||||
workflow_check=not pipeline and hypothesis.component != "Workflow",
|
||||
)
|
||||
|
||||
user_prompt = T(".prompts_v2:task_gen.user").r(
|
||||
scenario_desc=scenario_desc,
|
||||
sota_exp_desc=sota_exp_desc,
|
||||
@@ -394,7 +400,6 @@ class DSProposalV2ExpGen(ExpGen):
|
||||
# exp.experiment_workspace.inject_code_from_folder(sota_exp.experiment_workspace.workspace_path)
|
||||
if sota_exp is not None:
|
||||
exp.experiment_workspace.inject_code_from_file_dict(sota_exp.experiment_workspace)
|
||||
|
||||
if not pipeline and new_workflow_desc != "No update needed":
|
||||
workflow_task = WorkflowTask(
|
||||
name="Workflow",
|
||||
@@ -442,7 +447,6 @@ class DSProposalV2ExpGen(ExpGen):
|
||||
scenario_desc=scenario_desc,
|
||||
exp_feedback_list_desc=exp_feedback_list_desc,
|
||||
sota_exp_desc=sota_exp_desc,
|
||||
pipeline=pipeline,
|
||||
)
|
||||
all_problems = {**scen_problems, **fb_problems}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user