LLM - argparse 解析脚本参数
目录
一.引言
二.argparse 解析 shell 参数
1.使用步骤
2.python 侧示例
3.shell 侧示例
一.引言
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage pt \--model_name_or_path path_to_your_model \--do_train \--dataset wiki_demo \--template default \--finetuning_type lora \--output_dir path_to_pt_checkpoint \--overwrite_cache \--per_device_train_batch_size 4 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 1000 \--learning_rate 5e-5 \--num_train_epochs 3.0 \--plot_loss \--fp16
最近微调大模型时经常需要用 shell 脚本传很多参数,发现大家都在使用 argparse 类,下面整理一下 argparse 的基础用法。
二.argparse 解析 shell 参数
1.使用步骤
- 导入 argparse 模块
import argparse
- 创建 AgrumentParse 对象
parser = argparse.ArgumentParser()
- 添加待解析参数 [以解析 --input 参数为例]
parser.add_argument('--input', help='输入文件', default='input.txt')
- 解析命令行参数
args = parser.parse_args()
- 使用解析后的参数
input_file = args.input
2.python 侧示例
import argparsedef main():parser = argparse.ArgumentParser()parser.add_argument('--input', help='输入文件')parser.add_argument('--output', help='输出文件')args = parser.parse_args()input_file = args.inputoutput_file = args.output# 在这里使用解析后的参数进行进一步的处理print(f'输入文件:{input_file}')print(f'输出文件:{output_file}')if __name__ == '__main__':main()
注意需要调用 parse_args() 才能获取相关的解析参数。
3.shell 侧示例
python script.py --input input.txt --output output.txt
当参数多了可以隔行传参,比较清晰:
python script.py \--input input.txt \--output output.txt
执行上述脚本后得到:
输入文件:input.txt
输出文件:output.txt