You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地运行Bloom模型遇内存不足及参数错误,求解决方案

本地运行Bloom模型的解决方案

问题分析

你遇到两个核心问题:

  1. 内存不足错误:Bloom模型参数规模大,直接加载到CPU内存会超出容量限制。
  2. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 07:48:46