当前位置:   article > 正文

Slurm集群上单节点8卡全量微调大模型笔记_slurm上 部署大模型

slurm上 部署大模型

大模型选择

选用了近期刚发布的ChatGLM3-6b作为基座模型,考虑想利用模型进行Chat微调后的能力,没有使用ChatGLM3-6b-Base进行改进。ChatGLM3-6b地址: https://github.com/THUDM/ChatGLM3

Slurm脚本编写

slurm脚本整个可分为A+B两部分,这两部分直接拼起来就能运行,sbatch job.slurm可以提交作业。

A部分:作业提交命令部分(1行中第2个#后的内容是注释)

#!/bin/bash 
#SBATCH -J gpt_zh_en                     #作业名
#SBATCH -p A800:8                         #使用的机器的名字,这个机器里面有gpu1和gpu2两个节点
#SBATCH -w gpu2                           #具体使用的节点名为gpu2,需要注意,不能再使用--nodes=1
#SBATCH --ntasks-per-node=12        #每个计算节点上使用srun启动的任务数
#SBATCH --time 720:00:00               #运行时间720h约等于1个月
#SBATCH --mem=240G                    #运行时间720h约等于1个月
#SBATCH --comment=BASE              #附加注释信息
#SBATCH -o /public1/home/amzhou/slurm/std.out.%j     #输出文件路径,带有作业ID
#SBATCH -e /public1/home/amzhou/slurm/std.err.%j      #报错文件路径,带有作业ID
#SBATCH --gres=gpu:8                     #请求8个GPU

### Set basic var   ### MARK_slurm2pbs                    #设置变量
JOBID=$SLURM_JOB_ID                                  ### slurm2pbs             #声明作业ID变量
NP=$SLURM_NPROCS                                     ### slurm2pbs              #声明进程数
NNODE=`srun hostname | sort | uniq | wc -l`          ### slurm2pbs        #统计唯一节点数
LOG_FILE=$WORK_DIR/job_${JOB_NAME}_${JOBID}.log                       #定义日志文件路径
HOST_FILE=$WORK_DIR/job_${JOB_NAME}_${JOBID}_${NP}c_${NNODE}n.ma # 定义主机文件路径 
srun hostname | sort | uniq -c |awk '{print $2":"$1}' > $HOST_FILE  ### slurm2pbs    # 创建包含节点计数的文件
### Write basic job infomations           #正常输出一些信息
echo -e "The start time is: `date +"%Y-%m-%d %H:%M:%S"` \n" | tee -a $LOG_FILE 
echo -e "My job ID is: $JOBID \n" | tee -a $LOG_FILE  
echo -e "The total cores is: $NP \n" | tee -a $LOG_FILE 
echo -e "The hosts is: \n" | tee -a $LOG_FILE
cat $HOST_FILE | tee -a $LOG_FILE
echo -e "\n"  | tee -a $LOG_FILE
### Run APP                                     #准备运行自己的东西
# MARK_CMD  #Don't delete this line!!! #这行标记CMD
#!/bin/bash                                        #下面将由 Bash 解释器来执行
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

B部分:自己的东西

source /public1/home/amzhou/anaconda3/bin/activate glm3   ##激活环境
set -ex                                  ##-e表示任何命令的退出状态不是 0,就结束运行
                                           ##-x启用了脚本的调试模式,会在执行每个命令之前输出该命令及其参数
LR=1e-4                               
NUM_GPUS=8                       ##gpu数量
MAX_SOURCE_LEN=1536
MAX_TARGET_LEN=512
DEV_BATCH_SIZE=16
GRAD_ACCUMULARION_STEPS=1
MAX_STEP=200000               ##最大运行步数
SAVE_INTERVAL=1000          ##每过多少步保存一次
RUN_NAME=gpt
BASE_MODEL_PATH=/public1/home/amzhou/ChatGLM3/chatglm3-6b
DATASET_PATH=/public1/home/amzhou/ChatGLM3/finetune_demo/scripts/formatted_data/gpt_zh_en.jsonl
DATASTR=`date +%Y%m%d-%H%M%S`
OUTPUT_DIR=output/${RUN_NAME}-${DATASTR}-${LR}
MASTER_PORT=$(shuf -n 1 -i 10000-65535)
mkdir -p $OUTPUT_DIR
##torchrun   --standalone表示单个节点 --nnodes=1表示节点数为1  --nproc_per_node表述节点上多少个处理进程,定义为GPU数量
torchrun --standalone --nnodes=1 --nproc_per_node=$NUM_GPUS finetune.py \
    --train_format input-output \
    --train_file $DATASET_PATH \
    --preprocessing_num_workers 1 \
    --model_name_or_path $BASE_MODEL_PATH \
    --output_dir $OUTPUT_DIR \
    --max_source_length $MAX_SOURCE_LEN \
    --max_target_length $MAX_TARGET_LEN \
    --per_device_train_batch_size $DEV_BATCH_SIZE \
    --gradient_accumulation_steps $GRAD_ACCUMULARION_STEPS \
    --max_steps $MAX_STEP \
    --logging_steps 1 \
    --save_steps $SAVE_INTERVAL \
    --learning_rate $LR \
    --fp16 \
    --deepspeed configs/deepspeed.json 2>&1 | tee ${OUTPUT_DIR}/train.log
    
# MARK_BASH #Don't delete this line!!!   #标记结束
echo The end time is: `date +"%Y-%m-%d %H:%M:%S"` | tee -a $LOG_FILE   ##输出结束时间
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/413665
推荐阅读
相关标签
  

闽ICP备14008679号