在CPU运行CohereForAI/c4ai-command-r-plus-4bit模型遇ValueError报错求助
问题分析与解决方案
问题原因
你使用的CohereForAI/c4ai-command-r-plus-4bit是基于bitsandbytes库实现的4bit量化模型,而bitsandbytes的4bit量化功能目前仅支持CUDA(GPU)设备,直接指定device_map='cpu'加载会触发设备不匹配的报错。
解决方法
要在CPU上运行该模型,有两种可行方案:
方案一:加载原始非量化模型并适配CPU
替换为原始的非量化模型版本,同时配置正确的CPU加载参数:
from transformers import AutoTokenizer, AutoModelForCausalLM import torch PRETRAIN_MODEL = 'CohereForAI/c4ai-command-r-plus' # 替换为非量化版本 tokenizer = AutoTokenizer.from_pretrained(PRETRAIN_MODEL) # 加载模型到CPU,禁用量化相关参数 model = AutoModelForCausalLM.from_pretrained( PRETRAIN_MODEL, device_map='cpu', torch_dtype=torch.float32 # CPU运行推荐用float32,避免精度问题 ) text = "this is an example" inputs = tokenizer(text, return_tensors="pt").to('cpu') # 确保输入张量在CPU上 with torch.no_grad(): outputs = model(**inputs) embedding = outputs.last_hidden_state.mean(dim=1).squeeze().numpy() print(embedding.shape)
方案二:使用支持CPU的量化方案
如果希望保持量化以减少内存占用,可以选择该模型的GGUF格式量化版本(需通过llama.cpp或其Python绑定运行),这类格式原生支持CPU推理。大致流程:
- 下载对应模型的GGUF格式权重文件
- 使用llama.cpp的Python库加载模型并执行推理
注意事项
- 原始模型参数量约104B,CPU运行需充足内存(建议64GB以上),否则会出现内存不足报错。
- 若内存有限,可选择更小的模型版本(如
CohereForAI/c4ai-command-r),或进一步使用CPU支持的INT8量化技术压缩模型体积。
内容的提问来源于stack exchange,提问作者Howie
相关产品推荐
相关产品推荐

