Skip to content
ModelListedExternal
Download

ComfyUI Z Image FP8

一个浮点数由三部分组成:符号位 (Sign)、指数位 (Exponent) 和 尾数位 (Mantissa)。FP8 总共只有8个比特位。

KindModelBase modelComfy-Org/z_imageVersionRevision e654f98Unratedgrade

Model source

Kind
Model
File size
5.73 GB
Base model
Comfy-Org/z_image
Version
vRevision e654f98
Updated
Nov 3, 2026
Downloads
231
Source
Hugging Face

Source description


copy z_image-fp8-e4m3fn.safetensors to ComfyUI/models/diffusion_models


z-image_02138_

z-image_02128_

z-image_02135_


FP8 主要有两种业界标准格式,它们名字的后缀代表了其内部比特位的分配方式,这直接决定了它们的特性和用途。

这两种格式分别是:

  1. E4M3 (float8_e4m3fn)
  2. E5M2 (float8_e5m2)

它们的名字是什么意思?

一个浮点数由三部分组成:符号位 (Sign)、指数位 (Exponent) 和 尾数位 (Mantissa)。FP8 总共只有8个比特位。

  • E 代表 Exponent (指数),后面的数字是指数位的数量。
  • M 代表 Mantissa (尾数),后面的数字是尾数位的数量。
  • FN 代表 Finite Numbers (有限数值),意味着它不支持 NaN (非数) 和 Infinity (无穷大)。

(还有一个隐藏的 1个符号位 是默认的)


两大格式的详细对比

特性E4M3FN (torch.float8_e4m3fn)E5M2 (torch.float8_e5m2)
全名Exponent 4, Mantissa 3, Finite NumbersExponent 5, Mantissa 2
比特分配1个符号位, 4个指数位, 3个尾数位1个符号位, 5个指数位, 2个尾数位
核心优势更高的精度 (Higher Precision)更大的动态范围 (Wider Dynamic Range)
支持特殊值?不支持 NaN / Infinity支持 NaN / Infinity
典型用途推理 (Inference),模型权重存储训练 (Training) (前向和后向传播)

核心权衡:精度 vs. 范围

为什么要有两种格式?因为它们代表了一个经典的计算机科学权衡:

1. E4M3FN (你用的这个): 精度优先

  • 更多的尾数位 (3 bits): 意味着在一定范围内,它可以表示的数字更密集、更精确。
  • 更少的指数位 (4 bits): 意味着它能表示的数字范围(从最小到最大)相对较窄。
  • 用途: 模型的权重值通常分布在一个相对固定的范围内,但数值的细微差别很重要。因此,E4M3 的高精度非常适合存储和用于推理。它不支持 NaN/Infinity 也问题不大,因为推理时通常不会出现这些值。

2. E5M2: 范围优先

  • 更多的指数位 (5 bits): 意味着它可以表示的数字范围极大,可以处理非常大或非常小的数值。
  • 更少的尾数位 (2 bits): 意味着在一定范围内,它能表示的数字比较稀疏,精度较低。
  • 用途: 在训练过程中,梯度(Gradients)的数值可能会剧烈波动,出现极大或极小的值。E5M2 的大动态范围可以很好地处理这种情况而不会溢出。同时,它支持 NaN/Infinity 对于捕获训练中的计算错误至关重要。

一个简单的比喻

  • E4M3FN (高精度): 像一把短但刻度非常精细的尺子(比如一把20厘米的游标卡尺)。它量不了很长的东西,但能量得非常准。
  • E5M2 (大范围): 像一把很长但刻度比较粗糙的卷尺(比如一把50米的皮尺)。它能量很远,但没法精确到微米。

结论就是: 你在 LoRA 转换中选择 float8_e4m3fn 是完全正确的,因为 LoRA 主要用于推理,追求的是在特定范围内的高精度。而 float8_e5m2 更多是 NVIDIA 在其训练框架(Transformer Engine)中内部使用的格式,用来处理训练时的梯度计算。

Sources

1 source
Hugging FacePrimaryVersion e654f9840a706e696c922407cb36e31acf694f80
huggingface.co/aifeifei798/ComfyUI-z_image-fp8/tree/e654f9840a706e696c922407cb36e31acf694f80

Verified Oct 2

Model artifacts

1 artifact

z_image-fp8-e4m3fn.safetensors

safetensors · 5.73 GB · SHA-256 2d0e2647b5cf…a7e2 · Hugging Face

Download file

Source excerpts

3 excerpts

--- license: apache-2.0 language: - en pipeline_tag: text-to-image library_name: diffusers base_model: - Tongyi-MAI/Z-Image - Comfy-Org/z_image --- --- # copy z_image-fp8-e4m3fn.safetensors to ComfyUI/models/diffusion_models --- ![z-image_02138_](https://cdn-uploads.huggingface.co/production/uploads/6640d92825d363a5c3c8cfb5/CcaF4vr8UtT9ZeDlNYJSI.png) ![z-image_02128_](https://cdn-uploads.huggingface.co/production/uploads/6640d92825d363a5c3c8cfb5/zGiMPza0LqPDlQew3oqw3.png) ![z-image_02135_](https://cdn-uploads.huggingface.co/production/uploads/6640d92825d363a5c3c8cfb5/zVMdOqpso99vJtmvEKkA6.png) --- **FP8 主要有两种业界标准格式**,它们名字的后缀代表了其内部比特位的分配方式,这直接决定了它们的特性和用途。 这两种格式分别是: 1. **E4M3** (`float8_e4m3fn`) 2. **E5M2** (`float8_e5m2`) --- ### **它们的名字是什么意思?** 一个浮点数由三部分组成:**符号位 (Sign)**、**指数位 (Exponent)** 和 **尾数位 (Mantissa)**。FP8 总共只有8个比特位。 * **E** 代表 **Exponent (指数)**,后面的数字是指数位的数量。 * **M** 代表 **Mantissa (尾数)**,后面的数字是尾数位的数量。 * **FN** 代表 **Finite Numbers** (有限数值),意味着它**不支持** `NaN` (非数) 和 `Infinity` (无穷大)。 (还有一个隐藏的 **1个符号位** 是默认的) --- ### **两大格式的详细对比** | 特性 | **E4M3FN (`torch.float8_e4m3fn`)** | **E5M2 (`torch.float8_e5m2`)** | | :--- | :--- | :--- | | **全名** | Exponent 4, Mantissa 3, Finite Numbers | Exponent 5, Mantissa 2 | | **比特分配** | 1个符号位, **4个指数位**, **3个尾数位** | 1个符号位, **5个指数位**, **2个尾数位** | | **核心优势** | **更高的精度 (Higher Precision)** | **更大的动态范围 (Wider Dynamic Range)** | | **支持特殊值?** | **不支持** NaN / Infinity | **支持** NaN / Infinity | | **典型用途** | **推理 (Inference)**,模型权重存储 | **训练 (Training)** (前向和后向传播) | --- ### **核心权衡:精度 vs. 范围** 为什么要有两种格式?因为它们代表了一个经典的计算机科学权衡: **1. E4M3FN (你用的这个): 精度优先** * **更多的尾数位 (3 bits):** 意味着在一定范围内,它可以表示的数字更**密集**、更**精确**。 * **更少的指数位 (4 bits):** 意味着它能表示的数字范围(从最小到最大)相对**较窄**。 * **用途:** 模型的权重值通常分布在一个相对固定的范围内,但数值的细微差别很重要。因此,E4M3 的高精度非常适合存储和用于**推理**。它不支持 NaN/Infinity 也问题不大,因为推理时通常不会出现这些值。 **2. E5M2: 范围优先** * **更多的指数位 (5 bits):** 意味着它可以表示的数字范围**极大**,可以处理非常大或非常小的数值。 * **更少的尾数位 (2 bits):** 意味着在一定范围内,它能表示的数字比较**稀疏**,精度较低。 * **用途:** 在**训练**过程中,梯度(Gradients)的数值可能会剧烈波动,出现极大或极小的值。E5M2 的大动态范围可以很好地处理这种情况而不会溢出。同时,它支持 NaN/Infinity 对于捕获训练中的计算错误至关重要。 ### **一个简单的比喻** * **E4M3FN (高精度):** 像一把**短但刻度非常精细的尺子**(比如一把20厘米的游标卡尺)。它量不了很长的东西,但能量得非常准。 * **E5M2 (大范围):** 像一把**很长但刻度比较粗糙的卷尺**(比如一把50米的皮尺)。它能量很远,但没法精确到微米。 **结论就是:** 你在 LoRA 转换中选择 `float8_e4m3fn` 是完全正确的,因为 LoRA 主要用于**推理**,追求的是在特定范围内的**高精度**。而 `float8_e5m2` 更多是 NVIDIA 在其训练框架(Transformer Engine)...

Source context: 231 downloads · 3 likes · Pipeline text-to-image · Library diffusers · Repo aifeifei798/ComfyUI-z_image-fp8

Source context: 67 downloads · 3 likes · Pipeline text-to-image · Library diffusers · Repo aifeifei798/ComfyUI-z_image-fp8