add_logger_to_factor_and_fix_a_small_bug_in_factor_runner (#85)

This commit is contained in:
Xu Yang
2024-07-18 17:00:41 +08:00
committed by GitHub
parent 9029c4c801
commit 08eb29ca3b
4 changed files with 35 additions and 14 deletions
+16 -5
View File
@@ -36,11 +36,22 @@ qlib_factor_summarizer: HypothesisExperiment2Feedback = import_class(PROP_SETTIN
trace = Trace(scen=scen)
for _ in range(PROP_SETTING.evolving_n):
try:
hypothesis = hypothesis_gen.gen(trace)
exp = hypothesis2experiment.convert(hypothesis, trace)
exp = qlib_factor_coder.develop(exp)
exp = qlib_factor_runner.develop(exp)
feedback = qlib_factor_summarizer.generateFeedback(exp, hypothesis, trace)
with logger.tag("r"): # research
hypothesis = hypothesis_gen.gen(trace)
logger.log_object(hypothesis, tag="hypothesis generation")
exp = hypothesis2experiment.convert(hypothesis, trace)
logger.log_object(exp.sub_tasks, tag="experiment generation")
with logger.tag("d"):
exp = qlib_factor_coder.develop(exp)
logger.log_object(exp.sub_workspace_list)
with logger.tag("ef"):
exp = qlib_factor_runner.develop(exp)
logger.log_object(exp, tag="factor runner result")
feedback = qlib_factor_summarizer.generateFeedback(exp, hypothesis, trace)
logger.log_object(feedback, tag="feedback")
trace.hist.append((hypothesis, exp, feedback))
except FactorEmptyException as e:
+9 -3
View File
@@ -33,14 +33,20 @@ trace = Trace(scen=scen)
with logger.tag("model.loop"):
for _ in range(PROP_SETTING.evolving_n):
try:
with logger.tag("r"): # research
with logger.tag("r"): # research
hypothesis = hypothesis_gen.gen(trace)
logger.log_object(hypothesis, tag="hypothesis generation")
exp = hypothesis2experiment.convert(hypothesis, trace)
with logger.tag("d"): # develop
logger.log_object(exp.sub_tasks, tag="experiment generation")
with logger.tag("d"): # develop
exp = qlib_model_coder.develop(exp)
with logger.tag("ef"): # evaluate and feedback
logger.log_object(exp.sub_workspace_list, tag="model coder result")
with logger.tag("ef"): # evaluate and feedback
exp = qlib_model_runner.develop(exp)
logger.log_object(exp, tag="model runner result")
feedback = qlib_model_summarizer.generateFeedback(exp, hypothesis, trace)
logger.log_object(feedback, tag="feedback")
trace.hist.append((hypothesis, exp, feedback))
except ModelEmptyException as e:
logger.warning(e)
@@ -108,8 +108,7 @@ class FactorFBWorkspace(FBWorkspace):
if self.raise_exception:
raise CodeFormatException(self.FB_CODE_NOT_SET)
else:
# TODO: to make the interface compatible with previous code. I kept the original behavior.
raise ValueError(self.FB_CODE_NOT_SET)
return self.FB_CODE_NOT_SET, None
with FileLock(self.workspace_path / "execution.lock"):
if FACTOR_IMPLEMENT_SETTINGS.enable_execution_cache:
# NOTE: cache the result for the same code and same data type
+9 -4
View File
@@ -5,6 +5,7 @@ from tqdm import tqdm
from rdagent.core.evaluation import Evaluator
from rdagent.core.evolving_framework import EvolvableSubjects, EvoStep, Feedback
from rdagent.log import rdagent_logger as logger
class EvoAgent(ABC):
@@ -13,12 +14,14 @@ class EvoAgent(ABC):
self.evolving_strategy = evolving_strategy
@abstractmethod
def multistep_evolve(self, evo: EvolvableSubjects, eva: Evaluator | Feedback, **kwargs: Any) -> EvolvableSubjects:
...
def multistep_evolve(
self, evo: EvolvableSubjects, eva: Evaluator | Feedback, **kwargs: Any
) -> EvolvableSubjects: ...
@abstractmethod
def filter_evolvable_subjects_by_feedback(self, evo: EvolvableSubjects, feedback: Feedback) -> EvolvableSubjects:
...
def filter_evolvable_subjects_by_feedback(
self, evo: EvolvableSubjects, feedback: Feedback
) -> EvolvableSubjects: ...
class RAGEvoAgent(EvoAgent):
@@ -53,6 +56,7 @@ class RAGEvoAgent(EvoAgent):
evolving_trace=self.evolving_trace,
queried_knowledge=queried_knowledge,
)
logger.log_object(evo.sub_workspace_list, tag=f"evolving code")
# 4. Pack evolve results
es = EvoStep(evo, queried_knowledge)
@@ -62,6 +66,7 @@ class RAGEvoAgent(EvoAgent):
es.feedback = (
eva if isinstance(eva, Feedback) else eva.evaluate(evo, queried_knowledge=queried_knowledge)
)
logger.log_object(es.feedback, tag=f"evolving feedback")
# 6. update trace
self.evolving_trace.append(es)