本地运行Bloom模型遇内存不足及参数错误,求解决方案
本地运行Bloom模型的解决方案
问题分析
你遇到两个核心问题:
- 内存不足错误:Bloom模型参数规模大,直接加载到CPU内存会超出容量限制。
- TypeError参数缺失:使用
AutoModel加载模型不符合Bloom的模型类型要求,且transformers版本迭代导致参数接口变化。
解决步骤
1. 替换正确的模型加载类
Bloom是因果语言模型,需使用AutoModelForCausalLM而非AutoModel,这能直接解决build_alibi_tensor参数缺失问题。
2. 针对内存不足的优化方案
根据硬件情况选择以下一种方案:
方案一:4位量化加载(适合有NVIDIA GPU的设备)
通过bitsandbytes库实现模型量化,大幅降低显存占用:
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig import torch model_path = "D:/bloom" # 配置4位量化参数 bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_use_double_quant=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16 ) tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained( model_path, quantization_config=bnb_config, device_map="auto" )
方案二:CPU内存分片(无GPU设备)
启用低内存模式,将模型参数分片加载到CPU内存:
from transformers import AutoTokenizer, AutoModelForCausalLM model_path = "D:/bloom" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained( model_path, device_map="cpu", low_cpu_mem_usage=True )
方案三:直接加载到GPU(显存充足的情况)
如果你的GPU显存足够(比如Bloom-560M需要至少2GB显存),可以直接加载:
from transformers import AutoTokenizer, AutoModelForCausalLM model_path = "D:/bloom" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path).to("cuda")
3. 验证模型运行
加载完成后,可通过以下代码测试模型生成:
prompt = "Hello, Bloom model!" inputs = tokenizer(prompt, return_tensors="pt").to(model.device) outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True))
内容的提问来源于stack exchange,提问作者duro
相关产品推荐
相关产品推荐

