Buckets:

mishig's picture
|
download
raw
4.55 kB
# BFL (fp8r / nvfp4)
[Black Forest Labs](https://huggingface.co/black-forest-labs), [Flux3](../api/pipelines/flux3) dönüştürücülerinin kuantize edilmiş varyantlarını iki şema ile sunar; bunlar, orijinal bf16 ağırlıklarının yanında tek dosyalık kontrol noktaları olarak saklanır:
- `fp8r`: satır bazlı FP8. Her kuantize doğrusal, bir E4M3 `weight` ve satır başına bir fp32 `weight_scale` saklar. Aktivasyonlar çalışma zamanında satır bazında E4M3'e kuantize edilir.
- `nvfp4`: [ModelOpt](https://github.com/NVIDIA/Model-Optimizer) yerleşimindeki NVFP4. Her kuantize doğrusal, paketlenmiş E2M1 `weight` (bayt başına iki değer), 16'lı E4M3 blok ölçekleri (`weight_scale`), küresel fp32 `weight_scale_2` ve kalibre edilmiş fp32 aktivasyon ölçeği `input_scale` saklar.
Diffusers, her ikisini de [BFLQuantizationConfig](/docs/diffusers/main/tr/api/quantization#diffusers.BFLQuantizationConfig) ile `~FromSingleFileMixin.from_single_file` üzerinden yükler. Şema, checkpoint'ten okunduğu için aynı yapılandırma her iki dosya için de geçerlidir. Yalnızca önceden kuantize edilmiş checkpoint'lerin yüklenmesi desteklenir; pipeline düzeyinde yükleme desteklenmez.
Aşağıdaki örnek, model deposundaki `variants/fp8r/model.safetensors` konumunda bulunan [FLUX 3 Image Klein Base](https://huggingface.co/black-forest-labs/flux-3-image-klein-base)'in `fp8r` kontrol noktasını yükler. Model yapılandırmasının o depodaki Diffusers klasöründen okunması için `config` parametresini iletin, ardından diğer bileşenleri adlarıyla yükleyin (bkz. [Single-file loading](../api/pipelines/flux3#single-file-loading)).
```python
import torch
from diffusers import BFLQuantizationConfig, Flux3Transformer2DModel, ModularPipeline
ckpt_path = "https://huggingface.co/black-forest-labs/flux-3-image-klein-base/blob/main/variants/fp8r/model.safetensors"
transformer = Flux3Transformer2DModel.from_single_file(
ckpt_path,
config="black-forest-labs/flux-3-image-klein-base",
subfolder="transformer",
quantization_config=BFLQuantizationConfig(compute_dtype=torch.bfloat16),
dtype=torch.bfloat16,
)
pipe = ModularPipeline.from_pretrained("black-forest-labs/flux-3-image-klein-base")
pipe.load_components(dtype=torch.bfloat16)
pipe.update_components(transformer=transformer)
pipe.to("cuda")
prompt = "A wide-angle wildlife photograph of a red fox standing alert in a snow-covered forest clearing at golden hour."
image = pipe(prompt=prompt, generator=torch.Generator().manual_seed(0), output="images")[0]
image.save("flux3-klein-base-fp8r.png")
```
`variants/fp8r` yerine `variants/nvfp4` yazarak `nvfp4` varyantını yükleyin. Adım-distilled [FLUX 3 Image Klein](https://huggingface.co/black-forest-labs/flux-3-image-klein) aynı iki varyantı içerir; bunları `config` ve pipeline olarak deposunun kimliğiyle yükleyin.
## Çekirdekler
Kantize ağırlıklar, düşük hassasiyetli depolama veri türlerinde kalır. Hangi GEMM'in çalışacağı cihaza bağlıdır:
| Şema | Fused çekirdek | Gereksinimler |
|---|---|---|
| `fp8r` | Satır bazlı ölçeklerle `torch._scaled_mm` | Hesaplama yeteneği 8.9 veya daha yüksek olan CUDA GPU |
| `nvfp4` | `flashinfer.mm_fp4` (CUTLASS) ve aktivasyonlar için `flashinfer.nvfp4_quantize` | Blackwell GPU (hesaplama yeteneği 10.0 veya daha yüksek), `nvcc` içeren bir CUDA araç seti ve aynı sürümde `flashinfer-python` ile `flashinfer-cubin` |
İki FlashInfer paketini aynı sürümde yükleyin, örneğin `pip install flashinfer-python==0.6.13 flashinfer-cubin==0.6.13`. `flashinfer-cubin` sürümü `flashinfer-python` sürümünün gerisinde kalabilir ve sürümler farklı olduğunda FlashInfer içe aktarmayı reddeder.
FlashInfer, NVFP4 çekirdeklerini ilk kullanımda ortamın CUDA araç setiyle derler ve hedef mimariyi görünür GPU'dan (veya ayarlanmışsa `FLASHINFER_CUDA_ARCH_LIST` değişkeninden) seçer. Tüketici ve iş istasyonu Blackwell GPU'ları (hesaplama yeteneği 12.0) için 12.9 veya daha yeni bir CUDA araç seti gereklidir. Daha eski bir araç seti kullanıldığında FlashInfer uygun bir mimari bulamaz ve ilk NVFP4 çağrısı `FlashInfer requires GPUs with sm75 or higher` hatasıyla başarısız olur.
Diğer herhangi bir cihazda, ağırlıklar her ileri geçişte `compute_dtype` tipine dekuantize edilir ve katman normal bir doğrusal katman olarak çalışır. Bu durumda aktivasyonlar kuantize edilmediğinden, çıktılar füzyonlu çekirdeklerden hafifçe farklılık gösterir.

Xet Storage Details

Size:
4.55 kB
·
Xet hash:
033808b85cc8e9c112e9f8945f391a3b39ed4ee9f3a34c391dee42d05d7f4e48

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.