跳转到内容

merge_callbacks

python
def merge_callbacks(
    callbacks: CallbacksType,
) -> None:
参数类型描述
callbacksCallbacksType单个 Callback 对象或 Callback 对象列表,将被合并到全局回调注册表中。

介绍

swanlab.merge_callbacks() 将自定义回调函数合并到 SwanLab 的全局回调注册表中。这允许你在调用 swanlab.init() 之前注册回调,实现在无法直接访问 swanlab.init() 的框架(例如与 Transformers 集成时)中注入插件。

TIP

merge_callbacks 必须在 swanlab.init() 之前调用。如果运行已激活时调用,会抛出 RuntimeError

用法

单个回调

python
import swanlab
from swanlab import Callback

class MyCallback(Callback):
    @property
    def name(self):
        return "my_callback"

    def on_run_initialized(self, run_dir, path, **kwargs):
        print("Run initialized!")

swanlab.merge_callbacks(MyCallback())
swanlab.init(project="my-project")

多个回调

传入列表可一次性合并多个回调:

python
import swanlab
from swanlab import Callback

class MyCallback(Callback):
    @property
    def name(self):
        return "my_callback"

    def on_run_initialized(self, run_dir, path, **kwargs):
        print("Run initialized!")

class AnotherCallback(Callback):
    @property
    def name(self):
        return "another_callback"

    def on_run_initialized(self, run_dir, path, **kwargs):
        print("Run initialized by another callback!")

swanlab.merge_callbacks([MyCallback(), AnotherCallback()])
swanlab.init(project="my-project")

回调生命周期

SwanLab 回调通过继承 Callback 基类实现。常用的钩子方法包括:

  • on_run_initialized(run_dir, path, **kwargs) — 实验初始化时调用。
  • on_run_finished(state, error) — 实验结束时调用。