File size: 1,847 Bytes
c7a6fe6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/usr/bin/env bash
set -euox pipefail
# Define config specifications: "config_name:output_file:config_arg"
CONFIG_SPECS=(
"ppo_trainer:_generated_ppo_trainer.yaml:"
"ppo_megatron_trainer:_generated_ppo_megatron_trainer.yaml:--config-name=ppo_megatron_trainer.yaml"
)
generate_config() {
local config_name="$1"
local output_file="$2"
local config_arg="$3"
local target_cfg="verl/trainer/config/${output_file}"
local tmp_header=$(mktemp)
local tmp_cfg=$(mktemp)
echo "# This reference configration yaml is automatically generated via 'scripts/generate_trainer_config.sh'" > "$tmp_header"
echo "# in which it invokes 'python3 scripts/print_cfg.py --cfg job ${config_arg}' to flatten the 'verl/trainer/config/${config_name}.yaml' config fields into a single file." >> "$tmp_header"
echo "# Do not modify this file directly." >> "$tmp_header"
echo "# The file is usually only for reference and never used." >> "$tmp_header"
echo "" >> "$tmp_header"
python3 scripts/print_cfg.py --cfg job ${config_arg} > "$tmp_cfg"
cat "$tmp_header" > "$target_cfg"
sed -n '/^actor_rollout_ref/,$p' "$tmp_cfg" >> "$target_cfg"
rm "$tmp_cfg" "$tmp_header"
echo "Generated: $target_cfg"
}
for spec in "${CONFIG_SPECS[@]}"; do
IFS=':' read -r config_name output_file config_arg <<< "$spec"
generate_config "$config_name" "$output_file" "$config_arg"
done
for spec in "${CONFIG_SPECS[@]}"; do
IFS=':' read -r config_name output_file config_arg <<< "$spec"
target_cfg="verl/trainer/config/${output_file}"
if ! git diff --exit-code -- "$target_cfg" >/dev/null; then
echo "✖ $target_cfg is out of date. Please regenerate via 'scripts/generate_trainer_config.sh' and commit the changes."
exit 1
fi
done
echo "All good"
exit 0
|