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

Mac MPS环境运行LeoLM-7B-Chat模型遇BFloat16不支持错误的解决方法

问题修复方案

核心错误原因

  1. MPS不支持BFloat16:Apple Silicon的MPS设备无法处理bfloat16数据类型,当前配置中指定的bnb_4bit_compute_dtype=bfloat16触发了类型不兼容错误。
  2. Bitsandbytes 4bit量化不支持MPS:该量化方案仅针对CUDA设备开发,MPS环境下无法初始化FP4量化层,导致第二个报错。
  3. 代码遗漏torch导入:原代码使用torch.device但未导入完整torch模块,会引发隐性错误。

具体修改步骤

1. 补充必要导入

在代码开头添加完整的torch导入:

import torch
from torch import cuda, bfloat16, float16
import transformers

2. 调整量化与设备配置

根据你的Mac内存情况选择以下方案:

方案A:无量化加载(适合16GB+统一内存)

移除Bitsandbytes的4bit量化配置,改用MPS支持的float16加载模型,并手动迁移到MPS设备:

device = torch.device("mps")
model_id = 'LeoLM/leo-hessianai-7b-chat'
hf_auth = 'HF_KEY'

# 直接加载模型,指定float16数据类型
model = transformers.AutoModelForCausalLM.from_pretrained(
    model_id,
    trust_remote_code=False,
    torch_dtype=float16,
    device_map='auto',
    use_auth_token=hf_auth
)
# 手动将模型迁移到MPS
model.to(device)
model.eval()
print(f"Model loaded on {device}")

方案B:8bit量化加载(适合内存紧张的情况)

尝试使用Bitsandbytes的8bit量化(MPS兼容性有限,需测试),同时替换计算数据类型为float16:

device = torch.device("mps")
model_id = 'LeoLM/leo-hessianai-7b-chat'
hf_auth = 'HF_KEY'

# 调整量化配置为8bit,使用float16计算
bnb_config = transformers.BitsAndBytesConfig(
    load_in_8bit=True,
    bnb_8bit_compute_dtype=float16
)

model_config = transformers.AutoConfig.from_pretrained(
    model_id,
    use_auth_token=hf_auth
)

model = transformers.AutoModelForCausalLM.from_pretrained(
    model_id,
    trust_remote_code=False,
    config=model_config,
    quantization_config=bnb_config,
    device_map='auto',
    use_auth_token=hf_auth
)
model.to(device)
model.eval()
print(f"Model loaded on {device}")

3. 其余代码保持不变

Tokenizer和文本生成Pipeline部分无需修改,直接沿用原代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:20:31