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

运行OpenAssistant pythia-12b模型报错:NameError: init_empty_weights未定义

解决NameError: name 'init_empty_weights' is not defined错误

问题原因

你遇到的错误是因为init_empty_weights是accelerate库中的函数,当前代码或依赖环境未正确加载它。在使用device_map="auto"和load_in_8bit=True加载模型时,Transformers 4.25.1版本需要依赖这个函数处理模型权重初始化,但未自动完成导入。

解决方案

方案1:手动导入init_empty_weights

在代码开头添加accelerate库的导入语句:

from accelerate import init_empty_weights
from transformers import AutoModelForCausalLM, GPTNeoXForCausalLM, AutoTokenizer

方案2:升级Transformers版本

Transformers 4.25.1属于较旧版本,后续版本(如4.28及以上)已优化该部分依赖处理,可避免此类导入缺失问题。执行以下命令升级:

pip install --upgrade transformers

方案3:匹配Accelerate兼容版本

确保Accelerate版本与Transformers 4.25.1兼容,推荐安装0.15.x版本:

pip install accelerate==0.15.0

调整后的完整代码示例

若选择方案1,修改后的代码如下:

from accelerate import init_empty_weights
from transformers import AutoModelForCausalLM, GPTNeoXForCausalLM, AutoTokenizer

Model = "OpenAssistant/oasst-sft-1-pythia-12b"

tokenizer = AutoTokenizer.from_pretrained(Model, cache_dir='models_hf')
model = GPTNeoXForCausalLM.from_pretrained(Model, device_map="auto", load_in_8bit=True, cache_dir='models_hf', low_cpu_mem_usage=True)

message = "Hello, How are you?"
inp = "<|prompter|>"+message+"<|endoftext|><|assistant|>"
data = tokenizer([inp], return_tensors="pt")
data = {k: v.to(model.device) for k, v in data.items() if k in ("input_ids", "attention_mask")}
outputs = model.generate(**data)
print(tokenizer.decode(outputs[0]))

内容的提问来源于stack exchange,提问作者José Roberto Canuto Vasconcelo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:37:16