Closed valkryhx closed 1 year ago
@valkryhx 我觉得不是推理慢,是陷入输出循环了,如果用stream_chat的方法应该能看出来。 你是用的merge后的int4模型吗?官方的int4方法貌似不是最优的,会导致一些性能,准确性的下降。
@valkryhx 我觉得不是推理慢,是陷入输出循环了,如果用stream_chat的方法应该能看出来。 你是用的merge后的int4模型吗?官方的int4方法貌似不是最优的,会导致一些性能,准确性的下降。
好的 我等会用stream方法看看。 另外为什么用您项目主页的推理方式 会报错:RuntimeError: self and mat2 must have the same dtype 我是用qlora SFT 然后加载base model时用到bitsandbytes的qconfig
config = PeftConfig.from_pretrained(peft_model_path) q_config = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type='nf4', bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.float32)
base_model = AutoModel.from_pretrained(config.base_model_name_or_path, quantization_config=q_config, trust_remote_code=True, device_map='auto')
model = PeftModel.from_pretrained(base_model, peft_model_path) # 这里就报错了
@valkryhx 各个库的版本和我的一致吗?我这里这部分一直没有报过错的。
我看您设置的bnb_4bit_compute_dtype=torch.float32
而我在做qlora的config里面是bnb_4bit_compute_dtype=torch.float16
有可能是这个原因?
另外 我也看到您和bash99 讨论的帖子 https://github.com/THUDM/ChatGLM2-6B/issues/141#issuecomment-1631783021 您项目主页提供的推理方案 是否对应这个帖子中提到的方案4呢?
@valkryhx 各个库的版本和我的一致吗?我这里这部分一直没有报过错的。
这个问题排查出来了 我使用adapter推理那一步提前把peft版本回退到0.3.0了 所以报错 ,使用正确的peft==0.4.0dev就好了
@valkryhx 主页的对应的不是4,主页的模型没有merge,方案4的模型首先要:
python3 merge_lora_and_quantize.py \
--lora_path saved_files/chatGLM2_6B_QLoRA_t32 \
--output_path /tmp/qlora-model2 \
--remote_scripts_dir remote_scripts/chatglm2-6b \
--qbits 0
获得一个合并后的fp16模型,然后这个模型可以直接加载,那就是fp16的推理,也可以按照训练脚本里那样,用bitsandbytes的config,以nf4
的方式加载进来,这个就是方案4
@valkryhx 主页的对应的不是4,主页的模型没有merge,方案4的模型首先要:
python3 merge_lora_and_quantize.py \ --lora_path saved_files/chatGLM2_6B_QLoRA_t32 \ --output_path /tmp/qlora-model2 \ --remote_scripts_dir remote_scripts/chatglm2-6b \ --qbits 0
获得一个合并后的fp16模型,然后这个模型可以直接加载,那就是fp16的推理,也可以按照训练脚本里那样,用bitsandbytes的config,以
nf4
的方式加载进来,这个就是方案4
那主页的方案相当于方案几呢?
@valkryhx 主页的对应的不是4,主页的模型没有merge,方案4的模型首先要:
python3 merge_lora_and_quantize.py \ --lora_path saved_files/chatGLM2_6B_QLoRA_t32 \ --output_path /tmp/qlora-model2 \ --remote_scripts_dir remote_scripts/chatglm2-6b \ --qbits 0
获得一个合并后的fp16模型,然后这个模型可以直接加载,那就是fp16的推理,也可以按照训练脚本里那样,用bitsandbytes的config,以
nf4
的方式加载进来,这个就是方案4那主页的方案相当于方案几呢?
主页相当于方案1,也就是inference_qlora.py这个脚本的方式,没有把base model和lora model合并
谢谢!
我用qlora的方式先做了一次sft 没有merge 推理速度还行。 又用qlora做了二次pretrain 看影响的层除了qkv之外dense层也影响了 结果把二次预训练的glm2 6b基座模型和qlora adapter做完merge之后,推理速度极慢,一个问题五分钟还没出答案,不知道大佬有没有遇到过这个情况