83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
|
# Lora 训练
|
||
|
|
||
|
## lora 训练脚本
|
||
|
|
||
|
``` shell
|
||
|
#! /bin/bash
|
||
|
|
||
|
#!/bin/bash
|
||
|
#SBATCH --partition=gpu3
|
||
|
#SBATCH --nodes=1
|
||
|
#SBATCH --nodelist=g3005
|
||
|
#SBATCH --ntasks-per-node=4
|
||
|
#SBATCH --gres=gpu:4
|
||
|
#SBATCH --cpus-per-task=4
|
||
|
#SBATCH --mem=512GB
|
||
|
|
||
|
export MASTER_ADDR="localhost"
|
||
|
export MASTER_PORT=12347
|
||
|
|
||
|
CPM_PATH="/home/wangxvjia/CPM-onlyllama"
|
||
|
EXP_PATH=/home/wangxvjia/9g_models/cpm_fin_new_1e4
|
||
|
MODEL_NAME="9g-finance-sft"
|
||
|
|
||
|
OPTS=""
|
||
|
OPTS+=" --vocab /home/wangxvjia/9g_models/vocab.txt"
|
||
|
OPTS+=" --model-config /home/wangxvjia/9g_models/config.json"
|
||
|
|
||
|
OPTS+=" --train-iters 695"
|
||
|
OPTS+=" --inspect-iters 2000"
|
||
|
OPTS+=" --warmup-iters 20"
|
||
|
|
||
|
OPTS+=" --lr-decay-style cosine"
|
||
|
OPTS+=" --weight-decay 0.01"
|
||
|
OPTS+=" --clip-grad 1.0"
|
||
|
OPTS+=" --loss-scale 1048576"
|
||
|
OPTS+=" --max-loss-scale 33554432"
|
||
|
OPTS+=" --min-loss-scale 1"
|
||
|
OPTS+=" --loss-scale-steps 32"
|
||
|
|
||
|
OPTS+=" --offload"
|
||
|
OPTS+=" --batch-size 2"
|
||
|
OPTS+=" --max-length 4096"
|
||
|
OPTS+=" --lr 3e-4"
|
||
|
OPTS+=" --start-step 0"
|
||
|
OPTS+=" --epoch 4"
|
||
|
OPTS+=" --load /data/groups/QY_LLM_Other/anrongqiao/UltraEval/caterpillar_8b_checkpoint-22000-float16.pt"
|
||
|
OPTS+=" --dataset /home/wangxvjia/molora/data_process/fin_9g/train_data_30000"
|
||
|
# TODO 这些 /data 在启元机器上需要改成 /home 下的路径
|
||
|
OPTS+=" --save ${EXP_PATH}/checkpoints"
|
||
|
OPTS+=" --save-name ${MODEL_NAME}"
|
||
|
|
||
|
OPTS+=" --delta-tuning"
|
||
|
OPTS+=" --delta-type lora"
|
||
|
OPTS+=" --lora-r 64" # 常用的lora 参数
|
||
|
OPTS+=" --lora-dropout 0.05"
|
||
|
OPTS+=" --lora-alpha 64" # 常用的lora alpha 参数
|
||
|
OPTS+=" --lora-layer project_q project_v project_k w_0 w_1 w_out"
|
||
|
OPTS+=" --save-origin-model"
|
||
|
|
||
|
OPTS+=" $@"
|
||
|
|
||
|
|
||
|
CMD="torchrun --nnodes=1 --nproc_per_node=2 --rdzv_id=1 --rdzv_backend=c10d --rdzv_endpoint=${MASTER_ADDR}:${MASTER_PORT} ${CPM_PATH}/apps/cpm9g/sft_cpm9g.py ${OPTS}"
|
||
|
|
||
|
echo "${CMD}"
|
||
|
$CMD
|
||
|
```
|
||
|
|
||
|
## 合并模型
|
||
|
训练好的lora delta model一般有两种方式
|
||
|
- 在直接含有lora的推理代码进行推理
|
||
|
- 将lora delta model参数和original model merge在一起 作为新的模型,但是模型的参数数量并没有增多
|
||
|
|
||
|
python merge_lora_delta.py --base_path cpm9g-8b-sft.pt --delta_path cpm9g-lora.pt --merge_path cpm9g-8b-sft_with_lora.pt
|
||
|
|
||
|
|
||
|
# lora 推理
|
||
|
|
||
|
合并后的lora模型可以直接采用基础模型推理代码
|
||
|
见[quick start](https://www.osredm.com/jiuyuan/CPM-9G-8B/tree/master/quick_start_clean/readmes/README_ALL.md)
|
||
|
|
||
|
|