From 5fdfd52ac42c1404faceb012eedbf83b71a3126e Mon Sep 17 00:00:00 2001 From: PeterGriffinJin Date: Sat, 1 Mar 2025 04:28:07 +0000 Subject: [PATCH] add logger --- verl/utils/logger/__init__.py | 13 +++++++++ verl/utils/logger/aggregate_logger.py | 42 +++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 verl/utils/logger/__init__.py create mode 100644 verl/utils/logger/aggregate_logger.py diff --git a/verl/utils/logger/__init__.py b/verl/utils/logger/__init__.py new file mode 100644 index 0000000..1ce90c5 --- /dev/null +++ b/verl/utils/logger/__init__.py @@ -0,0 +1,13 @@ +# Copyright 2024 Bytedance Ltd. and/or its affiliates +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/verl/utils/logger/aggregate_logger.py b/verl/utils/logger/aggregate_logger.py new file mode 100644 index 0000000..ac57cf5 --- /dev/null +++ b/verl/utils/logger/aggregate_logger.py @@ -0,0 +1,42 @@ +# Copyright 2024 Bytedance Ltd. and/or its affiliates +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +A Ray logger will receive logging info from different processes. +""" +import numbers +from typing import Dict + + +def concat_dict_to_str(dict: Dict, step): + output = [f'step:{step}'] + for k, v in dict.items(): + if isinstance(v, numbers.Number): + output.append(f'{k}:{v:.3f}') + output_str = ' - '.join(output) + return output_str + + +class LocalLogger: + + def __init__(self, remote_logger=None, enable_wandb=False, print_to_console=False): + self.print_to_console = print_to_console + if print_to_console: + print('Using LocalLogger is deprecated. The constructor API will change ') + + def flush(self): + pass + + def log(self, data, step): + if self.print_to_console: + print(concat_dict_to_str(data, step=step), flush=True) \ No newline at end of file