跳转到内容

Bark

Bark 是一款专为 iOS 设备设计的免费、开源的消息推送服务应用程序。它的核心功能非常简单纯粹:让你能够从任何设备或平台,向自己的 iPhone 发送自定义推送通知。

你可以把它理解为一个“私人定制版”的推送服务,类似于 IFTTT 或 Telegram Bot,但更轻量、更专注于通知本身,并且数据完全由你自己掌控。

如果你希望在训练完成/发生错误时,第一时间发送 Bark 信息通知你,那么非常推荐你使用 Bark 通知插件。

改进插件

SwanLab插件均为开源代码,你可以在Github源代码中查看,欢迎提交你的建议和PR!

准备工作

  1. 打开Bark App
  2. 在「服务器」页面,复制URL(url的格式为https://api.day.app/XXXXXXX),记下来
  3. 在「设置」页面,复制Device Token,记下来

基本用法

使用Bark通知插件的方法非常简单,只需要初始化1个BarkCallback对象,将准备工作中的URL和Device Token填入:

python
from swanlab.plugin.notification import BarkCallback

bark_callback = BarkCallback(
    key='你的Device Token',
    url='你的URL', 
)

然后将bark_callback对象传入swanlab.initcallbacks参数中:

python
swanlab.init(callbacks=[bark_callback])

这样,当训练完成/发生错误时(触发swanlab.finish()),你将会收到Bark信息通知。

自由提醒

你还可以使用BarkCallback对象的send_msg方法,发送自定义的钉钉信息。

这在提醒你某些指标达到某个阈值时非常有用!

python
if accuracy > 0.95:
    # 自定义场景发送消息
    bark_callback.send_msg(
        content=f"Current Accuracy: {accuracy}",  # 通知内容
    )

外部注册插件

如果你使用的是SwanLab与其他框架的集成,故而不太好找到swanlab.init,那么你可以使用swanlab.register_callbacks方法,在外部传入插件:

python
import swanlab

# 等价于 swanlab.init(callbaks=[...])
swanlab.register_callbacks([...])

限制

  • Bark 通知插件的训练完成/异常通知,使用的是SwanKitCallbackon_stop生命周期回调,所以如果你的进程被突然kill,或者训练机异常关机,那么会因为无法触发on_stop回调,从而导致未发送Bark通知。