跳转到内容

Telegram

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

改进插件

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

准备工作

  1. 在 Telegram 搜索框中,输入 @BotFather

  2. 进入聊天框,输入 /newbot 命令,根据提示,分别输入 nameusername,注意:

  • name 用于在消息框中展示 bot 名称
  • username 用于 telegram 频道跳转,且必须以 bot 作为结尾,不可重复

完成创建后收到消息如下,复制并保存 token

  1. 在 Telegram 搜索框中,输入 @getidsbot,在聊天框输入 /start,用于获取 chat_idchat_id 即用户的唯一标识符

基本用法

使用Telegram通知插件的方法非常简单,只需要初始化1个TelegramCallback对象:

python
from swanlab.plugin.notification import TelegramCallback

telegram_callback = TelegramCallback(
    bot_token="<YOUR_TELEGRAM_BOT_TOKEN>",
    chat_id="<YOUR_TELEGRAM_CHAT_ID>",
    language="zh"
)

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

python
swanlab.init(callbacks=[telegram_callback])

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

自由提醒

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

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

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

限制

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

  • 完善方案请期待SwanLab平台开放API上线。