gradio-app/trackio

A lightweight, local-first, and free experiment tracking library from Hugging Face 🤗

Trackio – 轻量级、免费的实验跟踪,适用于人类和 AI 代理

它是什么 – Trackio 是一个 Python 库(带有基于 Svelte 的 Web UI),可让您记录机器学习运行的指标、配置、工件和警报。它将所有内容本地存储在 SQLite 数据库中(可选冻结为 Parquet),并可在您的机器上提供仪表板或将其发布到免费的 Hugging Face Space。该 API 特意与流行的 wandb 客户端兼容,因此您可以无缝替换 import wandb 为 import trackio as wandb。


核心功能

  • 本地优先,云可选 – 默认情况下日志保留在您的磁盘上;您可以稍后同步到 Hugging Face Space 进行共享。
  • SQLite 存储 + Parquet 导出 – 通过每 0.5 秒刷新一次的内存队列实现快速、高吞吐量的写入。
  • CLI 和 SQL 查询 – trackio query … --sql "SELECT …" 让 LLM 驱动的代理直接读取数据。
  • 兼容 WandB 的 API – trackio.init、trackio.log、trackio.finish 可作为直接替代品。
  • 仪表板 – 一个 Gradio 风格的 UI(使用 trackio show 启动)显示指标、媒体、表格、警报,并可通过 iframe 嵌入。
  • 警报和 Webhook – 在自定义条件下发送 Slack/Discord/任何 URL 通知。
  • 无限个人/团队使用免费 – 无需付费层级。
  • 可自托管 – 在任何服务器上运行后端/API,并使用 TRACKIO_SERVER_URL 将客户端指向它。

快速开始

pip install trackio   # Python 3.10+
import trackio, random, time
trackio.init(project="demo", config={"epochs":5})
for epoch in range(5):
    trackio.log({"epoch": epoch,
                  "loss": random.random(),
                  "acc": random.random()})
    time.sleep(0.1)
trackio.finish()

运行 trackio show(或在代码中运行 trackio.show())以打开仪表板。


云和共享

  • Hugging Face Spaces – 将 space_id="user/space" 传递给 trackio.init,库将自动创建或使用一个 Space,通过 huggingface-cli 处理身份验证。
  • 同步 – trackio.sync(project="my", space_id="user/space") 将本地 SQLite 数据库上传到 Space 以供协作查看。
  • 嵌入 – 使用带有查询参数(project=…、metrics=…、theme=dark 等)的 iframe 在博客或文档中嵌入实时仪表板。

性能

  • 非阻塞 log() 调用;后台线程批量写入。
  • 本地日志记录:实际上无限吞吐量(每秒数千次调用)。
  • Space 日志记录:单次运行约 2 千条日志在 < 8 秒内;使用 32 个并行线程时约 32 千条日志在约 14 秒内(免费层级 Space 硬件)。

开发和可扩展性

  • 后端用纯 Python 编写;UI 在 trackio/frontend/ 下的 Svelte 5 中。
  • 友好分叉:替换前端目录,重新构建,并提供相同的 API。
  • 文档:https://huggingface.co/docs/trackio
  • 许可证:MIT。

谁可能使用它?

  • 想要零成本、离线优先跟踪器的研究人员。
  • 需要通过 CLI/SQL 记录并稍后查询实验数据的 LLM 驱动代理。
  • 更喜欢自托管或 Hugging Face Spaces 而不是 Weights & Biases 等商业服务的团队。

发音: TRACK-yo("track yo' experiments")。

相关

  • Dispatch
  • 项目
  • 项目
  • 项目
  • 项目