将 Comet 与 Tune 结合使用#
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' )] )