model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan2-7B-Chat", torch_dtype=torch.float16,trust_remote_code=True)
model = model.quantize(4).cuda()
我看了下加载过程,是先加载到内存,很耗费时间,然后量化,再移到显卡。如果电脑内存不够很容易爆内存。
我试了下代码
model = AutoModelForCausalLM.from_pretrained("Baichuan2-7B-Base", quantization_config=BitsAndBytesConfig(load_in_4bit=True), trust_remote_code=True)
使用baichuan示例的方法量化:
我看了下加载过程,是先加载到内存,很耗费时间,然后量化,再移到显卡。如果电脑内存不够很容易爆内存。
我试了下代码
直接load_in_4bit也是可以的。而且是直接量化加载到显卡,比第一种方法快得多。
但是为什么这两种量化方法的得到的模型不同?比如,我已经设do_sample=False, temperature=0,但是两种量化方法得到的模型对同样的输入,输出是不同的。而且我看了下显存占用,第二种方法的显存占用比第一种要多了几百MB。 这两种量化有什么区别吗,初学者求解惑