将 Comet 与 Tune 结合使用#

try-anyscale-quickstart

Comet 是一个用于管理和优化整个机器学习生命周期的工具,涵盖从实验跟踪、模型优化和数据集版本控制到模型生产监控的各个环节。

Comet

示例#

为了说明如何将您的实验结果记录到 Comet,我们将定义一个简单的训练函数,该函数模拟一个 loss 指标。

import numpy as np
from ray import tune


def train_function(config):
    for i in range(30):
        loss = config["mean"] + config["sd"] * np.random.randn()
        tune.report({"loss": loss})

现在,如果您像这样提供您的 Comet API 密钥和项目名称

api_key = "YOUR_COMET_API_KEY"
project_name = "YOUR_COMET_PROJECT_NAME"

您可以通过在 RunConfig() 中相应地指定 callbacks 参数来添加 Comet logger。

from ray.air.integrations.comet import CometLoggerCallback

tuner = tune.Tuner(
    train_function,
    tune_config=tune.TuneConfig(
        metric="loss",
        mode="min",
    ),
    run_config=tune.RunConfig(
        callbacks=[
            CometLoggerCallback(
                api_key=api_key, project_name=project_name, tags=["comet_example"]
            )
        ],
    ),
    param_space={"mean": tune.grid_search([1, 2, 3]), "sd": tune.uniform(0.2, 0.8)},
)
results = tuner.fit()

print(results.get_best_result().config)

Tune Comet Logger#

Ray Tune 通过 CometLoggerCallback 提供与 Comet 的集成,该回调会自动将报告给 Tune 的指标和参数记录到 Comet UI。

点击以下下拉菜单以详细了解此回调 API。

class ray.air.integrations.comet.CometLoggerCallback(online: bool = True, tags: List[str] | None = None, save_checkpoints: bool = False, **experiment_kwargs)[source]

用于将 Tune 结果记录到 Comet 的 CometLoggerCallback。

Comet (https://comet.ml/site/) 是一个用于管理和优化整个机器学习生命周期的工具,涵盖从实验跟踪、模型优化和数据集版本控制到模型生产监控的各个环节。

这个 Ray Tune LoggerCallback 将指标和参数发送到 Comet 进行跟踪。

要使用 CometLoggerCallback,您必须先通过 pip install comet_ml 安装 Comet。

然后设置以下环境变量 export COMET_API_KEY=<Your API Key>

或者,您也可以将 API 密钥作为参数传递给 CometLoggerCallback 构造函数。

CometLoggerCallback(api_key=<Your API Key>)

参数:
  • online – 是否使用在线或离线实验。默认为 True。

  • tags – 要添加到已记录实验的标签。默认为 None。

  • save_checkpoints – 如果设置为 True,模型检查点将作为工件保存到 Comet ML。默认为 False

  • **experiment_kwargs – 其他关键字参数将传递给 comet_ml.Experiment(或 online=False 时的 OfflineExperiment)的构造函数。

有关 Experiment 和 OfflineExperiment 类的更多信息,请参阅 Comet ML 文档:https://comet.ml/site/

示例

from ray.air.integrations.comet import CometLoggerCallback
tune.run(
    train,
    config=config
    callbacks=[CometLoggerCallback(
        True,
        ['tag1', 'tag2'],
        workspace='my_workspace',
        project_name='my_project_name'
        )]
)