mirror of
https://github.com/NicolasBohn/NexQuant.git
synced 2026-07-27 23:47:46 +00:00
add_logger_to_factor_and_fix_a_small_bug_in_factor_runner (#85)
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user