模型调参——让模型一次跑多个参数的结果

发布于:2024-05-17 ⋅ 阅读:(125) ⋅ 点赞:(0)

1、引言

跑深度学习代码的时候,需要调多个参数来得到最好的效果。比如:模型可能需要调节 学习率,epoch,batch等超参数。

我们可能会有一下调参需求:

  • 依次调节不同参数,如:epoch=35,batch=32
  • 调节同一个参数,如:epoch=35,epoch=40,epoch=45,epoch=50

通俗的说,之前是我们调节一个参数值后,让模型跑一次得到实验结果。再调节参数,让模型再跑一次。现如今,我们不想一个参数一个参数的调,费事,我们想让模型只跑一次,就可以得到多个参数的实验结果。

2、前提:将训练的结果都写入日志中

可以参考 python将日志写入文件(超详细)
因为每个参数值会得到一个实验结果,多个参数值就有多个参数结果,写入到日志后,等跑完实验后,就可以查看日志文件,进而得到多参数的实验结果。

3、实战:调节参数epoch,得到参数epoch分别为35,40,45,50,55的模型结果

原始.sh 文件,运行使用bash run_twitter15.sh
在这里插入图片描述
修改为run15.sh文件,满足让模型跑一次得到 参数epoch分别为35,40,45,50,55的结果。
在这里插入图片描述
然后等模型训练完,查看日志文件,即可看到epoch分别为35,40,45,50,55的模型结果。

4、实战:依次调节epoch,batch参数,得到epoch分别为35,40,45,50,55,batch分别为8 16 32 64的结果

  • 想调节几个参数,就写几个for循环

run15.sh文件

#!/usr/bin/env bash
DATASET_NAME="twitter15"
BERT_NAME="bert-base"

# First loop for different epochs
for EPOCHS in 35 40 45 50 55
do
    CUDA_VISIBLE_DEVICES=0 python -u run.py \
        --dataset_name=${DATASET_NAME} \
        --bert_name=${BERT_NAME} \
        --num_epochs=${EPOCHS} \
        --batch_size=32 \
        --lr=3e-5 \
        --warmup_ratio=0.01 \
        --eval_begin_epoch=3 \
        --seed=1234 \
        --do_train \
        --ignore_idx=0 \
        --max_seq=128 \
        --use_prompt \
        --prompt_len=4 \
        --sample_ratio=1.0 \
        --save_path=best_model_twitter15
done

# Second loop for different batch sizes
EPOCHS=30  # 固定的epoch数
for BATCH_SIZE in 8 16 32 64
do
    CUDA_VISIBLE_DEVICES=0 python -u run.py \
        --dataset_name=${DATASET_NAME} \
        --bert_name=${BERT_NAME} \
        --num_epochs=${EPOCHS} \
        --batch_size=${BATCH_SIZE} \
        --lr=3e-5 \
        --warmup_ratio=0.01 \
        --eval_begin_epoch=21 \
        --seed=1234 \
        --do_train \
        --ignore_idx=0 \
        --max_seq=128 \
        --use_prompt \
        --prompt_len=4 \
        --sample_ratio=1.0 \
        --save_path=best_model_twitter17
done