Skip to content

Commit b91b54f

Browse files
feat: add mlflow logger in RD loop to log (#815)
* add mlflow logger in DS loop * fix CI * fix CI --------- Co-authored-by: Xu Yang <[email protected]>
1 parent 67d0e01 commit b91b54f

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

rdagent/core/conf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,5 +80,7 @@ class RDAgentSettings(ExtendedBaseSettings):
8080
stdout_context_len: int = 400
8181
stdout_line_len: int = 10000
8282

83+
enable_mlflow: bool = False
84+
8385

8486
RD_AGENT_SETTINGS = RDAgentSettings()

rdagent/utils/workflow.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,24 @@
99
"""
1010

1111
import datetime
12+
import os
1213
import pickle
1314
import time
1415
from collections import defaultdict
1516
from dataclasses import dataclass
1617
from pathlib import Path
1718
from typing import Any, Callable, Optional, TypeVar, Union, cast
1819

20+
import pytz
1921
from tqdm.auto import tqdm
2022

23+
from rdagent.core.conf import RD_AGENT_SETTINGS
2124
from rdagent.log import rdagent_logger as logger
2225
from rdagent.log.timer import RD_Agent_TIMER_wrapper, RDAgentTimer
2326

27+
if RD_AGENT_SETTINGS.enable_mlflow:
28+
import mlflow
29+
2430

2531
class LoopMeta(type):
2632
@staticmethod
@@ -119,7 +125,27 @@ def run(self, step_n: int | None = None, loop_n: int | None = None, all_duration
119125
if loop_n <= 0:
120126
break
121127

128+
if RD_AGENT_SETTINGS.enable_mlflow:
129+
mlflow.log_metric("loop_index", self.loop_idx)
130+
mlflow.log_metric("step_index", self.step_idx)
131+
current_local_datetime = datetime.datetime.now(pytz.timezone("Asia/Shanghai"))
132+
float_like_datetime = (
133+
current_local_datetime.second
134+
+ current_local_datetime.minute * 1e2
135+
+ current_local_datetime.hour * 1e4
136+
+ current_local_datetime.day * 1e6
137+
+ current_local_datetime.month * 1e8
138+
+ current_local_datetime.year * 1e10
139+
)
140+
mlflow.log_metric("current_datetime", float_like_datetime)
141+
122142
if self.timer.started:
143+
if RD_AGENT_SETTINGS.enable_mlflow:
144+
mlflow.log_metric("remain_time", self.timer.remain_time().seconds) # type: ignore[union-attr]
145+
mlflow.log_metric(
146+
"remain_percent", self.timer.remain_time() / self.timer.all_duration * 100 # type: ignore[operator]
147+
)
148+
123149
if self.timer.is_timeout():
124150
logger.warning("Timeout, exiting the loop.")
125151
break

requirements.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,8 @@ azure.ai.inference
5757
# data folder desc
5858
humanize
5959
genson
60+
61+
# mlflow
62+
mlflow
63+
azureml-mlflow
64+
types-pytz

0 commit comments

Comments
 (0)