Buckets:

mishig's picture
|
download
raw
5.46 kB
# BFL (fp8r / nvfp4)
تُصدر [Black Forest Labs](https://huggingface.co/black-forest-labs) نسخًا مُكمّمة من محولات [Flux3](../api/pipelines/flux3) الخاصة بها وفق مخططَين، وتُخزَّن كنقاط فحص أحادية الملف بجوار أوزان bf16 الأصلية:
- `fp8r`: FP8 على مستوى الصفوف. يخزّن كل خطي مُكمَّم وزنًا من نوع E4M3 `weight` ومقياسًا لكل صف من نوع fp32 `weight_scale`. يتم كمّ التنشيطات إلى E4M3 لكل صف وقت التشغيل.
- `nvfp4`: NVFP4 في تخطيط [ModelOpt](https://github.com/NVIDIA/Model-Optimizer). يخزّن كل خطي مُكمَّم `weight` مُجمَّعًا من نوع E2M1 (قيمتان لكل بايت)، ومقاييس كتل E4M3 بحجم 16 (`weight_scale`)، ومقياسًا عامًا `weight_scale_2` من نوع fp32، ومقياس تنشيط مُعايَر `input_scale` من نوع fp32.
تحمّل Diffusers كلاهما عبر `~FromSingleFileMixin.from_single_file` باستخدام [BFLQuantizationConfig](/docs/diffusers/v0.43.0/ar/api/quantization#diffusers.BFLQuantizationConfig). يتم قراءة المخطط من نقطة التفتيش، لذا يعمل نفس الإعداد مع أي من الملفين. يتم دعم تحميل نقاط التفتيش المُكمّاة مسبقًا فقط؛ ولا يتم دعم التحميل على مستوى خط الأنابيب.
يُحمّل المثال أدناه نقطة الفحص `fp8r` الخاصة بـ [FLUX 3 Image Klein Base](https://huggingface.co/black-forest-labs/flux-3-image-klein-base)، والتي تقع في `variants/fp8r/model.safetensors` ضمن مستودع النموذج. مرّر `config` بحيث تُقرأ إعدادات النموذج من مجلد Diffusers في ذلك المستودع، ثم حمّل المكونات الأخرى بالاسم (انظر [التحميل من ملف واحد](../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` بـ `variants/nvfp4` لتحميل النسخة `nvfp4`. تأتي النسخة المُصفاة خطوة بخطوة من [FLUX 3 Image Klein](https://huggingface.co/black-forest-labs/flux-3-image-klein) بالنسختين نفسيهما؛ حمّلهما باستخدام معرف مستودعها كـ `config` وخط أنابيب.
## النوى
تبقى الأوزان المُكمّمة في نوع التخزين منخفض الدقة الخاص بها. يعتمد تنفيذ GEMM على الجهاز:
| المخطط | نواة مدمجة | المتطلبات |
|---|---|---|
| `fp8r` | `torch._scaled_mm` مع مقاييس صفية | وحدة معالجة رسومات CUDA بقابلية حساب 8.9 أو أعلى |
| `nvfp4` | `flashinfer.mm_fp4` (CUTLASS) مع `flashinfer.nvfp4_quantize` لتفعيلات | وحدة معالجة رسومات Blackwell (قدرة الحوسبة 10.0 أو أعلى)، وأدوات CUDA مع `nvcc`، و`flashinfer-python` مع `flashinfer-cubin` في نفس الإصدار |
قم بتثبيت حزم FlashInfer الاثنتين عند نفس الإصدار، على سبيل المثال `pip install flashinfer-python==0.6.13 flashinfer-cubin==0.6.13`. قد يتأخر إصدار `flashinfer-cubin` عن `flashinfer-python`، ويرفض FlashInfer الاستيراد عندما تختلف الإصدارات.
يقوم FlashInfer بتجميع نواته NVFP4 عند الاستخدام الأول باستخدام مجموعة أدوات CUDA الخاصة بالبيئة، ويحدد البنية المستهدفة من وحدة معالجة الرسوميات المرئية (أو من `FLASHINFER_CUDA_ARCH_LIST` عند ضبطها). تحتاج وحدات معالجة الرسوميات Blackwell الموجهة للمستهلكين ومحطات العمل (قدرة الحوسبة 12.0) إلى مجموعة أدوات CUDA من الإصدار 12.9 أو أحدث. عند استخدام مجموعة أدوات أقدم، لا يجد FlashInfer أي بنية مؤهلة، ويفشل أول استدعاء لـ NVFP4 مع رسالة `FlashInfer requires GPUs with sm75 or higher`.
على أي جهاز آخر، يتم إلغاء تكميم الأوزان إلى `compute_dtype` في كل تمريرة أمامية، وتعمل الطبقة كخطية عادية. في هذه الحالة، لا يتم تكميم التنشيطات، لذا فإن المخرجات تختلف قليلاً عن النوى المدمجة.

Xet Storage Details

Size:
5.46 kB
·
Xet hash:
f2be6044bcc496fa9f731c33d5f4ebf588c76125e8a572beb28f0a58cc8a2587

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