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

Mac M2 CPU环境下用Transformers运行StarCoder模型报错求助

解决Mac M2 CPU环境下StarCoder 8bit加载失败问题

问题根源

  1. 你安装的bitsandbytes未编译GPU支持,在Apple Silicon的CPU环境下无法启用GPU量化逻辑;同时device_map="auto"会自动尝试将模块分配到GPU,与你指定的CPU运行环境冲突。
  2. 错误提示明确要求启用load_in_8bit_fp32_cpu_offload=True并指定自定义device_map——因为当前CPU环境无法直接运行8bit量化模块,需允许CPU上的模块以32bit形式加载。

修复后的代码

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

checkpoint = "bigcode/starcoder"
device = "cpu"

tokenizer = AutoTokenizer.from_pretrained(checkpoint)

model = AutoModelForCausalLM.from_pretrained(
    checkpoint,
    device_map="cpu",  # 强制所有模块加载到CPU,避免GPU分配冲突
    load_in_8bit=True,
    load_in_8bit_fp32_cpu_offload=True,  # 允许CPU上的模块以32bit运行
    torch_dtype=torch.float32  # 适配CPU环境,避免float16兼容性问题
)

print(f"Memory footprint: {model.get_memory_footprint() / 1e6:.2f} MB")

inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
outputs = model.generate(inputs)

print(tokenizer.decode(outputs[0], clean_up_tokenization_spaces=False))

额外说明

  • Intel MKL警告可忽略:Mac M2为ARM架构,MKL的SSE4.2支持警告不影响实际运行。
  • 若仍遇内存不足:可添加offload_folder="./offload"参数,将部分模块临时存到磁盘缓解内存压力。

内容的提问来源于stack exchange,提问作者Exploring

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:38:23