diff --git a/deploy_45dim_rl_gym/bpu_quantization/quantize_policy_x5.sh b/deploy_45dim_rl_gym/bpu_quantization/quantize_policy_x5.sh index b2ffc29..ec825af 100755 --- a/deploy_45dim_rl_gym/bpu_quantization/quantize_policy_x5.sh +++ b/deploy_45dim_rl_gym/bpu_quantization/quantize_policy_x5.sh @@ -15,6 +15,7 @@ LOG_PREFIX="rlgym_go1_deploy" DOCKER_IMAGE="openexplorer/ai_toolchain_ubuntu_20_x5_cpu:v1.2.8" COMPARE_LIMIT=64 RUN_CHECKER=1 +QUANT="int16" usage() { cat <<'EOF' @@ -34,6 +35,7 @@ Options: --log-prefix PREFIX log dir prefix below logs/, default rlgym_go1_deploy --docker-image IMAGE D-Robotics CPU toolchain image --compare-limit N float ONNX equivalence sample count, default 64 + --quant int16|int8 int16 keeps current conservative path; int8 omits set_all_nodes_int16 --skip-checker skip hb_mapper checker before makertbin EOF } @@ -50,6 +52,7 @@ while [[ $# -gt 0 ]]; do --log-prefix) LOG_PREFIX="$2"; shift 2 ;; --docker-image) DOCKER_IMAGE="$2"; shift 2 ;; --compare-limit) COMPARE_LIMIT="$2"; shift 2 ;; + --quant) QUANT="$2"; shift 2 ;; --skip-checker) RUN_CHECKER=0; shift ;; -h|--help) usage; exit 0 ;; *) echo "Unknown argument: $1" >&2; usage >&2; exit 2 ;; @@ -60,6 +63,11 @@ if [[ -z "${FLAT_DIM}" ]]; then FLAT_DIM=$((45 * HISTORY_LEN)) fi +case "${QUANT}" in + int16|int8) ;; + *) echo "--quant must be int16 or int8, got: ${QUANT}" >&2; exit 2 ;; +esac + if [[ "${POLICY}" = /* ]]; then POLICY_ABS="${POLICY}" else @@ -81,8 +89,13 @@ if [[ -z "${NAME}" ]]; then fi CAL_DIR="calibration_data_${ROUND}_gym_fast${SAMPLES}" -OUTPUT_DIR="mapper_output_${ROUND}_gemm" -OUTPUT_PREFIX="${NAME}_int16_gemm" +if [[ "${QUANT}" = "int16" ]]; then + OUTPUT_DIR="mapper_output_${ROUND}_gemm" + OUTPUT_PREFIX="${NAME}_int16_gemm" +else + OUTPUT_DIR="mapper_output_${ROUND}_int8_gemm" + OUTPUT_PREFIX="${NAME}_int8_gemm" +fi YAML_FILE="${OUTPUT_PREFIX}.yaml" echo "[INFO] repo : ${REPO_ROOT}" @@ -91,6 +104,7 @@ echo "[INFO] name/round : ${NAME} / ${ROUND}" echo "[INFO] history/shape : ${HISTORY_LEN} / 1x1x1x${FLAT_DIM}" echo "[INFO] calibration : ${CAL_DIR} (${SAMPLES} samples, prefix ${LOG_PREFIX})" echo "[INFO] output : ${OUTPUT_DIR}/${OUTPUT_PREFIX}.bin" +echo "[INFO] quant : ${QUANT}" docker run --rm --platform linux/amd64 \ -e POLICY_REL="${POLICY_REL}" \ @@ -106,6 +120,7 @@ docker run --rm --platform linux/amd64 \ -e YAML_FILE="${YAML_FILE}" \ -e COMPARE_LIMIT="${COMPARE_LIMIT}" \ -e RUN_CHECKER="${RUN_CHECKER}" \ + -e QUANT="${QUANT}" \ -v "${REPO_ROOT}:/workspace/deploy_go1_pro" \ "${DOCKER_IMAGE}" \ bash -lc ' @@ -151,6 +166,12 @@ docker run --rm --platform linux/amd64 \ --flat-dim "${FLAT_DIM}" \ --limit "${COMPARE_LIMIT}" + if [[ "${QUANT}" = "int16" ]]; then + OPTIMIZATION_LINE=" optimization: \"set_all_nodes_int16\"" + else + OPTIMIZATION_LINE="" + fi + cat > "${YAML_FILE}" <