Trackio documentation
Peringatan
Peringatan
Alert Trackio memungkinkan Anda menandai peristiwa penting selama sebuah run. Ketika alert dipicu, ia akan:
- Dicetak ke terminal dengan label tingkat keparahan yang diberi kode warna
- Disimpan di database sehingga dapat ditanyakan kemudian melalui CLI, API Python, atau endpoint HTTP
- Tampil di dasbor melalui panel peringatan mengambang dan halaman Laporan
- Dikirim ke webhook (opsional) — dengan format asli untuk Slack dan Discord
Memicu Peringatan
Gunakan alert() di mana saja setelah memanggil init():
import trackio
trackio.init(project="my-project")
# ... inside your training loop ...
if val_loss > 2.0:
trackio.alert(
title="Validation loss spike",
text=f"val_loss={val_loss:.4f} exceeded threshold 2.0",
level=trackio.AlertLevel.ERROR,
)Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
title | str | (wajib) | Judul singkat untuk peringatan. |
text | str \| None | None | Deskripsi opsional yang lebih panjang dengan detail. |
level | AlertLevel | AlertLevel.WARN | Tingkat keparahan: INFO, WARN, atau ERROR. |
webhook_url | str \| None | None | Timpa URL webhook global hanya untuk peringatan ini. |
Tingkat Peringatan
from trackio import AlertLevel
AlertLevel.INFO # Informational — nothing is wrong
AlertLevel.WARN # Warning — something may need attention
AlertLevel.ERROR # Error — something is definitely wrongOutput Terminal
Setiap peringatan dicetak ke terminal secara langsung, dengan label yang diberi kode warna:
[TRACKIO WARN] Validation loss spike: val_loss=2.3412 exceeded threshold 2.0 (step 42)- INFO dicetak dalam warna biru
- WARN dicetak dengan warna kuning
- ERROR dicetak dalam warna merah
Ini berarti peringatan berfungsi langsung tanpa perlu konfigurasi — jika Anda dapat melihat log pelatihan Anda, Anda juga dapat melihat peringatan Anda.
Dasbor
Alerts muncul di dua tempat di dasbor Trackio:
Panel peringatan — Panel mengambang di sudut kanan bawah setiap halaman dasbor. Panel ini menampilkan semua peringatan (di seluruh proyek) yang diterima sejak dasbor dibuka, dengan peringatan terbaru di bagian bawah. Anda dapat memfilter berdasarkan tingkat keparahan dan memperluas/menutup panel. Panel akan berkedip saat peringatan baru diterima.
Halaman Laporan — Halaman Laporan mencakup tabel peringatan lengkap di bawah bagian laporan. Anda dapat memfilter peringatan berdasarkan run (melalui dropdown di bilah sisi) dan berdasarkan tingkat keparahan (melalui grup kotak centang di bilah sisi).
Untuk meluncurkan dasbor:
trackio show --project "my-project"Mengkueri Peringatan
CLI
# List all alerts for a project
trackio get alerts --project "my-project"
# Filter by run
trackio get alerts --project "my-project" --run "brave-sunset-0"
# Filter by level
trackio get alerts --project "my-project" --level error
# Only alerts after a specific timestamp (useful for polling)
trackio get alerts --project "my-project" --since "2025-06-01T00:00:00"
# JSON output for programmatic consumption
trackio get alerts --project "my-project" --jsonMengevaluasi Metrik Sekitar Peringatan
Saat peringatan dipicu, Anda sering ingin melihat bagaimana semua metrik pada titik tersebut. Gunakan trackio get snapshot untuk mendapatkan setiap metrik pada/ sekitar langkah atau timestamp peringatan:
# An alert fired at step 200 — get all metrics in a ±5 step window
trackio get snapshot --project "my-project" --run "brave-sunset-0" --around 200 --window 5 --json
# Or inspect a single metric around the alert's timestamp
trackio get metric --project "my-project" --run "brave-sunset-0" --metric "loss" --at-time "2025-06-01T12:05:30" --window 60 --jsonLihat halaman Perintah CLI untuk daftar lengkap opsi penyaringan.
API Python
import trackio
api = trackio.Api()
# All alerts in a project
alerts = api.alerts("my-project")
# Filter by run and level
alerts = api.alerts("my-project", run="brave-sunset-0", level="error")
# Only new alerts since a timestamp
alerts = api.alerts("my-project", since="2025-06-01T12:00:00")
# From a Run object
runs = api.runs("my-project")
run_alerts = runs[0].alerts(level="warn")HTTP API
Jika dashboard Trackio sedang berjalan (lokal atau di Space), Anda dapat menanyakan peringatan melalui endpoint /get_alerts:
import httpx2
alerts = httpx2.post(
"http://127.0.0.1:7860/api/get_alerts",
json={
"project": "my-project",
"run": None,
"level": "error",
"since": "2025-06-01T00:00:00",
},
).json()["data"]Webhooks
Webhooks memungkinkan Anda mengirim peringatan ke layanan eksternal seperti Slack, Discord, atau endpoint HTTP apa pun.
Mengatur Webhook Global
Anda dapat mengatur URL webhook yang berlaku untuk setiap peringatan dalam satu run:
Opsi 1: Di dalam trackio.init()
trackio.init(
project="my-project",
webhook_url="https://hooks.slack.com/services/T.../B.../xxx",
)Opsi 2: Variabel lingkungan
export TRACKIO_WEBHOOK_URL="https://hooks.slack.com/services/T.../B.../xxx"# No webhook_url needed — picks up the env var automatically
trackio.init(project="my-project")Variabel env sangat berguna ketika Anda ingin menggunakan webhook yang sama untuk semua proyek tanpa mengubah kode.
Mengirim Hanya Peringatan dengan Tingkat Keparahan yang Lebih Tinggi ke Webhook
Jika Anda hanya ingin webhook untuk peringatan penting, atur webhook_min_level di trackio.init():
trackio.init(
project="my-project",
webhook_url="https://hooks.slack.com/services/T.../B.../xxx",
webhook_min_level=trackio.AlertLevel.WARN,
)Dengan webhook_min_level=AlertLevel.WARN:
INFOalert masih dicetak/disimpan/ditampilkan di UI, tetapi tidak dikirim ke webhook- Alert
WARNdanERRORdikirim ke webhook
Anda juga dapat mengonfigurasi ini secara global dengan variabel lingkungan:
export TRACKIO_WEBHOOK_MIN_LEVEL="warn"Menimpa Per-Alert
Lewati webhook_url langsung ke trackio.alert() untuk menimpa pengaturan global untuk satu peringatan, atau untuk mengirim peringatan tertentu ke saluran lain:
trackio.alert(
title="Checkpoint saved",
text="Saved model at step 5000",
level=trackio.AlertLevel.INFO,
webhook_url="https://discord.com/api/webhooks/123456/abcdef",
)Payload Webhook
Trackio mendeteksi layanan secara otomatis dari URL dan memformat payload sesuai dengan itu.
Webhook generik menerima tubuh POST JSON:
{
"level": "warn",
"title": "Validation loss spike",
"text": "val_loss=2.34 exceeded threshold 2.0",
"project": "my-project",
"run": "brave-sunset-0",
"step": 42,
"timestamp": "2025-06-15T14:30:00+00:00"
}Slack dan Discord menerima pesan berformat kaya (lihat bagian di bawah).
Webhooks dikirim dalam thread latar belakang sehingga trackio.alert() tidak pernah memblokir loop pelatihan Anda.
Slack
Membuat Webhook Slack
- Buka https://api.slack.com/apps dan klik Create New App → From scratch.
- Beri nama aplikasi (misalnya, “Trackio Alerts”) dan pilih workspace Anda.
- Di bilah sisi kiri, klik Incoming Webhooks dan ubah statusnya menjadi On.
- Klik Tambahkan Webhook Baru ke Workspace, pilih channel tempat Anda ingin menerima peringatan, lalu klik Izinkan.
- Salin URL webhook. Tampilannya seperti ini:
https://hooks.slack.com/services/TXXXXX/BXXXXX/XXXXXXXXXX
Menggunakannya dengan Trackio
trackio.init(
project="my-project",
webhook_url="https://hooks.slack.com/services/T.../B.../xxx",
)
trackio.alert(
title="Training complete",
text="Final val_accuracy: 0.94",
level=trackio.AlertLevel.INFO,
)Seperti apa penampilannya
Trackio mengirim pesan Slack Block Kit dengan:
- Judul tebal dengan emoji dan tingkat keparahan (misalnya, “⚠️ [WARN] Lonjakan loss“)
- Bagian deskripsi opsional dengan
textAnda - Footer konteks yang menampilkan nama proyek, nama run, dan nomor langkah
Discord
Membuat Discord Webhook
- Buka Pengaturan Server → Integrasi → Webhook.
- Klik Webhook Baru.
- Beri nama (misalnya, “Trackio Alerts”), pilih saluran, dan klik Copy Webhook URL.
- URL-nya terlihat seperti:
https://discord.com/api/webhooks/123456789/ABCDEFghijklmnop
Menggunakannya dengan Trackio
trackio.init(
project="my-project",
webhook_url="https://discord.com/api/webhooks/123456789/ABCDEFghijklmnop",
)
trackio.alert(
title="GPU temperature critical",
text="GPU 0 reached 95°C",
level=trackio.AlertLevel.ERROR,
)Seperti apa penampilannya
Trackio mengirim pesan Embed Discord dengan:
- Bilah samping dengan kode warna (biru untuk INFO, kuning untuk WARN, merah untuk ERROR)
- Judul dengan emoji dan tingkat keparahan
- Deskripsi dengan
textAnda - Footer dengan nama proyek, nama run, dan nomor langkah