MPS 不支持 Float8:区分权重格式与实际计算类型
在 Mac 上加载某个 FP8 模型或执行节点时,出现转换到 MPS 不支持的 dtype 提示。需要确定是权重加载、解量化还是运算阶段受限,而不能据文件名认定所有量化模型都不支持。
现象与适用范围
在 Mac 上加载某个 FP8 模型或执行节点时,出现转换到 MPS 不支持的 dtype 提示。需要确定是权重加载、解量化还是运算阶段受限,而不能据文件名认定所有量化模型都不支持。
检索用原文或片段(具体编号、数值和文件名随环境变化):
Float8_e4m3fn
does not have support for that dtype
已核对的依据
issue #8988 记录了 Float8_e4m3fn 转到 MPS 的实际用户报告。PyTorch 的 MPS fallback 是有条件的机制,不是把任意 CUDA 或 Float8 算法自动转换为等价 CPU 算法。 I10 P05 P04
需要区分的情况
1. 模型文件使用一种存储精度,而所选加载器试图直接以设备不支持的计算类型运行。
2. 自定义节点硬编码 dtype 或设备,绕过了核心适配逻辑。
3. 某种量化路线需要专用加载器;普通 FP8、GGUF 与其他格式不能仅按“都是低精度”互换。
建议的操作顺序
以下顺序是基于上述资料整理的诊断方案,不代表上游已经为你的环境确认了原因。
第 1 步。 记录准确文件名、模型家族、加载器类名和 Torch 版本,截取首次 dtype 报错而不是最后一条队列失败信息。
第 2 步。 查该模型和加载器的 Mac 支持说明,寻找明确支持的权重与计算精度组合。
第 3 步。 在环境副本使用适配的非 FP8 文件或正确解量化加载路线;先确认更高精度所需内存,再下载更大文件。
第 4 步。 最小示例仍失败时提交文件身份与版本,避免盲目在所有节点加入 .float() 或随意设置后端 fallback。
如何判断处理有效
同一加载器不再尝试将不支持的数据类型送入 MPS,并能完成至少一次小输入运行;只加载成功不代表全部算子支持。
注意事项与尚未确认的部分
本文引用的是带时间的个案,不构成对未来 PyTorch 支持范围的永久判断。不要为了修复 Mac 去安装只适用于 NVIDIA 的 CUDA wheel。
资料核对日期:2026-09-21。本站未执行此工作流,未进行 GPU、最低显存或耗时测试。
原始资料
- I10 · Float8_e4m3fn unsupported on MPS。核对:2026-09-21;原始日期:2025-07-21。
- P05 · MPS environment variables。核对:2026-09-21。
- P04 · PyTorch local installation。核对:2026-09-21。
相关排查与操作
排查下一个可能的原因
同样的现象可能来自不同原因。可以按顺序查看下面这些相关条目。
- Float / Half / BFloat16 不一致:沿调用栈定位失败运算
mat1 and mat2 must have the same dtypedtype 错误不同于矩阵尺寸或设备错误。先看调用栈和不兼容的运算输入;仅凭 KSampler 报错不能判定是哪一组件造成了类型不一致。 - GGUF 文件无法加载:容器格式相同不代表模型用途相同
UnetLoaderGGUF下载 GGUF 后,普通 checkpoint 节点找不到它或专用加载器仍报错。需要先确认该文件是受到当前节点支持的扩散模型或文本编码器,而不是任意聊天模型的 GGUF。 - Mac 的 MPS backend out of memory:先看统一内存压力
MPS backend out of memoryApple Silicon 上的任务触发 MPS 内存上限。Mac 使用统一内存,浏览器、其他应用、模型和中间张量会共同影响可用空间,不能把机器总内存全部视为可分配给当前生成任务。
这篇内容对你有帮助吗?
匿名统计,只记录“有/没有帮助”的计数,不记录账号、IP 地址或设备信息。
资料来源
基于上游文档、源代码或标注为个案的错误报告整理。诊断顺序由本站编排;没有执行、硬件测试或保证修复的结论。
01Float8_e4m3fn unsupported on MPS资料核对: 2026-09-2102MPS environment variables资料核对: 2026-09-2103PyTorch local installation资料核对: 2026-09-21