feat(scripts): 重训脚本可跳过重启 ML backend
手动跑重训时会无条件启动后端——纯手动路线并不想要它常驻占显存。 RESTART_BACKEND=0 可跳过;被后端调用时保持默认 1(权重只在启动时加载一次, 不重启就换不了模型)。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3c964abaa2
commit
1684fddd7f
@@ -26,6 +26,10 @@ export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT="${LABEL_STUDIO_LOCAL_FILES_DOCUME
|
|||||||
# 训练参数的额外覆盖,冒烟测试时用,如 RETRAIN_EXTRA_SET="train.epochs=1 train.fraction=0.02"
|
# 训练参数的额外覆盖,冒烟测试时用,如 RETRAIN_EXTRA_SET="train.epochs=1 train.fraction=0.02"
|
||||||
EXTRA_SET="${RETRAIN_EXTRA_SET:-}"
|
EXTRA_SET="${RETRAIN_EXTRA_SET:-}"
|
||||||
|
|
||||||
|
# 训完要不要重启 ML backend。被后端调用时必须重启(权重只在启动时加载一次);
|
||||||
|
# 纯手动路线不跑后端的话设 0,免得凭空起一个常驻进程占显存
|
||||||
|
RESTART_BACKEND="${RESTART_BACKEND:-1}"
|
||||||
|
|
||||||
echo "===== [$(date '+%F %T')] 开始重训(项目 $PROJECT)====="
|
echo "===== [$(date '+%F %T')] 开始重训(项目 $PROJECT)====="
|
||||||
|
|
||||||
echo "--- 1/4 导出标注 -> $EXPORT"
|
echo "--- 1/4 导出标注 -> $EXPORT"
|
||||||
@@ -41,14 +45,20 @@ echo "--- 3/4 训练 -> $WORK_DIR"
|
|||||||
--work-dir "$WORK_DIR" \
|
--work-dir "$WORK_DIR" \
|
||||||
--set data.yaml="$DATASET/data.yaml" $EXTRA_SET
|
--set data.yaml="$DATASET/data.yaml" $EXTRA_SET
|
||||||
|
|
||||||
echo "--- 4/4 切换权重并重启 ML backend"
|
echo "--- 4/4 切换权重"
|
||||||
# 指向最新权重的稳定软链接:启动脚本读它,于是换模型不用改任何脚本
|
# 指向最新权重的稳定软链接:启动脚本与 push_predictions 都读它,换模型不用改任何脚本
|
||||||
ln -sfn "$WORK_DIR/weights/best.pt" "$REPO/runs/detect/current.pt"
|
ln -sfn "$WORK_DIR/weights/best.pt" "$REPO/runs/detect/current.pt"
|
||||||
# 必须显式传 YOLO_WEIGHTS 并清掉继承来的变量:本脚本是旧后端的子进程,
|
|
||||||
|
if [ "$RESTART_BACKEND" = "1" ]; then
|
||||||
|
echo "--- 重启 ML backend"
|
||||||
|
# 必须显式传 YOLO_WEIGHTS 并清掉继承来的变量:本脚本可能是旧后端的子进程,
|
||||||
# 它环境里已经 export 了 YOLO_WEIGHTS(旧权重)和可能的 RETRAIN_EXTRA_SET(冒烟参数),
|
# 它环境里已经 export 了 YOLO_WEIGHTS(旧权重)和可能的 RETRAIN_EXTRA_SET(冒烟参数),
|
||||||
# 不清掉的话新后端会继续用旧模型、下次训练也会沿用冒烟参数
|
# 不清掉的话新后端会继续用旧模型、下次训练也会沿用冒烟参数
|
||||||
env -u RETRAIN_EXTRA_SET YOLO_WEIGHTS="$REPO/runs/detect/current.pt" \
|
env -u RETRAIN_EXTRA_SET YOLO_WEIGHTS="$REPO/runs/detect/current.pt" \
|
||||||
bash "$REPO/scripts/start_ml_backend.sh"
|
bash "$REPO/scripts/start_ml_backend.sh"
|
||||||
|
else
|
||||||
|
echo "--- 跳过重启 ML backend(RESTART_BACKEND=0)"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "===== [$(date '+%F %T')] 重训完成:$WORK_DIR ====="
|
echo "===== [$(date '+%F %T')] 重训完成:$WORK_DIR ====="
|
||||||
echo "指标见 $WORK_DIR/metrics.json,曲线见 $WORK_DIR/results.png"
|
echo "指标见 $WORK_DIR/metrics.json,曲线见 $WORK_DIR/results.png"
|
||||||
|
|||||||
Reference in New Issue
Block a user