Open sunxiaoyu12 opened 1 year ago
尝试调小batch size,设置batch size=1试一下
尝试调小batch size,设置batch size=1试一下
调整之后依旧OOM了
那可能需要开启模型并行了,把finetune_visualglm.sh
里的第四行MP_SIZE=1
改成MP_SIZE=2
,然后代码里这一行:https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L178
改为
model, args = FineTuneVisualGLMModel.from_pretrained(model_type, args, overwrite_args={'model_parallel_size':2})
另外还需要把这行代码https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L175 注释掉
不过要使用这个功能需要保证你的sat和visualglm都是最新版本的代码。
git clone https://github.com/THUDM/SwissArmyTransformer
cd SwissArmyTransformer
pip install .
你好,目前使用3个节点对visualGLM进行微调(Lora),每个节点4张16GB的卡,一共是12张16GB的卡,依旧报OOM,请问我还需要增加多少才够用?
你好,如何使用多卡finetune呢,在.sh脚本中需要添加什么呢,谢谢
什么都不用添加,默认就是所有卡(qlora脚本的话就改一下--include)
什么都不用添加,默认就是所有卡(qlora脚本的话就改一下--include)
请问,我想调试下fine的代码,因为不熟悉qlora怎么实现的,但是执行文件是很长的.sh文件,如何在sat库中查看下qlora呢。感谢
用vscode定位引用库,或者直接在sat里搜索qlora
那可能需要开启模型并行了,把
finetune_visualglm.sh
里的第四行MP_SIZE=1
改成MP_SIZE=2
,然后代码里这一行:https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L178改为
model, args = FineTuneVisualGLMModel.from_pretrained(model_type, args, overwrite_args={'model_parallel_size':2})
另外还需要把这行代码https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L175 注释掉
不过要使用这个功能需要保证你的sat和visualglm都是最新版本的代码。
git clone https://github.com/THUDM/SwissArmyTransformer cd SwissArmyTransformer pip install .
你好,我使用了最新的visualglm代码,sat也更新到0.4.3,修改了以上的代码,运行报错:
AssertionError: node group is not initialized, please pass LOCAL_WORLD_SIZE environment variable.
报错具体信息:
以下是finetune_visualglm.sh代码:
#! /bin/bash
NUM_WORKERS=1
NUM_GPUS_PER_WORKER=4
MP_SIZE=2
script_path=$(realpath $0)
script_dir=$(dirname $script_path)
main_dir=$(dirname $script_dir)
MODEL_TYPE="visualglm-6b"
MODEL_ARGS="--max_source_length 64 \
--max_target_length 256 \
--lora_rank 10 \
--layer_range 0 14 \
--pre_seq_len 4"
OPTIONS_SAT="LOCAL_WORLD_SIZE=4"
# OPTIONS_SAT="SAT_HOME=$1" #"SAT_HOME=/raid/dm/sat_models"
OPTIONS_NCCL="NCCL_DEBUG=info NCCL_IB_DISABLE=0 NCCL_NET_GDR_LEVEL=2 NCCL_SOCKET_IFNAME=eth0 NCCL_P2P_DISABLE=1"
HOST_FILE_PATH="myhostfile"
# HOST_FILE_PATH="hostfile_single"
train_data="./fewshot-data/dataset.json"
eval_data="./fewshot-data/dataset.json"
gpt_options=" \
--experiment-name finetune-$MODEL_TYPE \
--model-parallel-size ${MP_SIZE} \
--mode finetune \
--train-iters 300 \
--resume-dataloader \
$MODEL_ARGS \
--train-data ${train_data} \
--valid-data ${eval_data} \
--distributed-backend nccl \
--lr-decay-style cosine \
--warmup .02 \
--checkpoint-activations \
--save-interval 300 \
--eval-interval 10000 \
--save "./checkpoints" \
--split 1 \
--eval-iters 10 \
--eval-batch-size 8 \
--zero-stage 1 \
--lr 0.0001 \
--batch-size 1 \
--skip-init \
--fp16 \
--use_lora
"
# run_cmd="${OPTIONS_NCCL} ${OPTIONS_SAT} deepspeed --master_port 16666 --hostfile ${HOST_FILE_PATH} finetune_visualglm.py ${gpt_options}"
MASTER_PORT=$(shuf -n 1 -i 10000-65535)
run_cmd="${OPTIONS_NCCL} ${OPTIONS_SAT} deepspeed --num_gpus 4 --num_nodes 10 --master_port $MASTER_PORT --hostfile ${HOST_FILE_PATH} finetune_visualglm.py ${gpt_options}"
echo ${run_cmd}
eval ${run_cmd}
set +x
finetune_visualglm.py修改了如下两行:
多机跑的话可以用.deepspeed_env
传环境变量,参考:https://www.deepspeed.ai/getting-started/
使用这种方式,依旧报了同样的错误
说明你使用的方式不对。所以你需要研究一下deepspeed如何传环境变量(因为你也没提供更多信息,我也只能这么回复了。。)
大概是你的.deepspeed_env
文件没放对位置吧
感谢你的耐心解答。环境变量设置的没有问题,不开启模型并行已经可以跑通了,我用了10个节点,每个节点4块16G的卡,只不过每张卡使用度高达15.1G。 使用了最新的visualglm代码,sat也更新到0.4.4,模型并行还是不通,除了修改这里的代码(https://github.com/THUDM/VisualGLM-6B/issues/209#issuecomment-1657960196), 还需要修改其他配置吗?
模型并行报什么错,环境变量没问题是什么意思?没问题的话就不会报没有LOCAL_WORLD_SIZE的错误呀
因为LOCAL_WORLD_SIZE就是模型并行要用的环境变量,你不开模型并行肯定就不报错了,但是你要开模型并行就必须设置这个变量
在你运行程序的当前目录(应该是VisualGLM-6B目录)创建一个名为.deepspeed_env
的文件,里面写上
LOCAL_WORLD_SIZE=4
这样deepspeed就会传递这个环境变量了。
在你运行程序的当前目录(应该是VisualGLM-6B目录)创建一个名为
.deepspeed_env
的文件,里面写上LOCAL_WORLD_SIZE=4
这样deepspeed就会传递这个环境变量了。
感谢你的解答,这个问题已解决。但是模型划分的时候出现了维度不对齐的问题,问题描述如下:
那可能需要开启模型并行了,把
finetune_visualglm.sh
里的第四行MP_SIZE=1
改成MP_SIZE=2
,然后代码里这一行:https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L178改为
model, args = FineTuneVisualGLMModel.from_pretrained(model_type, args, overwrite_args={'model_parallel_size':2})
另外还需要把这行代码https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L175 注释掉
不过要使用这个功能需要保证你的sat和visualglm都是最新版本的代码。
git clone https://github.com/THUDM/SwissArmyTransformer cd SwissArmyTransformer pip install .
说明你没按照这里改对
你好,代码中需要修改的地方我已经改好了的:
还是报了维度不匹配的问题;
哦,是lora的问题。
你把https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L16C9-L19C9 16行到18删掉挪到下面去:
在https://github.com/THUDM/VisualGLM-6B/blob/main/finetune_visualglm.py#L16C9-L19C9 179行的位置插入如下代码:
if args.use_lora:
model.add_mixin("lora", LoraMixin(args.num_layers, args.lora_rank, layer_range=args.layer_range), reinit=True)
这样做以后训练应该是可以跑通了,但是inference的时候也需要修改一下,也在from_pretrained后面加上这两句。
不好意思,我又按照你说的修改了代码,首先把下面这段删掉:
接着在from_pretrained后面加了如下两行:
可是还是报了维度不匹配的错误:
图是不是贴错了
图是不是贴错了
更新了图
修复了,可以安装github最新版sat试一下:
git clone https://github.com/THUDM/SwissArmyTransformer
cd SwissArmyTransformer
pip install .
不过据我观察model parallel开到2,显存还是会占用14.7G,开到4大概10G。
修复了,可以安装github最新版sat试一下:
git clone https://github.com/THUDM/SwissArmyTransformer cd SwissArmyTransformer pip install .
不过据我观察model parallel开到2,显存还是会占用14.7G,开到4大概10G。
非常感谢你的细心解答!我安装了最新版本的sat(0.4.5),model parallel开到4,已经成功训练了,训练日志显示每次迭代MaxMemAllocated=4.2GB. 还有个小问题,是不是我使用多少个节点,model parallel就能开到多少,比如我现在10个节点,最多只能开到10?
10个节点总共40张卡的话,最多可以开到40,只要hidden size能整除model parallel size就可以。
好的!再次感谢你,学到了很多!
你好,https://github.com/THUDM/SwissArmyTransformer/issues/130这里面有你遇到的问题,你可以试试 ----- Original Message ----- From: yiyi0810 @.> To: THUDM/VisualGLM-6B @.> Cc: sunxiaoyu12 @.>, Mention @.> Subject: Re:_[THUDM/VisualGLM-6B]微调Lora需要多少GPU资源(Issue_#209) Date: 2024-05-15 18:56
@1049451037 @sunxiaoyu12 两位好,抱歉打扰了,请问一下我按照这个流程修改可以使用lora进行微调了,但是在进行推理时,报错了。
执行命令:python cli_demo_mp.py --from_pretrained my_pretrained_path
报错如下: 2024-05-15.18.54.32.png (view on web) 请问知道如何解决吗?
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
你好,https://github.com/THUDM/SwissArmyTransformer/issues/130这里面有你遇到的问题,你可以试试 ----- Original Message ----- From: yiyi0810 @.> To: THUDM/VisualGLM-6B @.> Cc: sunxiaoyu12 @.>, Mention @.> Subject: Re:_[THUDM/VisualGLM-6B]微调Lora需要多少GPU资源(Issue_#209) Date: 2024-05-15 18:56 @1049451037 @sunxiaoyu12 两位好,抱歉打扰了,请问一下我按照这个流程修改可以使用lora进行微调了,但是在进行推理时,报错了。 执行命令:python cli_demo_mp.py --from_pretrained my_pretrained_path 报错如下: 2024-05-15.18.54.32.png (view on web) 请问知道如何解决吗? — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
谢谢 已经解决啦
你好,目前使用3个节点对visualGLM进行微调(Lora),每个节点4张16GB的卡,一共是12张16GB的卡,依旧报OOM,请问我还需要增加多少才够用?