1. 离线使用wandb保存数据
project = "project_name"
# wandb.login(key=' ')
os.environ["WANDB_MODE"] = "offline"
wandb.init(
project=project,
entity=config["WANDB_ENTITY"],
config=config,
group=config["WANDB_GROUP"],
name=config["ENV_NAME"]
)
保存的文件存储在wandb文件夹中:
2. 在线上传wandb数据
单个文件上传:
激活已经按照wandb的环境,运行wandb sync wandb/offline-run-…
批量上传(linux)
运行脚本如下,保存为wandb.sh:
#!/bin/bash
## 1. 强制登录验证(避免因登录状态过期导致失败)
#wandb login --relogin
# 2. 进入您指定的目录(已根据您提供的路径调整)
cd /home/rd-111s/QYJ/code/Craftax_text/Masked_Language-RL/offlinewandb/wandb
# 3. 智能同步所有有效记录(严格匹配图片中的命名模式)
valid_runs=0
for dir in offline-*; do
# 精确过滤条件(排除数字/office/明显错误命名)
case "$dir" in
offline-run-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9][0-9][0-9]-[a-z0-9]*)
echo "🔵 正在同步: $dir"
if wandb sync "$dir" 2>/dev/null; then
((valid_runs++))
echo "✅ 同步成功"
else
echo "❌ 可能不是有效记录(已跳过)"
fi
;;
*)
echo "⚪️ 跳过无效目录: $dir"
;;
esac
done
# 4. 结果汇总
echo "-------------------------"
echo "共找到 $valid_runs 个有效记录"
echo "登录 https://wandb.ai 查看结果"
设置可执行权限:chmod +x wandb.sh
运行脚本: ./wandb.sh
批量上传(window)
新建一个txt记事本
复制下面脚本到记事本中
另存为wandb.ps1
在编码选项中选择"UTF-8 with BOM"(这是关键),保存文件
执行建议打开powershell:
# 先执行这条命令改变控制台编码
chcp 65001
# 然后运行脚本
.\wandb.ps1
确保已安装 Python 和 wandb 库(可以激活一个按照wandb的环境再运行脚本)
# 强制登录验证(可选)
# wandb login --relogin
# 进入您指定的目录(已根据您提供的路径调整)
Set-Location "F:\qyj-project\wandb\wandb"
# 初始化同步计数器
$validRuns = 0
# 获取所有 offline-* 开头的文件夹
$folders = Get-ChildItem -Directory -Name | Where-Object { $_ -like "offline-*" }
foreach ($dir in $folders) {
# 检查目录名是否符合 offline-run-YYYYMMDD_HHMMSS-xxxxxx 的格式
if ($dir -match "^offline-run-\d{8}_\d{6}-[a-z0-9]+$") {
Write-Host "🔵 正在同步: $dir"
wandb sync $dir 2>$null
if ($LASTEXITCODE -eq 0) {
$validRuns++
Write-Host "✅ 同步成功"
}
else {
Write-Host "❌ 可能不是有效记录(已跳过)"
}
}
else {
Write-Host "⚪️ 跳过无效目录: $dir"
}
}
# 输出汇总结果
Write-Host "-------------------------"
Write-Host "共找到 $validRuns 个有效记录"
Write-Host "登录 https://wandb.ai 查看结果"