File size: 5,573 Bytes
816198f | 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | #!/bin/bash
# 可选:通过 JSON / 环境变量覆盖 `utils.config` 中的配置
# 示例 1:指定 JSON 配置文件(优先级最高)
# export S1_DR_CONFIG_JSON="utils/config/config.example.json"
#
# 示例 2:直接用环境变量覆盖
# export CLIENT_TIMEOUT=7200
# export USE_NLP_FORMAT_RETURN=true
# export MY_NEW_FLAG="demo_value"
# system prompt 参数
SYSTEM_PROMPT="" # 标准的 9 个工具 system prompt
LLM_CLIENT_URLS="http://url:port/v1/chat/completions http://url:port/v1/chat/completions"
LLM_CLIENT_MODELS="model_name1 model_name1"
TEST_DATA_FILE="test.jsonl"
OUTPUT_FILE="test_results.jsonl"
# OUTPUT_DIR 仅在 Pass@K(多次 rollout)场景下生效。
# 当 ROLLOUT_NUM=1 时,忽略 OUTPUT_DIR;单次推理结果写入 OUTPUT_FILE 所指定的 jsonl 路径。
# 当 ROLLOUT_NUM≠1 时,忽略 OUTPUT_FILE;在 OUTPUT_DIR 下按 xxx_01.jsonl、xxx_02.jsonl、… 命名保存各次 rollout 结果。
OUTPUT_DIR=""
# 启动所有的 9 个工具
AVAILABLE_TOOLS="wide_search scholar_search file_wide_parse execute_code wide_visit ask_question_about_image ask_question_about_video image_search bash"
ROLLOUT_NUM=1
RESUME_FROM_FILE=""
# LOGGING_ROOT:日志根路径;在其下创建 `logs` 子目录。例如设为 "/app" 时,日志目录为 "/app/logs"。
LOGGING_ROOT=""
# LOG_LABEL:日志标签;运行日志写入 `logs/YYYY_MM_DD_<LOG_LABEL>/` 子目录(与 LOGGING_ROOT 组合使用时,位于上述 logs 路径之下)。
LOG_LABEL="test"
LOG_FILE="run_logs/run.log"
# 仅在与附件相关的任务中需调整 TASK_TYPE;其余推理任务可沿用默认值,无需修改该参数。
TASK_TYPE="input_only"
MAX_ROUNDS=100
CONCURRENCY_WORKERS=16
SAVE_BATCH_SIZE=10
TEMPERATURE=0.7
TOP_P=0.95
# 额外的 payload 参数(JSON 字符串),透传给模型 API,可按需增减字段
# 不需要额外参数时设为空 JSON:EXTRA_PAYLOAD='{}'
EXTRA_PAYLOAD='{"presence_penalty": 0.0}'
TIMEOUT_FOR_ONE_QUERY=3600
LLM_API_RETRY_TIMES=2
# discard-all:此处为 false,表示不启用该模式
DISCARD_ALL_MODE="false"
MODEL_MAX_CONTEXT_TOKENS=128000
DISCARD_RATIO=0.8
TOKENIZER_PATH="models/tokenizer"
PARAM_INFO=$(
cat <<EOF
========== Run Parameters ==========
Start Time: $(date)
LLM_CLIENT_URLS: $LLM_CLIENT_URLS
LLM_CLIENT_MODELS: $LLM_CLIENT_MODELS
TEST_DATA_FILE: $TEST_DATA_FILE
OUTPUT_FILE: $OUTPUT_FILE
OUTPUT_DIR: $OUTPUT_DIR
AVAILABLE_TOOLS: $AVAILABLE_TOOLS
CONCURRENCY_WORKERS: $CONCURRENCY_WORKERS
SAVE_BATCH_SIZE: $SAVE_BATCH_SIZE
ROLLOUT_NUM: $ROLLOUT_NUM
MAX_ROUNDS: $MAX_ROUNDS
TEMPERATURE: $TEMPERATURE
TOP_P: $TOP_P
EXTRA_PAYLOAD: $EXTRA_PAYLOAD
TIMEOUT_FOR_ONE_QUERY: $TIMEOUT_FOR_ONE_QUERY
LLM_API_RETRY_TIMES: $LLM_API_RETRY_TIMES
DISCARD_ALL_MODE: $DISCARD_ALL_MODE
MODEL_MAX_CONTEXT_TOKENS: $MODEL_MAX_CONTEXT_TOKENS
DISCARD_RATIO: $DISCARD_RATIO
TOKENIZER_PATH: $TOKENIZER_PATH
RESUME_FROM_FILE: $RESUME_FROM_FILE
LOG_LABEL: $LOG_LABEL
TASK_TYPE: $TASK_TYPE
LOGGING_ROOT: $LOGGING_ROOT
SYSTEM_PROMPT: $SYSTEM_PROMPT
Shell PID: $$
====================================
EOF
)
echo "$PARAM_INFO"
echo "$PARAM_INFO" > "$LOG_FILE"
# 使用 nohup 在后台启动 Python:标准输出与标准错误追加写入 LOG_FILE;随后将进程 PID 输出至终端,并同步追加至 LOG_FILE。
# 当 TASK_TYPE 为 input_only 时,须在命令行中加入 --clean_files_copy_dir。
if [ "$TASK_TYPE" = "input_only" ]; then
nohup python inference/run_batch_inference.py \
--llm_client_urls $LLM_CLIENT_URLS \
--llm_client_models $LLM_CLIENT_MODELS \
--test_data_file "$TEST_DATA_FILE" \
--output_file "$OUTPUT_FILE" \
--output_dir "$OUTPUT_DIR" \
--available_tools $AVAILABLE_TOOLS \
--concurrency_workers $CONCURRENCY_WORKERS \
--save_batch_size $SAVE_BATCH_SIZE \
--rollout_num $ROLLOUT_NUM \
--max_rounds $MAX_ROUNDS \
--temperature $TEMPERATURE \
--top_p $TOP_P \
--extra_payload "$EXTRA_PAYLOAD" \
--timeout_for_one_query $TIMEOUT_FOR_ONE_QUERY \
--llm_api_retry_times $LLM_API_RETRY_TIMES \
--discard_all_mode "$DISCARD_ALL_MODE" \
--model_max_context_tokens $MODEL_MAX_CONTEXT_TOKENS \
--discard_ratio $DISCARD_RATIO \
--tokenizer_path "$TOKENIZER_PATH" \
--resume_from_file "$RESUME_FROM_FILE" \
--log_label "$LOG_LABEL" \
--logging_root "$LOGGING_ROOT" \
--system_prompt "$SYSTEM_PROMPT" \
--verbose \
--clean_files_copy_dir \
>> "$LOG_FILE" 2>&1 &
else
nohup python inference/run_batch_inference.py \
--llm_client_urls $LLM_CLIENT_URLS \
--llm_client_models $LLM_CLIENT_MODELS \
--test_data_file "$TEST_DATA_FILE" \
--output_file "$OUTPUT_FILE" \
--output_dir "$OUTPUT_DIR" \
--available_tools $AVAILABLE_TOOLS \
--concurrency_workers $CONCURRENCY_WORKERS \
--save_batch_size $SAVE_BATCH_SIZE \
--rollout_num $ROLLOUT_NUM \
--max_rounds $MAX_ROUNDS \
--temperature $TEMPERATURE \
--top_p $TOP_P \
--extra_payload "$EXTRA_PAYLOAD" \
--timeout_for_one_query $TIMEOUT_FOR_ONE_QUERY \
--llm_api_retry_times $LLM_API_RETRY_TIMES \
--discard_all_mode "$DISCARD_ALL_MODE" \
--model_max_context_tokens $MODEL_MAX_CONTEXT_TOKENS \
--discard_ratio $DISCARD_RATIO \
--tokenizer_path "$TOKENIZER_PATH" \
--resume_from_file "$RESUME_FROM_FILE" \
--log_label "$LOG_LABEL" \
--logging_root "$LOGGING_ROOT" \
--system_prompt "$SYSTEM_PROMPT" \
--verbose \
>> "$LOG_FILE" 2>&1 &
fi
PY_PID=$!
echo "Python running as PID: $PY_PID"
echo "Python running as PID: $PY_PID" >> "$LOG_FILE"
|