diff --git a/verl/utils/tracking.py b/verl/utils/tracking.py index eea47a5a37c..5843277f6c3 100644 --- a/verl/utils/tracking.py +++ b/verl/utils/tracking.py @@ -22,6 +22,7 @@ from functools import partial from pathlib import Path from typing import Any +import orjson class Tracking: @@ -239,6 +240,17 @@ def __init__(self, project_name: str, experiment_name: str): self.fp = open(self.filepath, "w") def log(self, data, step): + import numpy as np + import torch + for k,v in data.items(): + if isinstance(v, np.float64) or isinstance(v, np.float32): + data[k] = float(v.tolist()) + if isinstance(v, np.int64) or isinstance(v, np.int32): + data[k] = int(v.tolist()) + if isinstance(v, np.ndarray): + data[k] = float(v.tolist()) + if isinstance(v, torch.Tensor): + data[k] = float(v.item()) data = {"step": step, "data": data} self.fp.write(json.dumps(data) + "\n")