【PyCharm】将包含多个参数的 shell 脚本配置到执行文件来调试 Python 程序
要配置 PyCharm 以使用包含多个参数的 shell 脚本(如 run.sh
)来调试 Python 程序,您可以按照以下步骤操作:
- 创建一个新的运行/调试配置:
- 在 PyCharm 中,点击“运行”菜单旁边的齿轮图标,选择“编辑配置”(或使用快捷键
Ctrl+Shift+Alt+S
)。 - 点击左上角的“+”号,选择“Python”。
- 配置脚本参数:
- 在新创建的配置中,您需要设置“脚本路径”为您的 Python 脚本路径(在这个例子中是
inference_pangu_vllm.py
)。 - 在“参数”字段中,您需要输入所有传递给 Python 脚本的参数。这些参数可以从
run.sh
脚本中的command
变量获得。您可以将这些参数复制并粘贴到 PyCharm 的参数字段中,确保格式正确。 - 设置环境变量:
- 在 PyCharm 的运行/调试配置中,有一个“环境变量”部分。在这里,您需要添加
run.sh
脚本中设置的所有环境变量,例如PRECHECKPOINT_PATH
,VOCAB_PATH
,MICRO_BATCH_SIZE
等。 - 配置工作目录:
- 在“工作目录”字段中,设置为您项目的工作目录,通常是
PROJECT_DIR
指定的路径。
以下是一个示例配置:
./pangu/torch/streaming_decode/inference_pangu_vllm.py
--num-layers 62
--hidden-size 6144
--ffn-hidden-size 27648
--num-attention-heads 48
--group-query-attention
--num-query-groups 8
--swiglu
--untie-embeddings-and-output-weights
--disable-bias-linear
--position-embedding-type rope
--rotary-base 1000000
--rope-cache
--use-rope-fp32
--use-fused-rotary-pos-emb
--use-rotary-position-embeddings
--shape-format BSH --use-flash-attn --sparse-mode 2
--tokenizer-type PretrainedFromHF
--tokenizer-not-use-fast
--padded-vocab-size 165664
--fp16
--tokenizer-name-or-path ${VOCAB_PATH}
--use_prefix_txt_for_prompt
--eos_id 165569
--actual-vocab-size 165664
--attention-softmax-in-fp32
--normalization RMSNorm
--norm-epsilon 1e-5
--use-fused-rmsnorm
--use-gemma-post-norm
--max-position-embeddings 32768
--no-top-query-layer
--make-vocab-size-divisible-by 16
--language ${LANGUAGE}
--nlp-only
--use-act-seq-len --use_FIA --inner_precise 0
--kvselect_mode topk
SCRIPT_DIR=/path/to/script_dir
PROJECT_DIR=/path/to/project_dir
PRECHECKPOINT_PATH=/data/models/Pangu_38B_3.1.34.B101_32K/Deploy/Checkpoint
VOCAB_PATH=/path/to/resource/vocab/pangu_tokenizer_llama3_expand_13b_v2_deleted
MICRO_BATCH_SIZE=1
EN_SEQ_LEN=32000
DE_SEQ_LEN=40
RUN_SCRIPT=./pangu/torch/streaming_decode/inference_pangu_vllm.py
DISTRIBUTED_ARGS=...
INFERENCE_ARGS=...
OUTPUT_TEXT_DIR=...
LANGUAGE=...
- 启动调试:
- 配置完成后,点击 PyCharm 中的 debug 按钮(通常是绿色甲虫图标)。
请注意,您可能需要根据实际情况调整路径和环境变量。如果DISTRIBUTED_ARGS
和INFERENCE_ARGS
在其他地方定义,您也需要将它们添加到环境变量或参数中。
作者:shengchao0920