# 监控与验收 > 归档状态(2026-08-30):腾讯云CVM、云硬盘和k3s运行面已经释放,当前没有在线ACK兼容sandbox或BuildKit需要监控。本文保留历史观测口径,供未来重建环境后复用。 ## 不改 Harbor/W&B 就能得到的指标 - Harbor trial 状态、reward、总时长、agent/verifier 日志、ATIF、输入/输出/cache token。 - rLLM/verl 的 reward、advantage、有效/过滤前后 group、loss、吞吐和训练步指标。 - 当前 rLLM 已记录 `async/staleness_mean|min|max`,W&B logger 开启后会随训练指标上报。 只需在 `.env` 设置 `WANDB_API_KEY`,启动脚本会使用 `[console,wandb]`;否则使用 `[console]`。不需要修改 Harbor 才能看到训练主指标。 ## 需要额外采集但不建议首轮改 Harbor 的指标 | 指标 | 首选来源 | | ------------------------------------ | ------------------------------------------------- | | ACK Pod pending/startup、OOM、eviction | Kubernetes Events + kube-state-metrics/Prometheus | | CPU、RSS、临时磁盘、网络 | cAdvisor/ACK Prometheus | | BuildKit CPU/RSS、PVC 使用量、重启 | ACK Prometheus、kube-state-metrics、PVC 指标 | | 镜像构建耗时、cache hit 与失败 | Harbor 日志、BuildKit 日志 | | gateway QPS、TTFT、队列、错误码 | rLLM gateway/vLLM metrics | | setup/agent/verifier 分段 P95 | Harbor trial 日志离线聚合 | | ATIF 缺失、无 reward、基础设施失败率 | Harbor job 结果离线聚合 | 只有当这些离线来源无法满足实时告警,才给 rLLM `HarborRuntime` 增加 metrics hook,把分段耗时和 ACK 状态写入 `raw_result.metrics`;不建议直接修改 Harbor 核心。 ## 10 题 canary 通过条件 - 10/10 创建并清理 ACK sandbox。 - 10/10 产生 verifier 结果;允许 reward=0,但不允许“无 reward”。 - 10/10 产生可解析 ATIF,包含 Qwen Code agent/tool 轮次。 - 镜像构建失败、API timeout、OOM、磁盘耗尽、gateway 4xx/5xx 均为 0。 - `buildkitd` 无重启,PVC 未超过 80%,GPU→BuildKit mTLS 无握手错误。 - 记录 setup、agent、verifier 和总时长 P50/P95;据此再决定是否提高 1800/3000 秒和并发。 ## GRPO smoke 首次只运行同步 colocated 模式:1 个冻结 train task 生成 4 条 rollout,最多执行 1 个 optimizer step。Smoke 默认把 mini-swe-agent 限制为 10 步、session 限制为 600 秒,并关闭 compact filtering,确保即使组内奖励一致也能覆盖 batch transform、loss、backward 和 optimizer update 路径。正式训练仍使用 `.env` 的完整步数、超时和过滤配置。Smoke 会关闭训练前/训练后 validation 和 checkpoint 保存,轨迹写入 `state/training-episodes/-smoke/`。 AutoDL `.env` 至少补齐: ```bash TRAIN_MODEL_PATH=/root/autodl-tmp/models/mini-coder-4b TRAIN_ASYNC_ENABLE=false TRAIN_NNODES=1 TRAIN_N_GPUS_PER_NODE=1 TRAIN_TENSOR_PARALLEL_SIZE=1 TRAIN_MODEL_DTYPE=bf16 TRAIN_GPU_MEMORY_UTILIZATION=0.35 TRAIN_ENABLE_SLEEP_MODE=false TRAIN_FREE_CACHE_ENGINE=false TRAIN_MAX_MODEL_LEN=32768 TRAIN_MAX_PROMPT_LENGTH=24576 TRAIN_MAX_RESPONSE_LENGTH=8192 ``` 运行前停止 Canary 使用的独立 `vllm serve`,保持 BuildKit tunnel 和 6006 公网映射可用,然后执行: ```bash source /root/miniconda3/etc/profile.d/conda.sh conda activate harbor-grpo set -a source .env set +a nvidia-smi pgrep -af 'vllm serve' || true make preflight make train-smoke ``` 另一个 AutoDL 终端监控: ```bash watch -n 5 nvidia-smi kubectl --kubeconfig "$KUBECONFIG_PATH" --context "$KUBE_CONTEXT" \ get pods -n "$ACK_NAMESPACE" -o wide ``` 通过条件: - 单卡启动摘要显示 `mode=smoke`、`dtype=bf16`、`groups=4`、`total_batches=1`、`GPUs=1`。 - verl 完成配置的1个optimizer step;无Hydra配置错误、CUDA OOM、NCCL/Ray崩溃或gateway 4xx/5xx。 - 当前单卡与两卡FSDP1链路均已通过;当前AutoDL必须以 `NCCL_P2P_DISABLE=1` 绕过已证实的Direct P2P死锁。每次smoke应使用独立run目录,并检查episode中的Bash fence/action解析率,不能仅以global step判断有效学习。 - 每一步至少保留一个有效 trajectory group;异常 rollout 可被过滤,但不能导致步骤没有可训练 batch。 - 结束后 sandbox Pod 被清理,BuildKit Deployment/PVC 保留。 - reward 全为 0 不影响基础设施 smoke 结论,但表示没有有效 GRPO 优势;在进入正式训练前必须先获得至少一个组内 reward 差异。 `TRAIN_SAVE_FREQ=-1` 是 smoke 的固定值,因此 checkpoint 目录为空属于预期。若进程中断,先 `Ctrl-C`,等待清理;仍有 sandbox 残留时执行 `make ack-stop`。 ## 首轮 W&B 面板 - `reward/*`、`advantage/*` - `batch/*/fractions/effective|too_easy|too_hard` - `groups/num_trajs_before_filter|after_filter` - `async/staleness_mean|max` - loss、learning rate、tokens/s - 外部导入:ACK active/pending pods、OOM、gateway QPS/queue、Harbor infra failure rate ## PPO训练与checkpoint评测监控(40步GPU验收完成) PPO沿用现有rollout、reward、Gateway和ACK监控,只新增训练端指标: - critic value loss、value/return的mean与std、explained variance; - GAE advantage的mean与std; - actor policy loss、clip fraction、entropy和actor grad norm; - critic grad norm及actor/critic各自的optimizer step; - 启用reference时的KL与reference logprob; - 各GPU rank峰值显存、主机内存、checkpoint大小和单batch耗时。 PPO micro smoke必须同时看到有限的value/return/advantage、actor与critic loss,以及两个optimizer step。当前两轮20步已完成actor/critic更新、独立vLLM权重同步和紧凑checkpoint;但critic explained variance仍为负,训练reward又集中于单一任务,所以工程通过不等于能力提升。checkpoint评测必须分别记录test38的40K口径和Verified27的Agent侧32K口径,不得合并为65题总分或误写为同一context。 ### 附录:故障关注项 OOM、NCCL、Ray和ACK问题不进入日常核心面板,但每次失败必须保留run ID、完整配置、GPU拓扑、各rank显存、异常类型、残留进程/Pod和checkpoint状态,供后续自动诊断。基础设施失败不得记作reward 0。详细要求见[`PPO_TRAINING_RUNBOOK.md`](PPO_TRAINING_RUNBOOK.md)附录。