stand_stable_final_version
This commit is contained in:
30
train.sh
30
train.sh
@@ -12,15 +12,16 @@ set -euo pipefail
|
||||
# CPU 核数基准(默认 20):
|
||||
# 例如你的机器按 20 核预算来算,可保持默认。
|
||||
CORES="${CORES:-20}"
|
||||
# CPU 占用百分比(默认 95):
|
||||
# CPU 占用百分比(默认 100):
|
||||
# 最终会与 CORES 相乘得到 CPUQuota。
|
||||
# 例:CORES=20, UTIL_PERCENT=95 -> CPUQuota=1900%(约 19 核等效)
|
||||
UTIL_PERCENT="${UTIL_PERCENT:-95}"
|
||||
# 例:CORES=20, UTIL_PERCENT=100 -> CPUQuota=2000%(约 20 核等效)
|
||||
UTIL_PERCENT="${UTIL_PERCENT:-100}"
|
||||
CPU_QUOTA="$((CORES * UTIL_PERCENT))%"
|
||||
|
||||
# 内存上限(默认 28G):
|
||||
# 可改成 16G、24G 等,避免训练把系统内存吃满。
|
||||
MEMORY_MAX="${MEMORY_MAX:-28G}"
|
||||
# 内存上限(默认关闭):
|
||||
# 设为具体值(如 24G/28G)可限制训练最多占用内存;
|
||||
# 设为 0/none/off/infinity 表示不设置 cgroup 内存上限。
|
||||
MEMORY_MAX="${MEMORY_MAX:-0}"
|
||||
|
||||
# ------------------------------
|
||||
# 训练运行参数(由 scripts/gyms/Walk.py 读取)
|
||||
@@ -28,8 +29,8 @@ MEMORY_MAX="${MEMORY_MAX:-28G}"
|
||||
# 运行模式:train 或 test
|
||||
GYM_CPU_MODE="${GYM_CPU_MODE:-train}"
|
||||
|
||||
# 并行环境数量:越大通常吞吐越高,但也更容易触发服务器连接不稳定。
|
||||
# 建议从 8~12 起步,稳定后再升到 16/20。
|
||||
# 并行环境数量:越大通常吞吐越高,但也更容易触发 OOM 或连接不稳定。
|
||||
# 默认使用更稳妥的 12,确认稳定后再升到 16/20。
|
||||
GYM_CPU_N_ENVS="${GYM_CPU_N_ENVS:-20}"
|
||||
# 服务器预热时间(秒):
|
||||
# 在批量拉起 rcssserver 后等待一段时间,再创建 SubprocVecEnv,
|
||||
@@ -98,14 +99,23 @@ if [[ -n "${CONDA_DEFAULT_ENV:-}" ]]; then
|
||||
echo "Detected conda env: ${CONDA_DEFAULT_ENV}"
|
||||
fi
|
||||
|
||||
SYSTEMD_PROPS=("-p" "CPUQuota=${CPU_QUOTA}")
|
||||
case "${MEMORY_MAX,,}" in
|
||||
0|none|off|infinity)
|
||||
echo "MemoryMax is disabled for this run (no cgroup memory cap)."
|
||||
;;
|
||||
*)
|
||||
SYSTEMD_PROPS+=("-p" "MemoryMax=${MEMORY_MAX}")
|
||||
;;
|
||||
esac
|
||||
|
||||
# 使用 systemd-run --user --scope 启动“受限资源”的训练进程:
|
||||
# - CPUQuota: 总 CPU 配额
|
||||
# - MemoryMax: 最大内存
|
||||
# - env ... : 显式传递训练参数到 Python 进程
|
||||
# - python -m scripts.gyms.Walk: 以模块方式启动训练入口
|
||||
systemd-run --user --scope \
|
||||
-p CPUQuota="${CPU_QUOTA}" \
|
||||
-p MemoryMax="${MEMORY_MAX}" \
|
||||
"${SYSTEMD_PROPS[@]}" \
|
||||
env \
|
||||
GYM_CPU_MODE="${GYM_CPU_MODE}" \
|
||||
GYM_CPU_N_ENVS="${GYM_CPU_N_ENVS}" \
|
||||
|
||||
Reference in New Issue
Block a user