這是一個非常實用的功能。在兩張 RTX 5090 上進行長達十幾小時的訓練時,你不需要一直盯著螢幕。我們可以利用 Line Notify(最簡單的 API)來實現這個功能。
第一步:取得 Line Notify Token
- 前往 Line Notify 官方網站 並登入。
- 進入「個人頁面」,點擊「發行權杖 (Generate token)」。
- 選擇要接收通知的聊天室(例如「透過 1 對 1 聊天接收 LINE Notify 通知」)。
- 複製產生的 Token(這串代碼只會出現一次)。
第二步:編寫 Python 通知腳本 (notifier.py)
這個腳本可以被整合進你的訓練迴圈,或是單獨作為訓練結束後的呼叫工具。</>Python
import requests
def send_line_notification(message, token):
url = "https://notify-api.line.me/api/notify"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/x-www-form-urlencoded"
}
payload = {"message": message}
try:
response = requests.post(url, headers=headers, data=payload)
if response.status_code == 200:
print("Line 通知發送成功!")
else:
print(f"發送失敗,錯誤碼:{response.status_code}")
except Exception as e:
print(f"連線錯誤: {e}")
# 測試用
# YOUR_TOKEN = "貼上你的Token"
# send_line_notification("\n🚀 5090 預訓練任務已啟動!", YOUR_TOKEN)
第三步:整合進你的 train.py (最推薦做法)
在你的 PyTorch 訓練腳本結尾加入 try...finally 結構,這樣無論是訓練成功還是因為報錯崩潰,你都會收到通知:
</>Python
from notifier import send_line_notification
LINE_TOKEN = "你的_LINE_TOKEN"
try:
print("開始訓練...")
# 這裡放你的 trainer.train() 指令
trainer.train()
# 訓練成功通知
msg = "\n✅ 訓練完成!\n模型已儲存至 output 目錄。\n快回來看 5090 的戰果!"
send_line_notification(msg, LINE_TOKEN)
except Exception as e:
# 訓練崩潰通知
msg = f"\n❌ 訓練中斷!\n錯誤訊息: {str(e)[:100]}"
send_line_notification(msg, LINE_TOKEN)
finally:
# 也可以在這裡加入清理顯存的指令
import torch
torch.cuda.empty_cache()
第四步:進階監控(監控 Loss 與 顯存)
如果你想在訓練過程中每隔幾小時回報一次進度(例如當前的 Loss 和 GPU 溫度),可以利用 transformers 的 TrainerCallback:
</>Python
from transformers import TrainerCallback
class LineNotificationCallback(TrainerCallback):
def on_log(self, args, state, control, logs=None, **kwargs):
# 每 500 個 step 發送一次當前 Loss
if state.global_step % 500 == 0 and state.global_step > 0:
loss = logs.get("loss", "N/A")
msg = f"\n📊 訓練進度報告\nStep: {state.global_step}\nLoss: {loss:.4f}"
send_line_notification(msg, LINE_TOKEN)
# 在 Trainer 中加入 callback
# trainer = Trainer(..., callbacks=[LineNotificationCallback()])
💡 給 5090 使用者的最後備註:
- 網路環境: 確保你的訓練主機能連上外部網路(有些公司伺服器會擋 API)。
- 安全提示: 不要把 Token 直接上傳到 GitHub 公開倉庫,建議使用環境變數讀取。
- Blackwell 效率: 隨著訓練進行,你會發現 5090 的顯存溫度(VRAM Temp)可能比核心溫度高,這是 GDDR7 的特性。如果收到 Loss 異常的通知,建議先遠端連線回去看一眼
nvidia-smi。
萬事俱備! 你的 2x 5090 訓練環境現在已經具備了自動化、效能優化、容錯機制以及遠端監控。
準備好按下 ./deepspeed_launcher.sh 那個鍵!
















