W&B(Weights & Biases)是当前 ML 领域使用最广泛的实验追踪与模型管理平台,由 Lukas Biewald 等人于 2017 年创立。它解决的核心问题是:深度学习实验的日志散落各处(控制台输出、TensorBoard 目录、本地截图、邮件记录),导致复现困难、对比低效、协作混乱。W&B 用一个 wandb.init() 调用接管实验的指标记录、超参保存、产物上传和可视化,所有日志自动同步到云端或自托管实例,团队可在统一看板上对比任意两次实验。截至 2025 年,W&B 已被 OpenAI、NVIDIA、Meta 等团队广泛使用,平台累计托管超过 10 亿次实验运行,其公开的 Weave 评测榜单(Weave Bench)已成为 LLM 应用评估的参考标准之一。W&B 核心能力包括实验追踪、超参调优(Sweeps)、数据集与模型版本管理(Artifacts)、以及 LLM 应用开发套件(Weave)。本篇攻略按「安装配置 → 快速跑通 → 核心功能 → 生产部署」的顺序展开,末尾附对比、误区与面试题,帮助 AI 从业者在 30 分钟内从零上手。
对 AI 从业者而言,掌握 W&B 意味着获得一套贯穿「实验记录 → 结果对比 → 模型选型 → 团队协作」的标准化工作流,这是从单机炼丹走向团队级 ML 工程的必备技能。
目录
速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。
为什么需要 W&B:实验日志散落 → 统一追踪与协作
在真实的模型开发中,实验管理长期处于「失控」状态。研究员往往在终端里看到准确的验证指标,却忘了保存对应的超参数;或者在四个不同目录下同时跑了多组实验,事后只能用文件名里的「v2_final_真的最终版」来区分。传统方案 TensorBoard 虽然能画曲线,但存在三个致命问题:一是只能查看本地单机实验,无法跨设备、跨团队共享;二是需要手动解析 tfevents 文件才能做程序化分析;三是没有超参记录、代码版本、数据集版本的关联,复现一次实验要花半天核对环境。对于多卡训练、分布式调参、多人协作的场景,这些痛点会被进一步放大。
W&B 把「实验」建模成一套完整的数据结构:每个 run 自动绑定时间戳、Git commit、代码状态、超参数(config)、指标曲线(history)、产物文件(files)和数据集版本(artifacts)。任何一次实验结束后,你在浏览器中就能看到完整的「实验档案」,而不仅仅是 loss 曲线。它不做重复造轮子——TensorBoard 兼容模式下可用 wandb.init(sync_tensorboard=True) 自动同步现有 TensorBoard 日志,因此迁移成本很低。
与 MLflow 相比,W&B 的差异在「产品完成度」:MLflow 是开源框架,强调「自托管 + 可定制」,适合有 MLOps 团队的大厂私有化部署;W&B 则默认云端优先,开箱即用的交互看板、Sweeps 自动调参、Artifacts 数据版本管理开箱即用。如果你的诉求是「今天装上、今天就能和队友分享实验看板」,W&B 的体验明显更顺滑。
安装与环境配置:3 步就绪
第一步·安装 SDK。W&B 的 Python SDK 托管在 PyPI 上,包名为 wandb。建议在独立的虚拟环境(venv/conda)中安装,避免污染全局 Python:
第二步·登录认证。W&B 需要在 wandb.ai 上注册免费账号,然后在终端执行 wandb login,按提示粘贴 API key(个人设置 → API Keys 页面生成)。企业自托管实例则通过 WANDB_BASE_URL 环境变量指定地址,再执行登录:
第三步·验证安装。运行 wandb --version 确认版本;再执行 wandb status 查看登录状态。如果输出包含 API key 关联的用户名,说明已就绪。离线环境下可用 wandb login --relogin 重新认证,或设置 WANDB_MODE=offline 只做本地记录、稍后同步。
pip install wandbwandb login快速上手:10 分钟跑通第一个实验
思路:W&B 的使用高度模式化——「初始化 run → 记录指标 → 结束 run」三步。下面的示例用一个随机游走模拟「训练损失下降」过程,演示最核心的 wandb.init() 和 wandb.log() 接口,不依赖任何深度学习框架:
执行 python train.py 后,终端会打印一条包含链接的日志,如 View run at https://wandb.ai/<username>/demo-project/runs/<run_id>。浏览器打开该链接即可看到 loss/acc 曲线、config 超参表、系统资源占用(CPU/GPU/内存)等面板。要点:wandb.log() 接收一个 dict,key 是指标名,value 是数值或张量;每调用一次相当于记录一个 step。进阶技巧:同一个 project 下多次运行 train.py,W&B 会自动生成对比图(同一指标曲线叠加),无需额外配置。
import wandbimport random # 1. 初始化一次实验 run,config 记录超参run = wandb.init( project="demo-project", config={"epochs": 5, "learning_rate": 0.01, "batch_size": 32}) # 2. 模拟 5 轮训练,每轮记录 loss 和 accuracyfor epoch in range(run.config["epochs"]): loss = 1.0 / (epoch + 1) + random.uniform(-0.05, 0.05) acc = 1 - loss + random.uniform(-0.02, 0.02) wandb.log({"epoch": epoch, "loss": loss, "acc": acc}) # 3. 结束 run(也可不调用,脚本退出时自动结束)run.finish()
核心能力详解:5 大支柱
支柱一·实验追踪(Runs)。W&B 最基础的能力。wandb.init() 自动捕获环境信息:Python 版本、操作系统、GPU 型号、Git commit、代码文件的 diff 状态。wandb.log() 支持任意数值指标,还可用 wandb.log({"chart": wandb.Image(img_tensor)}) 记录图片(如分割掩码可视化)、wandb.Audio()/wandb.Video() 记录多模态数据。这些指标实时同步并在网页端绘制交互图表,支持滑动缩放、悬停读数。
支柱二·超参调优(Sweeps)。Sweeps 是 W&B 的自动化调参引擎。在配置文件中声明搜索空间(随机搜索、贝叶斯搜索或网格搜索),W&B 调度器会并行启动多个 agent,每个 agent 各跑一组超参,自动汇总对比。与 Optuna 等库的区别在于,Sweeps 的结果天然沉淀在看板中,且支持「早停」——根据中间指标杀掉劣势 run,节省算力。
支柱三·数据集与模型版本管理(Artifacts)。把数据集、模型权重、预处理产物视为带版本的对象,记录「哪个 run 用了哪个版本的数据、产出了哪个版本的模型」。wandb.log_artifact() 上传文件(支持断点续传与去重),后续 run 可用 artifact.use() 按版本取用,实现端到端的可复现链。
支柱四·LLM 应用开发(Weave)。Weave 是 W&B 2024 年开始重点投入的 LLM 工具链,覆盖 Prompt 版本管理、LLM 调用追踪(每次调用的输入/输出/token 消耗/延迟)、评估数据集管理(Weave Bench)。与纯实验追踪不同,Weave 直接嵌入 OpenAI、Anthropic 等 SDK,自动记录结构化调用轨迹。
支柱五·模型注册表与报告(Registry & Reports)。模型注册表将验证通过的 Artifact 标记为「生产候选」,并关联测试分数与负责人;Reports 是可分享的动态看板,将多组实验曲线、表格、说明文字组合成一份带版本历史的报告,取代「截图 + 邮件」的协作方式。
生产部署与监控:从上线到运维
部署方式一:云端 SaaS 直连。个人/小团队直接使用 wandb.ai 托管服务,SDK 直连无需自建。免费版提供个人无限 run 记录,适合论文实验与个人项目。
部署方式二:自托管(Dedicated Cloud / On-Prem)。数据合规要求高的企业可在自有 VPC 中部署 W&B 服务端(官方提供 Helm chart),SDK 通过 WANDB_BASE_URL 指向内网实例。自托管完全掌控数据主权,但需自行运维 Kubernetes 集群——官方建议至少 3 节点起步。
可观测性。W&B 本身是「观测层」而非「被观测对象」,其可观测性实践体现在三方面:一是资源监控面板自动采集系统指标(GPU 利用率、显存、温度),训练 OOM 时可在时间轴上反向定位是哪个 step、哪次 log() 触发;二是通过 wandb.alert() 配置异常告警,例如 loss 连续 5 个 step 上升时推送到 Slack/钉钉;三是 Sweeps 的智能早停。注意告警属于 W&B 的付费功能(Free 版不包含)。
<p class=“para-label“>避坑清单:</p><ul class=”dash-list”><li>项目命名混乱:所有人在 project 名随意 test1、test2,几周后看板无法检索。应建立规范,如 <业务线>-<模型名>,并在 wandb.init() 中强制携带 description 和 tags。</li><li>config 记录不完整:只记超参不记数据版本、代码 commit,复现时只能猜。应把 git commit、数据集 artifact 名、随机种子统一写入 config。</li><li>多卡/DDP 训练日志爆炸:每个 GPU 进程都调用 wandb.init() 会产生 N 个重复 run。正确做法仅在 rank 0 进程初始化 run,其余进程只做 wandb.log() 或直接跳过。</li><li>离线环境卡在登录:内网训练机无法访问 wandb.ai。应先在本地 wandb login 拿到 API key,通过 WANDB_API_KEY 环境变量注入训练脚本;或 WANDB_MODE=offline 本地记录,触发同步到内网实例。</li><li>隐私泄露:误将含敏感数据的样本图或 prompt 记录到云端。生产环境应使用自托管或启用 WANDB_MODE=offline + 脱敏脚本后再上传。</li></ul>
| 维度 | W&B | MLflow | Neptune.ai | TensorBoard |
|---|---|---|---|---|
| 定位 | 全栈实验追踪与 LLM 开发平台 | 开源 ML 生命周期管理框架 | 团队协作型实验追踪 SaaS | 深度学习训练可视化库 |
| 编排范式 | 原生集成式:SDK 自动捕获,云端看板交互 | 组件式:Tracking/Registry 等模块独立部署 | SDK + 云端看板,强调结构化元数据 | 本地文件监听,无编排概念 |
| 类型约束 | 强类型:run/metric/artifact 一等对象 | 轻类型:metric 本质是 key-value 追加 | 强类型:需预先定义实验结构(metadata) | 无类型:仅按 tag 分组标量/张量曲线 |
| 学习曲线 | ★☆☆☆☆ 5 分钟接入 | ★★☆☆☆ 需理解组件架构 | ★★☆☆☆ 需配置 metadata 结构 | ★☆☆☆☆ 与 TF 绑定,即时出图 |
| 生态集成 | 深度集成 PyTorch/Lightning/Transformers/HF Hub | 框架中立,MLflow 模型仓库支持广泛 | 支持主流框架与云厂商(S3 存储) | 仅限 TensorFlow/PyTorch 生态 |
| 生产部署 | 云托管 + 企业自托管(K8s)双模式 | 开源自托管 + Databricks 托管 | 纯 SaaS,无开源版 | 本地进程或嵌入训练脚本 |
| License | SDK Apache 2.0;平台商用闭源 | Apache 2.0(开源) | 商用闭源 | Apache 2.0(开源) |
| 适合谁 | 深度学习研究者、LLM 应用团队 | 有自建 MLOps 平台能力的企业 | 重视协作和数据治理的团队 | 快速本地查看训练曲线的研究员 |
选型建议:单机快速看曲线选 TensorBoard;有自建 MLOps 平台能力、想完全掌控数据选 MLflow;中小团队想「开箱即用 + 免费 + 云协作」选 W&B 免费版;企业级数据隔离、审计需求选 W&B 自托管或 Neptune。若团队同时做 LLM 应用(评估、Prompt 管理),W&B 的 Weave 模块是当前最完整的闭环。
版本迭代
W&B 自 2017 年发布以来,经历了「实验追踪 → 超参调优 → 数据版本管理 → LLM 工具链」四次演进:2018-2020 年逐步完善 Runs/Sweeps/Artifacts 三大模块,2021 年推出 Reports 协作报告,2024 年起以 weave==0.x 版本快速迭代 LLM 可观测性能力。(截至训练数据,可能已有更新版本)
| 版本 | 时间 | 变化 | 提升 |
|---|---|---|---|
| wandb 0.12 | 2021-07 | 核心 SDK 重构与 Artifacts 稳定 | Artifacts 转正,支持数据集/模型版本化管理;Python 3.9 兼容 |
| wandb 0.13 | 2022-03 | Launch 功能上线 | 支持远程代码执行与作业调度,打通训练与实验记录的隔阂 |
| wandb 0.15 | 2023-06 | Weave 内测启动 | 首个 LLM 应用追踪能力开放,支持 OpenAI 等 SDK 自动埋点 |
| wandb 0.16 | 2024-02 | Weave 0.2 与全新 Python SDK | 引入 Prompt 版本管理、评估数据集(Weave Bench)与 Notebook 支持 |
| wandb 0.17 | 2024-11 | 数据治理与可视化升级 | 改进 Artifacts 搜索体验、新增表格可视化(Weave Tables)、增强企业 SSO 与审计功能 |
| weave 0.5x | 2025-06 | Weave 工具链快速迭代 | LLM 调用追踪趋于稳定,支持多模型评估对比,Prometheus 指标导出 |
| 基准 | MLflow(对比) | W&B Launch | |
|---|---|---|---|
| 生产部署耗时(单集群) | 约 2-3 天(自建) | 当天(云托管)/ 1-2 天(Helm 部署) | W&B 托管版无需运维,自托管用官方 Chart 显著快于 MLflow 手动编排 |
| 新用户上手时间 | 约 2-4 小时 | 约 5-15 分钟 | W&B 交互看板可视化反馈即时,MLflow 需理解组件模型 |
| 社区与商业用户规模 | 4 万 + GitHub Stars,Databricks 背书 | 被 OpenAI/NVIDIA/Meta 等内部采用 | 两者均被业界大量采用,W&B 更集中于研究团队 |
W&B 的版本迭代呈现两条主线——核心 SDK 保持「稳定可靠」的慢节奏(0.15 到 0.17 多是小步快跑),而 Weave 作为 LLM 应用新战场以 0.x 版本号高速迭代(功能月更)。对选型的启示是:若团队主要做传统深度学习实验,W&B 核心功能(Runs/Sweeps/Artifacts)已成熟稳定,可放心采用;若做 LLM 应用开发,需关注 Weave 的快速迭代带来的 API 变动风险,建议锁定版本并在 CI 中做回归。
AI 应用场景
场景一:深度学习模型训练的全流程实验追踪
阶段:实验追踪与模型开发
解决的问题:研究员训练 ResNet/Transformer 时,传统方式产生大量未记录的日志、未命名的 checkpoint,调参过程不可复现。W&B 自动记录每次 run 的超参、完整指标曲线、GPU 利用率和代码版本,所有历史实验集中在项目看板中对比。
具体案例:某视觉组对同一个数据集跑 50 组消融实验(不同 backbone、数据增强策略),使用 W&B 后将调参周期从 3 天缩短至 1 天——50 组实验的对比图在一个页面内完成筛选,bad case 的图片按 step 回溯,最终模型选型时间从半天压缩到 10 分钟。团队的「实验日报」从手动汇总表格变为直接分享 W&B Report 链接。
场景二:Sweeps 自动化超参调优
阶段:超参数优化与模型选择
解决的问题:手动调参依赖经验和运气,网格搜索浪费算力且无法并行协作。W&B Sweeps 用随机/贝叶斯搜索 + 智能早停,把调参过程自动化;调度器负责分发超参组合,多个 GPU 卡同时跑不同 agent。
具体案例:某 NLP 团队微调 BERT 时,用 Sweeps 对 learning rate、batch size、warmup ratio 三个维度做贝叶斯搜索,在 4 卡 A100 上并行 20 个 agent。相比手调 15 轮,Sweeps 用 40 轮自动探索找到更优超参,F1 从 82.3% 提升到 84.1%,人工介入时间从 2 天降到 30 分钟设置配置文件。
场景三:LLM 应用的可观测性与评估
阶段:LLM 应用开发与评估
解决的问题:LLM 应用的 prompt 迭代、模型切换缺乏版本管理和量化评估,线上问题难以回溯。Weave 自动记录每次 LLM 调用的输入/输出/token/延迟,支持在同一评估集上批量对比多个 prompt 模板和模型版本。
具体案例:某 RAG 客服机器人团队对 3 个 LLM 供应商 + 5 版 prompt 做交叉评估,用 Weave Bench 在统一数据集上跑 15 组评估,精准定位「回答准确性」从 76% 掉到 70% 的原因是 prompt 版本回退;通过 Weave 的调用追踪回放出具体的失败样本,修复后准确率恢复到 78%,整个排查过程从「翻聊天记录」变为「看板检索」,耗时减少约 80%。
常见误区
误区训练脚本里加上 `wandb.log()` 会大幅拖慢训练速度,尤其在大规模分布式训练时,同步传指标到云端肯定影响性能。
正解W&B SDK 的 log() 是异步上传的,数据先写入本地缓存(wandb 目录),后台线程批量压缩上传,对训练 step 的阻塞极小。实测中,单 step 内 log() 的同步耗时通常在毫秒级,且与 GPU 计算并行;在典型 PyTorch 训练中,W&B 造成的整体训练时间膨胀通常 < 1%。若仍有顾虑,还可设置 WANDB_MODE=offline 彻底离线记录,训练结束后再批量同步。相比手动记录实验日志的时间成本,W&B 的额外开销几乎可忽略。
为何常见:因为初次使用时看到终端有「Uploading」输出,且同步 TensorBoard 模式下上传量较大,容易产生「拖慢训练」的直觉。实际上异步上传机制设计上就避免了阻塞主训练循环。
误区W&B 听起来很重,是给团队和大公司用的平台,个人做研究随便记记日志就行,不值得为单人项目引入依赖。
正解W&B 免费版对个人完全开放,单个用户可以不限量记录 run(学号或教育邮箱可申请教育版),且个人用同样收益巨大:自动记录所有实验的 config 和曲线,换机器(如从本地换到云 GPU)后历史实验全在云端,写论文时所有数据可一键导出 CSV/JSON。更重要的是,养成「每个实验都走 W&B」的习惯后,向团队协作的迁移成本为零——只需共享 project 名。即使 Solo 开发者,W&B 的「实验档案」也比本地散落的 exp1 目录可靠得多。
为何常见:被「平台」「企业级」等词吓到,以及国内网环境下 wandb.ai 访问不稳定,导致很多人没体验就放弃了。其实 W&B 上手就是 pip install wandb 加三行代码的事,且国内也有社区镜像与自托管方案。
误区`wandb.log()` 只能记录标量 loss/acc 这种简单数字,想记录图像、音频、梯度分布需要很复杂的额外代码。
正解wandb.log({...}) 的 dict 同时支持标量(int/float)、wandb.Image、wandb.Audio、wandb.Video、wandb.Histogram、wandb.Table、matplotlib 图表、3D 点云等对象。例如 wandb.log({"predictions": wandb.Table(dataframe=df), "gradients": wandb.Histogram(grads)}) 一行即可把结构化表格和梯度分布直方图送上看板;mask 等分割结果在网页端还能叠加在原始图上交互查看。记录对象的类型是开箱即用的,不需要写插件,wandb 桌面端还支持把表直接导出为 CSV。
为何常见:新手教程大多只展示 wandb.log({"loss": loss}) 这一最简形式,且官方文档内容量大,没人引导时不会主动翻到「Log media」章节。
误区Sweeps 的核心价值只是帮我把不同超参组合并行跑起来,那我自己写个 shell 脚本循环调用不也一样?
正解Sweeps 的价值远不止并行启动:① 智能搜索——贝叶斯搜索基于历史 run 的中间结果动态推荐下一组超参,效率高于随机/网格;② 早停——根据验证指标自动杀掉明显没希望的 run,把算力集中在有潜力的超参组合上;③ 结果内建在看板——所有 run 自动汇聚到 Sweep 页面,按超参维度切片对比;④ 多机协作——多个 agent 可分布在不同机器/容器,共享同一个 sweep 调度。自己写脚本虽然能「跑起来」,但要实现同样的智能调度与统一看板,工作量相当于重新造了一个调参平台。
为何常见:Sweeps 的「并行训练」表象最直观,而搜索算法、调度协议、看板集成的深层价值需要实际跑一次才开始理解。
误区W&B 是开发阶段用的调试工具,模型上线后就没用了,生产环境的日志应该交给 Prometheus/Grafana 这类监控系统。
正解生产环境的意义上,W&B 的定位不是「服务器监控」而是「模型运行观测」:它可记录线上模型的输入分布漂移、推理延迟、业务指标(如推荐点击率)与模型版本之间的关联。wandb.log() 在推理服务中同样可异步调用,配合 Artifacts 模型版本管理,能回答「当前线上跑的是哪个版本的模型,今天的效果如何」。实践中常见组合是 Grafana 管服务器(CPU/内存/P95 延迟),W&B 管模型行为(输入分布、单样本预测置信度、模型回退后的效果对比)。大型团队也用 W&B 作为线上模型效果回看的「黑盒录音机」。
为何常见:W&B 的 UI(曲线看板、对比图)看起来很像「开发调试工具」,让人忽视其数据记录管道本身不区分开发/生产,以及其模型版本追溯能力在生产中的价值。
面试题
Q1. 执行 wandb.init() 时,下列哪项会被自动记录?
- A.训练数据的全部内容
- B.代码的 Git commit 与运行环境信息← 正确答案
- C.模型权重的所有参数值
- D.用户浏览器的访问历史
答案:B。wandb.init() 会自动捕获代码状态(Git commit、文件 diff)、运行环境(Python 版本、OS、GPU 型号)和系统资源信息。选项 A 的数据内容需由用户显式记录为 Artifact;选项 C 的权重仅在用户手动 wandb.log_artifact() 时保存;选项 D 与 W&B 无关。
Q2. 下列哪种方式可以在完全不联网的环境中记录 W&B 实验数据?
- A.设置环境变量
WANDB_MODE=offline← 正确答案 - B.安装 TensorBoard 插件
- C.使用
wandb.init(sync_tensorboard=False) - D.删除
wandb本地目录
答案:A。WANDB_MODE=offline 让 SDK 只写本地文件(默认 wandb/ 目录),之后可用 wandb sync 手动上传。选项 B、C 与联网无直接关系;选项 D 会直接丢失本地日志数据。
Q3. 在多卡分布式训练(DDP)中,正确使用 W&B 的方式是?
- A.每个 GPU 进程都独立调用
wandb.init()创建独立 run - B.只在 rank 0 进程调用
wandb.init(),其他进程跳过或只参与数据加载← 正确答案 - C.所有进程通过共享文件系统写入同一个
wandb.log() - D.关闭
wandb后改用 print 记录日志
答案:B。多卡训练中所有进程共用同一份代码和指标,如果每个进程都 init() 会生成 N 个几乎重复的 run,污染看板。标准做法是仅在 rank 0 初始化并记录,其余进程的指标通过分布式框架(如 torch.distributed.all_reduce)汇总后一并记录。选项 D 等于放弃实验追踪,不推荐。
Q4. 以下哪些能力属于 W&B 提供的核心功能?
- A.自动超参调优(Sweeps)← 正确答案
- B.数据集与模型版本管理(Artifacts)← 正确答案
- C.前端页面 A/B 测试
- D.LLM 调用追踪与评估(Weave)← 正确答案
答案:ABD。W&B 三大核心模块为 Runs(实验追踪)、Sweeps(超参调优)、Artifacts(版本管理),自 2024 年起新增 Weave 专项支持 LLM 应用追踪与评测。选项 C「前端页面 A/B 测试」不属于 W&B 的能力范围,它面向模型训练而非前端流量实验。
Q5. 下列哪个函数用于在训练循环中记录某一轮的 loss 值?
- A.
wandb.init({"loss": loss}) - B.
wandb.config.update(loss) - C.
wandb.log({"loss": loss})← 正确答案 - D.
run.config["loss"] = loss
答案:C。wandb.log(dict) 是每 step 记录指标的入口,接收一个字典;wandb.config 用于初始化时保存超参(config 在 init 时传入),config.update 只能更新超参而非记录指标曲线。选项 A 参数错误,选项 D 语义不符。
Q6. 关于 W&B 自托管部署,下列说法正确的有?
- A.自托管可完全掌控数据主权,避免数据上传到外部服务← 正确答案
- B.需要自行运维 Kubernetes 集群← 正确答案
- C.自托管版本完全不支持 Sweeps 功能
- D.可通过
WANDB_BASE_URL让 SDK 连接内网实例← 正确答案
答案:ABD。自托管(Dedicated Cloud / On-Prem)的核心价值就是数据不出内网,官方推荐在 K8s 上部署。SDK 通过环境变量 WANDB_BASE_URL 指向自建服务地址。选项 C 错误:自托管版包含 Sweeps 全部功能,只是配置在本地执行。
Q7. 在 W&B 中要记录一张验证集的可视化分割掩码图,最合适的 API 调用是?
- A.
wandb.save("mask.jpg") - B.
wandb.log({"mask": wandb.Image(mask_tensor)})← 正确答案 - C.
wandb.history["mask"] = mask_tensor - D.
wandb.run.summary["mask"] = mask_tensor
答案:B。wandb.Image 专门用于将张量/数组封装为网页端可交互的图表对象,每个 step 可记录多张图并叠加查看。wandb.save() 只是把文件同步到云端但不生成可视化;run.summary 用于保存 run 的最终汇总值而非逐 step 可视化;选项 C 不是合法 API。
Q8. W&B 中「一次实验运行」对应的核心对象是?
- A.project
- B.sweep
- C.run← 正确答案
- D.artifact
答案:C。run 代表一次独立的实验执行(对应一次 wandb.init()),包含该实验的 config、指标历史、产物和系统信息;多个 run 聚合在 project 下便于对比;sweep 是调参任务,artifact 是版本管理单元。
Q9. 关于 W&B 使用中的常见坑,正确的规避方式有?
- A.为 project 统一命名规范,避免
test1、test2堆积← 正确答案 - B.在
config记录数据版本与 git commit,保证可复现← 正确答案 - C.在离线训练机上设置
WANDB_API_KEY注入登录凭据← 正确答案 - D.多卡训练中让每个进程独立
init()以提高日志完整性
答案:ABC。命名规范、完整的 config(含数据/代码版本)、离线机通过环境变量注入 API Key(或用 WANDB_MODE=offline)都是官方推荐实践。选项 D 错误——多卡场景每个进程独立 init() 会产生重复 run,正确做法由 rank 0 统一记录。
Q10. 团队需要让线上模型效果数据与训练时的实验记录贯通查看,最合理的 W&B 方案是?
- A.在推理服务中调用
wandb.log()记录指标,并通过 Artifacts 关联线上模型版本← 正确答案 - B.让推理服务直接读取训练时的 run 数据
- C.用
wandb.Sweep调度线上推理请求 - D.将生产日志写入 TensorBoard 目录
答案:A。推理服务可创建轻量 wandb.init()(如 job_type="inference"),用 wandb.log() 记录线上指标,log_artifact() 引用线上模型版本,从而在 W&B 中贯通「训练看板 → 模型版本 → 线上指标」全链路。选项 B 没有记录线上新数据,选项 C 误用功能,选项 D 无法建立版本关联。
参考来源
- webpageW&B 官网免费注册云端服务,包含项目看板与模型注册表