外观
实验跟踪与任务编排
工具应让 Claim、配置、代码、数据、指标和产物形成可追溯链条。平台中的曲线不是最终事实来源:论文关键数字仍要导出为可审查表格,并与评价脚本相互核对。
Weights & Biases
W&B 记录 config、metric、table、media 和 Artifact。每个 run 至少关联 Git commit、数据版本、随机种子、主机与启动命令;同名指标保持定义一致。
python
import wandb
with wandb.init(project='baseline', config={'lr': 3e-4}) as run:
run.log({'train/loss': 0.42, 'step': 100})不要上传密钥、个人数据和未经授权的样本。离线或受限环境使用平台支持的离线模式,再在合规网络同步。
SwanLab
SwanLab 同样提供训练指标、图表和实验协作。接入原则与 W&B 一致:统一 step 语义、分组和命名,记录代码与数据版本,控制敏感数据上传。选择平台时比较本地部署、网络、团队协作和已有集成,不要同时向多个平台重复记录所有内容。
TensorBoard
TensorBoard 读取事件文件展示 scalar、image、histogram 和 graph。日志目录按实验隔离,避免多个不兼容 run 混写;网络访问通过 SSH 隧道或认证代理,而不是把端口直接开放公网。
MLflow
MLflow Tracking 记录参数、指标和 Artifact,并可管理模型生命周期。后端存储与 Artifact 存储是两个概念,部署前分别规划数据库、对象存储、权限与备份。自动记录很方便,但仍要检查实际捕获了哪些参数和文件。
Hydra
Hydra 用层级配置和 override 组织实验:
bash
python train.py model=base data=dataset_a seed=1
python train.py --multirun seed=1,2,3 optimizer.lr=1e-4,3e-4保存最终解析配置而不只保存 override。注意 Hydra 可能改变工作目录;文件路径应使用明确的原始目录或绝对规则。
Optuna
Optuna 通过 trial 建议参数、报告中间值并剪枝。先定义搜索空间、预算、主指标和失败处理,再启动并行搜索。最终模型不能用测试集挑选超参数,最优 trial 仍需用固定种子或多次运行确认。
Ray
Ray 把 Python 任务、Actor 和训练/调参扩展到多核或集群。远程函数的参数需要序列化,大对象应进入对象存储并复用;显式声明 CPU/GPU 资源,避免多个任务争用同一设备。
先在单机复现,再扩展集群。分布式失败要有重试上限和幂等输出目录,否则自动重试可能覆盖结果或重复产生外部副作用。
Slurm
Slurm 在共享集群上调度作业:
bash
#!/usr/bin/env bash
#SBATCH --job-name=baseline
#SBATCH --gres=gpu:1
#SBATCH --cpus-per-task=8
#SBATCH --mem=32G
#SBATCH --time=08:00:00
#SBATCH --output=logs/%x-%j.out
set -euo pipefail
uv run python -m project.train --config configs/base.yaml用 sbatch 提交、squeue -u $USER 查看、scancel JOB_ID 取消。资源请求基于测量,任务捕获终止信号并定期保存 Checkpoint。集群模块、容器和网络策略以本机构文档为准。
建议记录的最小集合
text
Claim / run purpose
Git commit and dirty diff
resolved configuration
dataset and split version
environment and hardware
metrics with exact definitions
checkpoints and result tables
failure reason or conclusion参考:W&B 文档、SwanLab 文档、TensorBoard、MLflow、Hydra、Optuna、Ray、Slurm。