Ray
Ray 是一个分布式计算框架,专为大规模并行任务和强化学习应用设计。它由加州大学伯克利分校的研究团队开发,旨在简化构建高性能、可扩展的分布式应用程序的过程。Ray 支持 Python 和 Java,并且可以轻松集成到现有的机器学习、数据处理和强化学习工作流中。
SwanLab 支持 Ray 的实验记录,通过 SwanLabLoggerCallback
可以方便地记录实验指标和超参数。
1. 引入SwanLabCallback
python
from swanlab.integration.ray import SwanLabLoggerCallback
SwanLabLoggerCallback
是适配于 Ray
的日志记录类。
SwanLabLoggerCallback
可以定义的参数有:
project
: 项目名称workspace
: 工作空间名称- 其他和
swanlab.init
一致的参数
2. 与tune.Tuner
集成
python
tuner = tune.Tuner(
...
run_config=tune.RunConfig(
callbacks=[SwanLabLoggerCallback(project="Ray_Project")],
),
)
3. 完整案例
python
import random
from ray import tune
from swanlab.integration.ray import SwanLabLoggerCallback
def train_func(config):
offset = random.random() / 5
for epoch in range(2, config["epochs"]):
acc = 1 - (2 + config["lr"]) ** -epoch - random.random() / epoch - offset
loss = (2 + config["lr"]) ** -epoch + random.random() / epoch + offset
tune.report({"acc": acc, "loss": loss})
tuner = tune.Tuner(
train_func,
param_space={
"lr": tune.grid_search([0.001, 0.01, 0.1, 1.0]),
"epochs": 10,
},
run_config=tune.RunConfig(
callbacks=[SwanLabLoggerCallback(project="Ray_Project")],
),
)
results = tuner.fit()