Description
在对 llama3-8b-base 进行全参数微调过程中,尝试用自定义的参数矩阵元素粒度的 freeze 函数替换 swift/llm/train/tuner.py 中的 freeze_parameters() 函数。
命令行如下:
sh requirements/install_all.sh
pip install transformers==4.46.3
pip install -e .
export MKL_THREADING_LAYER=pthreads
nproc_per_node=8
NPROC_PER_NODE=$nproc_per_node
MASTER_PORT=29500
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7
swift sft
--model_type llama3
--model llama3-8b/infinity_code_20k/v0-20241228-012227/checkpoint-231
--model_revision master
--train_type full
--tuner_backend peft
--template_backend swift
--system ""
--torch_dtype bfloat16
--dataset custom_datasets/sft_data/infinity_code_20k.jsonl
--dataset_num_proc 8
--output_dir ckpt_sft_seq/infinity_math_code_20k
--ddp_backend nccl
--num_train_epochs 5
--max_length 2048
--truncation_strategy delete
--packing false
--gradient_checkpointing true
--per_device_train_batch_size 4
--per_device_eval_batch_size 4
--weight_decay 0.1
--learning_rate 2e-5
--lr_scheduler_type cosine
--gradient_accumulation_steps $(expr 64 / $nproc_per_node)
--max_grad_norm 1.0
--warmup_ratio 0.03
--eval_steps 40
--save_steps 40
--save_total_limit 6
--logging_steps 1
--deepspeed 'zero3'
--save_only_model true \
但 debug 时发现在执行自定义函数或原 freeze_parameters() 函数前,model 似乎已经被 deepspeed 分片,model.named_parameters() 的 parameter_names 可以检索,但 parameter.shape 已经为 0:
ms-swift 是否支持在 ds 框架下的 parameter 参数矩阵行、列、或元素级别的 freeze?