"qwen1.5,微调训练的时候,ModelScope官方给的参数能否直接使用,有什么需要注意的吗?
DISTRIBUTED_ARGS=""
--nproc_per_node $NPROC_PER_NODE \
--nnodes $NNODES \
--node_rank $NODE_RANK \
--master_addr $MASTER_ADDR \
--master_port $MASTER_PORT
""
torchrun $DISTRIBUTED_ARGS src/train_bash.py \
--deepspeed $DS_CONFIG_PATH \
--stage sft \
--do_train \
--use_fast_tokenizer \
--flash_attn \
--model_name_or_path $MODEL_PATH \
--dataset your_dataset \
--template qwen \
--finetuning_type lora \
--lora_target q_proj,v_proj\
--output_dir $OUTPUT_PATH \
--overwrite_cache \
--overwrite_output_dir \
--warmup_steps 100 \
--weight_decay 0.1 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--ddp_timeout 9000 \
--learning_rate 5e-6 \
--lr_scheduler_type cosine \
--logging_steps 1 \
--cutoff_len 4096 \
--save_steps 1000 \
--plot_loss \
--num_train_epochs 3 \
--bf16"
在微调训练Qwen1.5模型时,ModelScope官方提供的参数可以作为参考,但需要根据实际的硬件环境、数据集和任务需求进行调整。以下是对您提供的命令及参数的详细解析和注意事项:
DISTRIBUTED_ARGS=" --nproc_per_node $NPROC_PER_NODE \ --nnodes $NNODES \ --node_rank $NODE_RANK \ --master_addr $MASTER_ADDR \ --master_port $MASTER_PORT"
--nproc_per_node
:每个节点使用的GPU数量。确保该值与实际可用的GPU数量一致。--nnodes
:分布式训练中使用的节点总数。如果仅使用单机,则设置为1。--node_rank
:当前节点的排名(从0开始)。单机训练时通常为0。--master_addr
和 --master_port
:主节点的IP地址和端口号,用于多节点通信。注意事项: - 如果是单机训练,可以忽略--nnodes
、--node_rank
、--master_addr
和--master_port
,直接设置--nproc_per_node
即可。 - 确保所有节点之间的网络连接正常,并且端口未被占用。
torchrun $DISTRIBUTED_ARGS src/train_bash.py \
--deepspeed $DS_CONFIG_PATH \
--stage sft \
--do_train \
--use_fast_tokenizer \
--flash_attn \
--model_name_or_path $MODEL_PATH \
--dataset your_dataset \
--template qwen \
--finetuning_type lora \
--lora_target q_proj,v_proj \
--output_dir $OUTPUT_PATH \
--overwrite_cache \
--overwrite_output_dir \
--warmup_steps 100 \
--weight_decay 0.1 \
--per_device_train_batch_size 4 \
--gradient_accumulation_steps 4 \
--ddp_timeout 9000 \
--learning_rate 5e-6 \
--lr_scheduler_type cosine \
--logging_steps 1 \
--cutoff_len 4096 \
--save_steps 1000 \
--plot_loss \
--num_train_epochs 3 \
--bf16
--deepspeed $DS_CONFIG_PATH
:指定DeepSpeed配置文件路径。DeepSpeed是一种优化工具,用于加速训练并减少显存占用。
--stage sft
:指定训练方式为监督微调(SFT)。如果需要使用直接偏好优化(DPO),可将stage
改为dpo
。--dataset your_dataset
:指定训练数据集路径。数据格式需符合JSON格式要求,例如:
[
{
"instruction": "问题",
"output": "答案"
}
]
--template qwen
:指定模型默认的对话模板。如果数据格式不符合模板要求,可能需要自定义模板。--finetuning_type lora
:启用LoRA(Low-Rank Adaptation)轻量化训练。--lora_target q_proj,v_proj
:指定LoRA作用的目标层。可以根据任务需求调整目标层。
lora_dim
)和权重(lora_alpha
)可通过超参数配置,默认值分别为32和32。--per_device_train_batch_size 4
:每个GPU每次处理的样本数量。较大的批次大小会提高效率,但也会增加显存需求。--gradient_accumulation_steps 4
:梯度累积步数。当显存不足时,可以通过增加此值模拟更大的批次大小。--learning_rate 5e-6
:学习率。默认值为5e-5,但可根据任务需求调整。--lr_scheduler_type cosine
:学习率调度器类型。cosine
调度器适合长周期训练。--cutoff_len 4096
:输入序列的最大长度。确保该值不超过模型支持的最大长度。--save_steps 1000
:每隔多少步保存一次模型。根据训练数据量和时间需求调整。--bf16
:启用bfloat16精度训练,以减少显存占用并加速训练。硬件资源:
per_device_train_batch_size
。gradient_accumulation_steps
。bf16
或load_in_4bit
/load_in_8bit
轻量化训练。数据准备:
超参数调整:
分布式训练:
master_addr
和master_port
。ModelScope官方提供的参数可以作为起点,但需要根据实际硬件环境、数据集和任务需求进行调整。重点关注硬件资源、数据格式、超参数配置以及分布式训练的设置。通过合理调整这些参数,可以有效提升微调训练的效果和效率。
ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352