torch.cuda.OutOfMemoryError: CUDA out of memory.

今天微调chatglm3-6b的时候先后出现torch.cuda.OutOfMemoryError: CUDA out of memory.和torch.distributed.elastic.multiprocessing.api: [ERROR] failed (exitcode: 1) local_rank: 0 (pid: 780) of binary,我先试着解决后一个,未果,于是先看看前一个,打开训练日志,发现有很多空字符串,类似

'':      0 ->   -100

这是由于训练参数设置的过大,试着减小bach_size等参数,降低训练时显存占用率避免出现 torch.cuda.OutOfMemoryError: CUDA out of memory.显存不足的问题,我改成这样

PRE_SEQ_LEN=32
LR=2e-2
NUM_GPUS=1
MAX_SEQ_LEN=256
DEV_BATCH_SIZE=1
GRAD_ACCUMULARION_STEPS=16
MAX_STEP=40
SAVE_INTERVAL=10

DATESTR=`date +%Y%m%d-%H%M%S`
RUN_NAME=qa_test

BASE_MODEL_PATH=/mnt/workspace/ChatGLM3/chatglm3-6b
DATASET_PATH=formatted_data/my_data_qa.jsonl
OUTPUT_DIR=output/${RUN_NAME}-${DATESTR}-${PRE_SEQ_LEN}-${LR}

mkdir -p $OUTPUT_DIR

torchrun --standalone --nnodes=1 --nproc_per_node=$NUM_GPUS finetune.py \
    --train_format multi-turn \
    --train_file $DATASET_PATH \
    --max_seq_length $MAX_SEQ_LEN \
    --preprocessing_num_workers 1 \
    --model_name_or_path $BASE_MODEL_PATH \
    --output_dir $OUTPUT_DIR \
    --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 \
    --pre_seq_len $PRE_SEQ_LEN 2>&1 | tee ${OUTPUT_DIR}/train.log

记得改参数的时候最好折半比如512改为216.

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值