← 返回博客列表

Weights & Biases 与 MLflow 同步失败:密钥、离线目录和跟踪地址全解

2026-09-13 · 刺猬VPN

训练实验时,Weights & Biases(网页上常写作 wandb)和 MLflow 都用来记参数、指标和模型文件。笔记本上的循环在跑,wandb.ai 里的 run 却不出现,或一直停在未完成。MLflow 用本地目录时正常,把跟踪地址改成远程就报连不上。

密钥、同步进程和工件上传是三步。训练没有报错,不代表记录已经到网页。额度、托管区域和保留时间以官方最新条款为准。

两套记录不要共用一个地址

把 MLflow 的跟踪地址填进 WANDB 的变量不会生效,反过来也一样。项目名在网页上能看到,只说明你打开了项目,不说明这次训练调用了 init。先在代码里确认 init 或 start_run 真的执行了。

对比项Weights & BiasesMLflow
网页wandb.ai 的项目页自建界面或托管界面
登录wandb login,密钥在设置里跟踪地址加可选的账号
环境变量WANDB_API_KEY、WANDB_MODEMLFLOW_TRACKING_URI
离线offline 后再 wandb sync本地目录先写,再同步或换地址
大文件artifact 单独上传artifact 仓库可能是对象存储
失败看起来像run 不出现或一直 running连不上 tracking server

从网页打不开到 run 出现:分步操作

  • 第一步:先把线路准备好,连上刺猬VPN。自定义用户名和密码即可匿名注册,不需要邮箱、也不需要手机号;免费节点永久免费、不限流量、不限速,注册即用。全程 HTTPS+AES 加密传输。打开 wandb.ai 和让训练进程访问 API,都要走得出去;
  • 第二步:浏览器无痕打开 wandb.ai,进入目标项目。页面转圈就先不要改训练代码;
  • 第三步:在设置里复制 API key。本机执行 wandb login。不要把密钥写进仓库。登录成功后再跑一次最短的脚本;
  • 第四步:脚本里应能看到 run 链接。网页上出现对应 run 后,再跑正式训练。没有链接就看终端是不是报了无法通信;
  • 第五步:网络不稳时设 WANDB_MODE 为 offline,训练先写到本地目录。结束后在能联网时执行 wandb sync 把目录传上去。不要在离线模式下刷新网页等 run;
  • 第六步:MLflow 先用默认本地目录跑通 mlflow ui,确认本机界面能看到实验。再把 MLFLOW_TRACKING_URI 指到远程。远程失败时,本地仍应能记;
  • 第七步:工件很大时单独看上传。指标到了、文件没有,是工件存储的地址不通,不是指标接口坏了;
  • 第八步:在 Colab 或远程笔记本上,密钥放在该环境的机密里,不要打印出来。那个环境的出口和你笔记本的出口不是同一条;
  • 第九步:团队项目先看你是不是进了别人的实体或团队。看错团队时,run 会记到另一个列表,你以为同步失败。

按现象排查:登录、同步、工件

网页打不开、run 不出现、文件没传,三步分开。

  • wandb.ai 打不开:浏览器到站点不通。换节点后无痕重开,再谈密钥;
  • api_key not configured:环境里没有密钥。重新 login 或设置变量,确认没有多余空格;
  • Error communicating with wandb:训练进程到 API 的连接失败。固定节点重试。短脚本能通、长训练不能,就改用离线再 sync;
  • 网页停在 running:进程被杀掉,结束信号没送到。离线目录还在的话用 sync。没有目录就是没写上;
  • MLflow 连不上跟踪服务:地址错、端口没开,或远程主机从这台机器访问不到。先 curl 或浏览器打开该地址的健康页;
  • 指标在、工件不在:对象存储或 artifact 路径另算。核对存储凭证,不要重跑整个训练;
  • Colab 能记、本机不能:两边密钥或出口不同。在失败的那一边单独 login;
  • 看错团队:切换网页左上角的实体。run 可能已经在另一个团队里。

记录流量和训练流量不是一回事

免费节点适合先打开网页并完成 login。边训练边看曲线,用时长套餐按周期计费,期间不限流量、不限速。实际可用性取决于当前网络环境。

对比项会员节点给记录用离线再同步免费节点试登录
打开网页项目页能进网页仍要能开才看得到适合先登录
训练中上报进程能连上 API训练时不依赖 API短脚本可以
大工件上传要持续连接结束后一次性传不适合传大文件
额度不改变厂商配额同左同左
长时间训练时长套餐期间不限流量、不限速本地磁盘要够永久免费、不限流量、不限速
适合场景希望边跑边看曲线出口不稳时确认密钥是否有效

本机、Colab 和远程跟踪要各写一套

本机离线目录在 wandb 的本地文件夹里。换电脑不会把这个目录带走。要在另一台机器上看曲线,必须 sync 成功,或训练直接在那台机器上上报。只拷贝代码不拷贝离线目录,网页上不会出现上次的 run。

Colab 运行时回收后,没同步的离线目录会一起消失。在会话结束前执行 sync,或让训练直接在线上报。不要以为笔记本里的文件还在云端虚拟机上。

MLflow 的远程库若装在你自己的服务器,打开网页和写入跟踪是同一台机器的两个端口。安全组只放行了界面、没放行跟踪端口时,页面能开、训练写入超时。两个端口都要测。

密钥轮换后,旧环境变量仍指向旧钥匙,现象是突然无法通信。在设置里作废旧钥匙,把新钥匙写进失败的那一个环境,不要只改网页上的显示名。

一次训练里如果开了多个 run,网页上会出现多条。你对照的是终端最后打印的那条链接。点开旧链接会看到已经结束的曲线,误以为这次没写上。以时间最新、名字和脚本里一致的那条为准。

指标名称前后有空格时,网页上会变成两条曲线。合并前先改脚本里的名字,不要在网页上手动改历史点。历史点改不了,新的运行才会用新名字。

MLflow 的实验名和 run 名不同。实验是一组,run 是其中一次。你在界面上点进错误的实验,会以为跟踪失败。地址能开、列表是空的,先切换实验下拉框,再断定没有写入。

磁盘上的离线目录不要随手删。sync 失败时目录还在,修好网络后可以再传。删了就只能重跑。传完并在网页上核对条数之后,再按文档清理本地目录。

曲线图的时间范围如果停在昨天,今天的 run 会像没出现。先把时间范围改到包含这次运行的时刻,再判断同步失败。范围对了仍没有,才去看终端链接。

同一个项目里别人的 run 和你的 run 混在一起时,用你脚本里的名字过滤。不过滤会以为自己的指标被写乱。过滤后只剩你的名字,再看点是不是连续。断掉的一段多半是进程中途退出,不是网页把点删了。

MLflow 写入远程库之后,本机界面如果还指着本地目录,会看不到远程的实验。启动界面时要指到同一个跟踪地址。两个界面各看各的库,不要拿本地的空列表去否定远程已经写入。

密钥只放在当前环境。笔记本、Colab 和服务器各有一份配置。你在笔记本上 login 成功,不会自动写进服务器。服务器上报失败时,就在服务器上重新 login,不要反复重启笔记本上的进程。

终端里的报错要和网页上的 run 一起看。终端已经打印完成,网页仍是运行中,多半是结束请求没送到。对这一条执行同步或在网页上等它超时关闭。不要再开一条同名运行,否则曲线会并排两条,难以分辨哪条才是完整的。

表格里的参数如果显示成空白,先看脚本有没有在开始时传入。没传入就不是同步把参数弄丢了。传入之后中途改了字典,网页上通常只保留开始时的那一版。要看中途的值,就把值写成指标点,而不是只改参数字典。

同步命令如果提示目录里没有可上传的运行,先确认离线模式真的写过文件。目录是空的,说明训练没走到记录那一步,不是上传失败。先让最短脚本在离线目录里留下文件,再执行同步。有文件才谈网络。

网页项目设置里的可见范围如果是私有,队友会看不到你的运行,你自己用另一个账号看也会是空的。先用创建运行的那个账号打开项目。确认是私有而不是没同步之后,再决定要不要改可见范围。改成公开之前,先确认运行里没有不该公开的密钥、数据或日志,确认无误后再保存。

和 Kaggle、Colab 怎么分工

数据集下载和 Kaggle 笔记本见 Kaggle 国内访问。Colab 的登录和运行时见 Google Colab。那些环境能跑,不代表 wandb 的 API 也通。

实验记录的密钥不要填进数据集的下载令牌。三条凭证各放各的机密位置。

先让一个最短脚本在网页上出现 run,再跑整夜训练。整夜训练失败后才发现密钥没配,离线目录可能已经因为环境回收丢掉了。

常见报错速查表

现象原因解决办法
网页打不开站点未走线路换节点后无痕重开
api_key not configured没有密钥或有空格重新 login
communicating with wandb进程到不了 API固定节点或离线后 sync
一直 running结束信号没送到对离线目录执行 sync
tracking server 连不上地址或端口不通先打开跟踪地址
只有工件失败存储凭证或路径不要重跑指标
看错团队实体切换错了到正确团队的项目页

高频问答

  • 问:训练没报错,为什么网页是空的?答:记录是另一次上传。看终端有没有 run 链接;
  • 问:离线模式什么时候用?答:出口不稳时先写本地,再在能联网时 sync。离线期间刷新网页不会出现 run;
  • 问:MLflow 和 wandb 能自动互相同步吗?答:不能。地址和密钥各配各的;
  • 问:免费节点够不够?答:够登录和跑短脚本。长时间上报用时长套餐,期间不限流量、不限速;
  • 问:Colab 结束后 run 没了?答:没来得及 sync 的目录会随运行时回收。结束前先同步;
  • 问:密钥能写进笔记本吗?答:不要。放在环境机密里,旧钥匙泄露就作废。

先看到一条 run 再跑长训练

W&B 不同步、密钥未配置、离线目录没 sync,MLflow 跟踪地址连不上、工件单独失败,都要先让最短脚本在正确的团队里出现一条 run。长训练再开始。出口不稳就离线写入,结束前同步。不要把两套系统的地址抄混。

刺猬VPN 采用 HTTPS+AES 加密传输,支持断线保护。自定义用户名和密码即可匿名注册,不需要邮箱和手机号。免费节点永久免费、不限流量、不限速;时长套餐按周期计费,期间不限流量、不限速。一个账号支持多设备同时在线。厂商额度和区域以官方最新条款为准。实际可用性取决于当前网络环境。

开始使用刺猬VPN:HTTPS+AES 加密、零日志,匿名注册无需邮箱

刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。