这个错误是因为 LLaMA-Factory 升级后,在检测到非 NVIDIA GPU 时禁用了 bf16 支持,即使你的 M3 芯片硬件支持 bf16。
解决方法:找到LLaMA-Factory/src/llamafactory/hparams/training_args.py文件,在 post_init 方法中添加对 Apple Silicon 的检测:
def __post_init__(self):
# 检查是否为 Apple Silicon 设备 (MPS)
is_apple_silicon = (
hasattr(torch, "backends") and
hasattr(torch.backends, "mps") and
torch.backends.mps.is_available()
)
# 如果是 Apple Silicon 设备,跳过 bf16 检查
if is_apple_silicon:
# 保存原始 bf16 设置
original_bf16 = self.bf16
# 临时禁用 bf16 检查
self.bf16 = False
# 调用父类的 __post_init__ 方法
Seq2SeqTrainingArguments.__post_init__(self)
# 恢复原始 bf16 设置
self.bf16 = original_bf16
else:
# 非 Apple Silicon 设备,正常执行检查
Seq2SeqTrainingArguments.__post_init__(self)
RayArguments.__post_init__(self)