想象你是一位正在研发新菜的大厨。过去每调一次配料、每改一次火候,都靠小本子手写记录,真到复盘时却常常忘了哪道菜加了哪味料。现在你有了一个智能“后厨实验记录本”——它会在你每次做菜时自动记下配料、火候、试吃评分,还能把几道实验菜并排对比,让你一眼看出哪次配方最值得推广。Weights & Biases(简称 W&B)就是 AI 训练界的这本实验记录本。 训练模型就像研发一道菜,超参数是配料,Loss 曲线是试吃评分,模型权重是最终成品。这篇内容就带你学会用 W&B 科学地记录实验、对比结果、分析超参数、管理模型和数据集版本,让每个优化决策都有数据支撑,而不是凭感觉“拍脑袋”。

岗位关联

对 AI 从业者而言,掌握 W&B 等于建立一套可追溯、可对比、可协作的实验管理体系,让你从“调参侠”进化为“数据驱动决策者”,是 MLOps 能力的关键一环。

目录
  1. 可视化演示
  2. 实验管理认知:从凭感觉到有台账
  3. 项目与运行:按菜系分册,按菜品记页
  4. 初始化配置:提笔先写配料表
  5. 指标曲线记录:让试吃评分变成曲线
  6. 实验对比分析:把几道菜并排端上来
  7. 超参数分析:找出最关键的“那味料”
  8. 模型版本管理:菜谱也要有版本号
  9. 团队协作监控:后厨全员共看一本台账
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

通过训练指标实时记录与Loss/Acc曲线绘制、多实验超参数对比分析、以及Artifact模型版本管理与团队协作三个模式,展示Weights and Biases实验管理平台的核心工作流。

本节配有交互动效(进入视口后自动加载,约 3KB)。

训练指标实时记录与Loss曲线绘制 wandb.log()在每个step增量记录Loss和Acc等指标实时绘制曲线 同时记录超参数代码版本系统资源构成完整实验上下文 wandb.log({loss, acc, lr}) → Dashboard 训练过程从黑箱变为可追溯可复现

实验管理认知:从凭感觉到有台账

老王的厨房里挂着一个小白板,上面写满了各种随手记下的数字:盐 3g、糖 5g、大火 3 分钟……可到了月底复盘,他却看不明白当时哪道菜加了什么。做菜靠灵感和手感,偶尔成功,却很难复制。AI 训练也是这样:模型结构、学习率、数据增强方式、随机种子,任何一个变量变化都会让结果跳动。没有科学记录,你根本不知道这次效果提升是“改对了”还是“碰巧”。

W&B 就是给 AI 训练准备的“后厨台账”。它把每次实验当成一个条目,自动记录超参数、训练指标、环境信息、代码状态和输出文件。你不需要自己拿笔抄,系统会在训练过程中安静地把一切归档。最核心的三个记录要素是:配置(配料)、指标(试吃评分)、产物(成品菜)。只要这三样齐全,任何一次实验都可以被还原和比较。

在真正调参之前,先要理解实验空间的规模。假设你要调整 k 个超参数,每个超参数有若干种选择,那么可能的组合数量是这些选择数的乘积:

所以,W&B 存在的意义是把这 125 种组合的结果全都装进一个可检索的台账里。下次调参时不再靠回忆,而是翻开台账找答案。老王的厨房也因此从“玄学做菜”变成了“科学研发”。

N=∏i=1kpi\displaystyle N = \prod_{i=1}^{k} p_i
这个公式说明,哪怕只有 3 个超参数、每个取 5 种值,也会有 125 种组合。如果不借助实验管理工具,人脑根本记不住这么多结果。
  1. 连乘符号积符号表示把多个数值依次相乘,就像把所有配料的可能选择数乘在一起。
    ∏i=1k\prod_{i=1}^{k}
  2. 超参数数量范围i 从 1 一直取到 k,代表一共有 k 个待调整的超参数。
    i=1,2,…,ki=1,2,\dots,k
  3. 单个超参的选择数p_i 表示第 i 个超参数可以取值的个数,比如学习率可选 3 种,那么 p_i=3。
    pip_i

项目与运行:按菜系分册,按菜品记页

老王把记录本按菜系分成了好几册:川菜一册、粤菜一册、甜品一册。每次研发新菜,就在对应分册里新开一页,记满这一页的内容。W&B 中的项目(Project)就是那一册,运行(Run)就是那一页。一个项目对应一类研究主题,比如“图像分类模型优化”;一次运行对应一次完整的训练实验,比如“用学习率 0.01 训练 ResNet”。

每一次 Run 都有独立的名字和 ID,像菜谱页上的编号。它有明确的起点和终点,也有自己的生命周期:一开始是“运行中”(running),正常结束是“已完成”(finished),中途崩溃则是“失败”(crashed)。通过观察这些状态,你能快速找出哪些实验没跑完,哪些还在锅里炖着。

一次 Run 的持续时间很好计算,训练开始和结束时间相减即可:

这样,项目、Run、生命周期、时间戳四件事编织成一套清晰的组织结构。老王翻记录本时,先看菜系分册,再找对应菜品的页码,最后看一眼烹饪时长,整个实验脉络一目了然。

Δt=tfinish−tstart\displaystyle \Delta t = t_{\text{finish}} - t_{\text{start}}
这个公式提醒我们,每次 Run 都会自动带上时间戳,W&B 会用时间轴帮你管理实验顺序。
  1. 时间差训练持续时长等于结束时刻减去开始时刻,就像做菜从下锅到出锅花了多久。
    Δt\Delta t
  2. 结束时刻t_{finish} 是训练结束的时间点,由 W&B 自动记录。
    tfinisht_{\text{finish}}
  3. 开始时刻t_{start} 是训练开始的时间点,代表 Run 的启动瞬间。
    tstartt_{\text{start}}

初始化配置:提笔先写配料表

每道菜开做之前,老王都会先在记录本上写下菜名和配料表:盐几克、糖几克、油温几度。在 W&B 里,这个动作就是调用 wandb.init() 开启一个新 Run,再用 config 字典写下所有超参数。这个初始化动作只做一次,就像一道菜只在记录本上占一页,不会中途换页。

config 是一个轻量级的配置表,可以记录学习率、批次大小、网络层数、数据路径等一切你关心的参数。把这些参数写进 config 而不是散落在代码各处,有两个好处:一是 W&B 会自动把配置展示在 Run 页面;二是每次实验的配置都存档,事后能精准还原“当时用了什么配料”。

从数学角度看,config 本质上是一个键值映射,每个超参数名对应一个值:

配料表越完整,菜越容易被复制。所以每次实验前花几秒钟把 config 写好,是 W&B 使用中最值得养成的习惯。老王常说:“配料表都不写,后面的经验全是空中楼阁。”

C={(k1,v1),(k2,v2),…,(kn,vn)}\displaystyle C = \{(k_1, v_1), (k_2, v_2), \dots, (k_n, v_n)\}
这个集合表示一张完整的配置表,键是参数名,值是具体数值,相当于菜谱的配料清单。
  1. 配置集合C 代表配置表,大括号里装着一系列“参数名—数值”对。
    C={(k1,v1),(k2,v2),…,(kn,vn)}C = \{ (k_1, v_1), (k_2, v_2), \dots, (k_n, v_n) \}
  2. 参数名k_i 是第 i 个超参数的名称,比如 “learning_rate”。
    kik_i
  3. 参数值v_i 是第 i 个超参数的具体取值,比如 0.001。
    viv_i

指标曲线记录:让试吃评分变成曲线

菜下锅后,老王每隔一分钟就会让试吃员尝一口,把“咸淡、甜度、口感”打分记在时间轴上。训练模型也一样,每个 epoch 结束后我们需要记录 Loss、准确率等指标,形成一条连续的曲线。在 W&B 中,最常用的 API 是 wandb.log(),它接收一个字典,比如 {"loss": 0.32, "accuracy": 0.91},每调用一次就记录一个时间点。

与 config 不同,log 记录的是动态变化的指标,会实时绘制成曲线。Loss 曲线是整个训练过程的状态仪表盘:曲线快速下降说明模型在正常学习;曲线震荡不停说明学习率可能过大;曲线稳步走低后平台期则说明该调整策略了。W&B 会自动计算每个指标的最大值、最小值、均值等 summary 信息,方便后续对比。

对于回归类任务,最常用的 Loss 是均方误差,它衡量模型预测值与真实标签的差距:

通过 log 持续记录这条 Loss 曲线,你就拥有了一份训练过程的“心电图”。曲线平缓扎实,模型就稳;曲线上下乱跳,就该检查学习率或数据质量了。

L=1N∑i=1N(yi−y^i)2\displaystyle L = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2
这个 Loss 公式把每个样本的预测误差平方后平均,误差越大,Loss 越高;Loss 曲线下降,说明模型越来越准。
  1. 平均符号把所有样本的误差累加后除以 N,得到平均误差,相当于所有试吃评分的平均值。
    1N∑i=1N\frac{1}{N} \sum_{i=1}^{N}
  2. 单个样本误差平方真实值 y_i 减去预测值 ŷ_i,取平方是为了让正负误差都变成正数,并放大大误差。
    (yi−y^i)2(y_i - \hat{y}_i)^2
  3. 样本编号i 从 1 到 N 遍历训练集中的每个样本。
    i=1,2,…,Ni = 1, 2, \dots, N

实验对比分析:把几道菜并排端上来

老王研发新菜时,最怕的就是上一道菜和下一道菜隔了两天,味道记忆已经模糊。于是他会在同一天把几道候选菜并排摆在桌上,让试吃员一起打分。W&B 的实验对比就是这个动作。只要多次 Run 在同一个 Project 下,它们的 Loss 曲线、准确率曲线就能在同一个图表里同时展示,颜色不同、一目了然。

除了曲线同图,W&B 还支持按标签分组对比。比如按“数据增强方式”分组,就能看出哪些实验用了增强、哪些没用,组间差异立刻显现。你还可以用表格视图筛选运行,只看学习率大于 0.01 且准确率大于 0.9 的实验,把 125 种组合缩小到最值得关注的几条。

评价分类模型时,准确率是最直观的指标,它在混淆矩阵基础上定义:

数据对比让选择变得简单:不用猜“这道菜可能更好”,而是直接看曲线和表格“哪道菜确实更好”。W&B 把对比变得像试吃会一样轻松,每一次调参都有据可依。

Accuracy=TP+TNTP+TN+FP+FN\displaystyle \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
准确率等于所有预测正确的样本数除以总样本数,是试吃员“一致好评”的比例。
  1. 真正例与真负例之和TP 是正类预测对的个数,TN 是负类预测对的个数,两者相加就是全部预测正确的样本数。
    TP+TNTP + TN
  2. 所有样本总数还包括 FP 和 FN,即误报和漏报,四项加总才是完整数据集大小。
    TP+TN+FP+FNTP + TN + FP + FN
  3. 除法正确数除以总数,得到 0 到 1 之间的比率,乘以 100% 就是大家常说的准确率。
    TP+TNTP+TN+FP+FN\frac{TP + TN}{TP + TN + FP + FN}

超参数分析:找出最关键的“那味料”

老王逐渐发现,有些实验菜好吃,有些难吃,但说不上来是哪一味料起的作用。于是他把所有候选菜的配料表和成品评分摊开,统计盐放多放少、糖放多放少与评分的关系。W&B 的超参数分析正是干这件事的:把多个 Run 的 config 和指标汇总,用平行坐标图展示每条实验的完整轨迹,再用相关性分析找出对结果影响最大的超参数。

平行坐标图里,每一列是一个超参数,每一条折线是一次 Run。折线在哪个区间对应高准确率,这个区间就是值得探索的“口味区间”。相关性分析则更进一步,计算某个超参数与最终指标之间的关联强度。皮尔逊相关系数是最常见的度量:

通过这个分析,老王终于知道“酱料不是越多越好,适度区间才是关键”。你也能从百组实验中筛选出最优参数组合,而不是漫无目的地反复试。

r=∑i=1n(xi−xˉ)(yi−yˉ)∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2\displaystyle r = \frac{\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2}\sqrt{\sum_{i=1}^{n}(y_i - \bar{y})^2}}
相关系数 r 的范围在 -1 到 1 之间,接近 1 表示超参数越大指标越好,接近 -1 表示超参数越小指标越好,接近 0 表示两者没什么关系。
  1. 分子协方差:同时看超参数 x 和指标 y 偏离各自平均值的程度,两者同向偏离则乘积为正,反向则乘积为负。
    ∑i=1n(xi−xˉ)(yi−yˉ)\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y})
  2. 分母第一项对 x 的偏差平方求和后开根号,表示 x 的波动幅度。
    ∑i=1n(xi−xˉ)2\sqrt{\sum_{i=1}^{n}(x_i - \bar{x})^2}
  3. 分母第二项对 y 的偏差做同样处理,表示 y 的波动幅度。
    ∑i=1n(yi−yˉ)2\sqrt{\sum_{i=1}^{n}(y_i - \bar{y})^2}
  4. 标准化用协方差除以两个波动幅度的乘积,把数值标准化到 -1 到 1 之间。
    r=cov(x,y)σxσyr = \frac{\text{cov}(x,y)}{\sigma_x \sigma_y}

模型版本管理:菜谱也要有版本号

老王的菜谱不是一成不变的。今天改良之后,他会把新版本记为“回锅肉 2.0”,旧版也保留,方便随时回退。W&B 中用 Artifacts 来管理这种版本化产物。Artifacts 可以理解为一件有版本号的“制品”,既可以是模型权重文件,也可以是数据集、代码包,甚至是训练好的特征文件。

每次训练结束后,把一个模型权重文件记录为 Artifact,就会生成一个带版本的制品条目。之后每次更新,版本号自动递增,你可以追溯“这个模型是用哪份数据、哪份代码训练出来的”。数据集同样可以被注册为 Artifact,每次数据清洗后重新发布一个版本,训练和评估就能精确对齐“用的是哪批食材”。

版本号通常遵循三段式语义化规则:

有了版本号,老王回退到 1.0 版本只需一眼。模型交付时,把权重、数据、代码串成一条可追溯链条,老板问起“这个模型怎么来的”,你就能像报菜名一样列出完整版历。

v=M.m.p\displaystyle v = M.m.p
这里 M 是大版本号,m 是小版本号,p 是补丁版本号。比如 v2.1.3 表示主版本 2、次版本 1、补丁 3。
  1. 主版本号M 代表 MAJOR,当模型结构发生重大变化时递增,相当于菜系从“川菜”变成“融合菜”。
    MM
  2. 次版本号m 代表 MINOR,当模型加了新功能或改动较大但结构不变时递增,比如改了一味配料。
    mm
  3. 补丁版本号p 代表 PATCH,用于小修复或参数微调,比如盐量减少 0.5g。
    pp

团队协作监控:后厨全员共看一本台账

当老王的厨房从一个人变成一支团队,记录本就不能再锁在自己的抽屉里了。W&B 的共享看板(Report)可以把图表、结论、图片整理成一份可编辑的报告,团队成员随时查看,就像后厨墙上挂着一块大屏幕,实时滚动所有实验状态。每个人都不需要互相口头问“你那道菜做得怎么样了”,看板自己会说话。

团队工作流方面,W&B 提供了统一的工作空间,成员围绕同一个 Project 协作,避免各记各账。警报通知则是后厨的“火警铃”:你可以设定当 Loss 超过某个阈值或指标长时间不下降时,系统自动给相关人员发提醒。这种自动化监控把人工盯训练的精力解放出来,让团队把时间花在更重要的优化上。

警报中的滑动平均常常比原始指标更稳定,计算公式为:

共享看板让团队对齐目标,警报系统让人不再熬夜盯训练。老王的后厨从此变成一个高效协作的研发中心,每道菜从研发到上桌都有迹可循。

EMAt=αxt+(1−α)EMAt−1\displaystyle \text{EMA}_t = \alpha x_t + (1-\alpha) \text{EMA}_{t-1}
这个公式表示当前平滑值等于新观察值和上一次平滑值的加权平均,α 控制了对新数据的敏感度。
  1. 当前平滑值EMA_t 是第 t 时刻的指数移动平均,相当于最近几次试吃评分的“加权感觉”。
    EMAt\text{EMA}_t
  2. 当前观测值x_t 是第 t 时刻刚记录到的原始指标,比如这一秒的 Loss。
    xtx_t
  3. 权重系数α 在 0 到 1 之间,α 越大越信任新数据,α 越小曲线越平滑。
    α\alpha
  4. 上一个平滑值EMA_{t-1} 代表上一时刻的平滑结果,平滑公式会一直向前递推。
    EMAt−1\text{EMA}_{t-1}

AI 应用场景

深度学习工程师调参对比

阶段:模型训练与调参

解决的问题:传统调参靠经验盲搜,每次改动后结果靠截图记录,实验一多就混乱,无法系统对比。W&B 自动记录 config 和指标,训练结束即可比曲线,用相关性分析找出最优超参区间。

具体案例:工程师训练图像分类模型时,将 3 组学习率和 4 组数据增强策略组合成 12 个 Run,统一记录到同一 Project。通过 W&B 的平行坐标图,他发现增强策略对准确率的影响远大于学习率,于是优先优化数据增强方向。

算法团队模型交付与追溯

阶段:模型版本管理与上线交付

解决的问题:上线后效果回退时,传统方式找不到对应训练数据和代码。W&B Artifacts 把模型权重、数据集版本和训练配置绑定在一起,实现端到端可追溯。

具体案例:推荐系统团队每月发布一次新模型,每次训练完成后将模型权重注册为 Artifact,同时把离线评估数据集也发布为新版本。线上效果波动时,团队回看 Artifact 版本链,快速定位到是数据分布变化还是模型结构问题。

Python 演示

python34 行
import wandbimport random  def simulate_epoch(epoch):    # 模拟一个 epoch 的 loss 和 accuracy    loss = 1.0 / (epoch + 1) + random.uniform(0, 0.05)    acc = 1.0 - loss    return loss, acc  def main():    # 初始化一个 Run,等同于在记录本上开新页    run = wandb.init(        project="food-lab",        mode="offline",        config={"lr": 0.01, "epochs": 5, "batch_size": 32}    )     for epoch in range(run.config["epochs"]):        loss, acc = simulate_epoch(epoch)        # 记录动态指标,形成 Loss 曲线        wandb.log({"epoch": epoch, "loss": loss, "accuracy": acc})     # 把当前脚本本身作为模型制品登记到 Artifact    artifact = wandb.Artifact("model-v1", type="model")    artifact.add_file(__file__)    run.log_artifact(artifact)     run.finish()  if __name__ == "__main__":    main()
目的:演示 W&B 最核心的三个步骤——初始化 Run、记录训练指标、登记模型 Artifact,跑完后可以在 W&B 面板看到一条完整的 loss 曲线和一个模型版本。
  1. run = wandb.init(...)开启一个新的 Run,相当于在实验记录本上开新页。
  2. project="food-lab"指定项目名,把实验归档到对应分册。
  3. mode="offline"使用离线模式,不强制登录远端面板,方便本地验证流程。
  4. config={...}把学习率、轮数、批次大小等超参数写入配置表。
  5. wandb.log({...})每轮记录 loss 和 accuracy,W&B 会自动画出曲线。
  6. wandb.Artifact("model-v1", type="model")创建模型制品,等价于给成品菜贴版本标签。
  7. artifact.add_file(__file__)把当前脚本作为文件放入制品,保证可追踪。
  8. run.log_artifact(artifact)把制品登记到 Run 中,实现模型版本与实验关联。
  9. run.finish()结束本次 Run,相当于合上这一页记录。

常见误区

误区我只关心训练曲线,超参数写在代码注释里就行,反正自己记得住。

正解实验管理的核心是复现。不记录 config,等于菜谱上只有成品照片却没有配料表。一周后你根本记不清当时的 batch_size 是多少。W&B 的 config 专门用于保存超参数,初始化时就要写好,这才是科学实验的起点。

为何常见:新手容易觉得结果对了就行,忽略了“可复现”比“当前结果”更重要,于是省略了最基础的配置归档。

误区每个 epoch 都调用一次 wandb.init(),这样每一步都能重新记录,数据更全。

正解一个 Run 对应一次完整训练。循环里反复 init 会创建几十个 Run,导致同一个实验被拆散,对比视图变成一团乱麻。正确做法是脚本开头 init 一次,循环内部只用 wandb.log() 记录动态指标。

为何常见:初学者把 init 和 log 混为一谈,以为每次记录都要“重新开一页”,其实记录只需要 log。

误区不管什么任务,All in One 项目,反正都有曲线能看。

正解Project 是实验的第一层分类。不同研究主题应该分不同项目,比如“图像分类”和“目标检测”别混在一起。就像菜谱要按菜系分册,混着写后面根本翻不到。

为何常见:项目等于文件夹,用户嫌新建项目麻烦,结果所有实验叠加在同一张图上,对比时找不到重点。

误区看到某组实验准确率高,就认为对应的超参数一定好,手动记录几个数字就完事。

正解高准确率可能是多个因素共同作用的结果。应该借助 W&B 的平行坐标图和相关性分析,从所有 Run 中寻找稳定的规律,而不是被个别“幸运实验”带偏。

为何常见:人脑天然喜欢简单归因,看到结果好就忽略其他变量,缺少系统分析意识。

误区模型文件保存好就行,数据集又不会跑,没必要记版本。

正解同一个模型在不同数据集上训练,效果天差地别。数据集版本应与模型版本绑定,否则模型出问题后无法判断是代码、数据还是训练配置导致的。W&B Artifacts 能同时管理数据和模型,保证“数据-模型-配置”三者对齐。

为何常见:数据集通常是静态文件,人们默认它不变,但数据清洗、扩充、标注修正都会改变版本,忽略记录就等于埋雷。

面试题

Q1. 在 W&B 中,一次独立的训练过程被称为什么?

单选题 · easy

  • A.实验项目
  • B.训练运行← 正确答案
  • C.数据版本
  • D.模型注册

答案:B。W&B 用 Project 表示一组相关实验,用 Run 表示一次独立训练。一次训练过程就是一次 Run,相当于记录本上的一页;项目则是整本分册。

Q2. 要记录学习率、批次大小这类训练配置,应写入 W&B 的哪个区域?

单选题 · easy

  • A.运行配置← 正确答案
  • B.图表配置
  • C.网络配置
  • D.采样配置

答案:A。运行配置即 config,专门保存超参数和实验设置。它相当于菜谱上的配料表,是复现实验的关键。

Q3. 训练中实时记录 loss 和准确率,应该调用哪个 API?

单选题 · easy

  • A.开始运行
  • B.记录指标← 正确答案
  • C.保存模型
  • D.结束会话

答案:B。W&B 的核心记录 API 是 wandb.log(),每次调用传入一个字典,包含需要记录的指标,如 loss、accuracy。

Q4. 想对比同一项目下不同学习率的实验,正确的做法是?

单选题 · mid

  • A.每次新建项目
  • B.记录 config 并多次运行← 正确答案
  • C.只修改代码不记录
  • D.在注释里手动标记

答案:B。同一项目下启动多个 Run,并把 learning_rate 写进 config,W&B 才能把不同学习率的曲线画在一张图上对比。分开建项目会导致实验碎片化。

Q5. 以下哪种图表适合观察多个超参数与最终指标的关系?

单选题 · mid

  • A.损失曲线
  • B.平行坐标图← 正确答案
  • C.柱状统计图
  • D.圆形饼图

答案:B。平行坐标图中每个维度是一列超参数,每条折线是一次实验,能同时展示多维超参与指标之间的关系,适合寻找最佳组合。

Q6. 在训练循环中反复调用 wandb.init(),最可能带来什么后果?

单选题 · hard

  • A.产生多个运行搞乱对比← 正确答案
  • B.训练速度大幅提升
  • C.数据集自动增强
  • D.梯度自动消失

答案:A。每个 init 都会创建一个新 Run,一个实验被拆成几十个 Run,对比面板就会混乱。正确的做法是脚本开始时 init 一次,循环里只用 log。

Q7. 要把实验面板分享给团队其他成员查看,应该使用 W&B 的哪个能力?

单选题 · hard

  • A.本地缓存
  • B.共享看板← 正确答案
  • C.模型注册
  • D.数据清理

答案:B。W&B 的 Report 共享看板可以把曲线、表格、结论整理成可视化报告,团队成员通过链接即可查看,实现协作透明化。

Q8. W&B 的 Artifacts 功能可以管理哪些内容?

多选题 · mid

  • A.模型权重← 正确答案
  • B.数据集版本← 正确答案
  • C.项目文档← 正确答案
  • D.超参配置

答案:ABC。Artifacts 是版本化制品,模型权重、数据集、文档都可以纳入管理。超参配置属于 config 而不是 Artifacts,两者分工不同。

Q9. 关于 wandb.log() 的正确说法是?

多选题 · mid

  • A.一次可记录多个指标← 正确答案
  • B.连续记录会生成曲线← 正确答案
  • C.必须每个 step 都调用
  • D.可记录自定义图表← 正确答案

答案:ABD。log 可以传入字典同时记录多个指标,多次调用后自动形成曲线。记录频率应根据训练速度灵活调整,并不是必须每个 step 调用。

Q10. 下面哪些因素会影响一次模型实验的可复现性?

多选题 · hard

  • A.数据集版本← 正确答案
  • B.超参配置← 正确答案
  • C.随机种子← 正确答案
  • D.运行环境← 正确答案

答案:ABCD。数据、配置、随机种子、运行环境都会影响训练结果。W&B 会记录环境信息和 config,配合 Artifacts 管理数据和模型,才能实现完整复现。