visdom
fossasia/visdom加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

深夜,你在实验室跑一个 PyTorch 训练任务,预计 8 小时后才能看到最终 loss。你百无聊赖地躺在床上,想知道训练曲线有没有出现异常振荡、梯度有没有爆炸——但服务器没有外网 IP,你无法打开 TensorBoard 翻看。
传统方案是等。但有了 Visdom,你只需要在训练脚本里加一行 viz.line(...),在任何有浏览器的设备上打开 http://your-server:8097,Loss 曲线正在实时生长,精确到每一轮迭代。这就是 Visdom 的核心价值:让训练过程真正"可见",不受框架、平台、网络的限制。
Visdom 最早由 Facebook AI Research(FAIR)团队内部开发,用于解决研究人员在 PyTorch/Torch 训练过程中缺乏统一可视化工具的问题。2021年,Facebook 将 Visdom 项目完整移交给了开源社区组织 FOSSASIA,并在 OSI(Open Source Initiative)关联博客上正式宣布全面开源,结束了 Visdom 多年的"半闭源"状态。
移交 FOSSASIA 后,项目获得了更活跃的社区维护:现代 Web 技术栈(Webpack 5、ESLint、Prettier)、持续集成(Playwright 测试)、Python 3.12+ 支持等更新接踵而至。
Visdom 远不止一个"绘图库"。它是一个完整的实时数据可视化服务端,支持以下数据类型:
| 类型 | 支持的可视化 |
|---|---|
| 数值曲线 | line():实时折线图,可多条曲线叠加,支持滑动窗口 |
| 图片 | image() / images():支持 RGB、灰度、热力图,显示批量图片网格 |
| 文本 | text() / matplot():日志输出、表格、Matplotlib 自定义图 |
| 音频 | audio():训练过程中的音频样本回放 |
| 视频 | video():模型生成的视频帧预览 |
| 3D 曲面 | surf():高维嵌入(t-SNE、UMAP)三维可视化 |
| 网络图 | bar():柱状图、堆叠柱状图 |
| 散点图 | scatter():2D/3D 散点,聚类可视化 |
环境(Env)机制是 Visdom 独有的设计。每个环境(如 train、test、baseline)独立保存窗口状态,切换环境就像切换实验室——数据不会混乱,实验结果可持久化保存。窗口可以自由拖拽、缩放、关闭,状态在服务器端持久化,重启服务也不会丢失。
Visdom 的架构分为两部分:
服务端(Python):基于 Tornado 异步 Web 框架,内嵌 WebSocket 支持实时推送。服务端维护一个全局状态字典,按环境(env)组织窗口(window)数据,并通过轮询/推送混合机制将更新推送到前端。Python 客户端通过 Visdom 类实例与服务器通信,调用 viz.line(...) 等 API 时,数据通过 HTTP POST 发送到服务端。
前端(JavaScript):React 驱动的单页应用,渲染 plots、images、text 等窗口组件。界面简洁但功能完整,支持窗口管理、环境切换、状态导出。
依赖技术栈:
Visdom 没有提供官方 Dockerfile 和 docker-compose,这意味着"一键部署"暂时无法实现。但安装过程本身并不复杂:
# 后端(Python)
pip install .
# 前端(构建静态文件)
cd js && npm install && npm run build
# 启动
python -m visdom
服务默认监听 http://localhost:8097。对于有公网访问需求的用户,可以配合 tmux 或 systemd 将服务常驻后台,或通过 Nginx 反向代理暴露。
部署难度评估为"简单",主要因为:安装命令标准化、依赖关系清晰、无数据库等外部依赖。但缺乏容器化支持意味着一旦遇到 Python 版本冲突或系统依赖问题,需要用户自行排查。
| 特性 | Visdom | TensorBoard | WandB |
|---|---|---|---|
| 自托管 | ✅ 完全免费 | ✅ | ❌ 需付费团队版 |
| 实时推送 | ✅ WebSocket | ⚠️ 需刷新 | ✅ |
| 环境隔离 | ✅ Env 机制 | ⚠️ 多实验需手动组织 | ✅ |
| 框架支持 | PyTorch/Torch/NumPy | TensorFlow 原生 | 框架无关 |
| 团队协作 | ⚠️ 基础(共享 URL) | ❌ | ✅ 强大 |
| 容器化 | ❌ 无官方 | ✅ | ✅ |
Visdom 的最大优势是完全自托管、数据不出本地,适合企业内网环境、高校实验室、以及隐私敏感的医疗/金融 AI 项目。相比 WandB 的云服务依赖,Visdom 让你的训练数据完全掌控在自己手中。
Visdom 代表了一类"轻量级自托管可视化工具"的需求:不需要云服务,不需要账号注册,不需要担心数据隐私。只要你能连接到服务器,就能实时看到训练过程。
对于以下场景,Visdom 几乎是最佳选择:
2021年加入 FOSSASIA 后,Visdom 的社区治理更加开放,项目正逐步现代化(Python 3.12+、Playwright 测试),虽然距离 TensorBoard 和 WandB 的功能丰富度仍有差距,但在自托管可视化这个细分赛道,它依然是不可替代的选择。

Visdom 实时可视化界面:多条 Loss 曲线并行展示,数据实时更新

训练过程中 Visdom 实时推送 Loss 曲线的动态效果

Visdom 窗口管理界面:拖拽、缩放、组织实验环境