Buckets:

mishig's picture
download
raw
15.2 kB
<meta charset="utf-8" /><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;BFL (fp8r / nvfp4)&quot;,&quot;local&quot;:&quot;bfl-fp8r--nvfp4&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;النوى&quot;,&quot;local&quot;:&quot;kernels&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}"/>
<link href="/docs/diffusers/main/en/_app/immutable/entry/start.0S0_iEoG.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/I9eooN77.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/Bupkjr9f.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/entry/app.CPdOxCbw.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/CyvZ3FS5.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/l0QnnOED.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/DnVIJfC5.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/nodes/0.DteTvmQZ.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/CoSrdQax.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/nodes/351.Cu90JRCw.js" rel="modulepreload">
<link href="/docs/diffusers/main/en/_app/immutable/chunks/DSPDl1gz.js" rel="modulepreload">
<!--7gq4hb--><meta name="hf:doc:metadata" content="{&quot;title&quot;:&quot;BFL (fp8r / nvfp4)&quot;,&quot;local&quot;:&quot;bfl-fp8r--nvfp4&quot;,&quot;sections&quot;:[{&quot;title&quot;:&quot;Kernels&quot;,&quot;local&quot;:&quot;kernels&quot;,&quot;sections&quot;:[],&quot;depth&quot;:2}],&quot;depth&quot;:1}"/><!---->
<link href="/docs/diffusers/main/en/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"><div dir="ltr" class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----></span> <span dir="auto">Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="bfl-fp8r--nvfp4" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#bfl-fp8r--nvfp4"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->BFL (fp8r / nvfp4)<!----></span></h1><!--]--><!----> <p>تُصدر <a href="https://huggingface.co/black-forest-labs" rel="nofollow">Black Forest Labs</a> نسخًا مُكمّمة من محولات <a href="../api/pipelines/flux3">Flux3</a> الخاصة بها وفق مخططَين، وتُخزَّن كنقاط فحص أحادية الملف بجوار أوزان bf16 الأصلية:</p> <ul><li><code>fp8r</code>: FP8 على مستوى الصفوف. يخزّن كل خطي مُكمَّم وزنًا من نوع E4M3 <code>weight</code> ومقياسًا لكل صف من نوع fp32 <code>weight_scale</code>. يتم كمّ التنشيطات إلى E4M3 لكل صف وقت التشغيل.</li> <li><code>nvfp4</code>: NVFP4 في تخطيط <a href="https://github.com/NVIDIA/Model-Optimizer" rel="nofollow">ModelOpt</a>. يخزّن كل خطي مُكمَّم <code>weight</code> مُجمَّعًا من نوع E2M1 (قيمتان لكل بايت)، ومقاييس كتل E4M3 بحجم 16 (<code>weight_scale</code>)، ومقياسًا عامًا <code>weight_scale_2</code> من نوع fp32، ومقياس تنشيط مُعايَر <code>input_scale</code> من نوع fp32.</li></ul> <p>تحمّل Diffusers كلاهما عبر <code>~FromSingleFileMixin.from_single_file</code> باستخدام <a href="/docs/diffusers/v0.43.0/ar/api/quantization#diffusers.BFLQuantizationConfig">BFLQuantizationConfig</a>. يتم قراءة المخطط من نقطة التفتيش، لذا يعمل نفس الإعداد مع أي من الملفين. يتم دعم تحميل نقاط التفتيش المُكمّاة مسبقًا فقط؛ ولا يتم دعم التحميل على مستوى خط الأنابيب.</p> <p>يُحمّل المثال أدناه نقطة الفحص <code>fp8r</code> الخاصة بـ <a href="https://huggingface.co/black-forest-labs/flux-3-image-klein-base" rel="nofollow">FLUX 3 Image Klein Base</a>، والتي تقع في <code>variants/fp8r/model.safetensors</code> ضمن مستودع النموذج. مرّر <code>config</code> بحيث تُقرأ إعدادات النموذج من مجلد Diffusers في ذلك المستودع، ثم حمّل المكونات الأخرى بالاسم (انظر <a href="../api/pipelines/flux3#single-file-loading">التحميل من ملف واحد</a>).</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> تم النسخ</div><!----></button><!----></div> <pre class="language-python "><!----><span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> BFLQuantizationConfig, Flux3Transformer2DModel, ModularPipeline
ckpt_path = <span class="hljs-string">&quot;https://huggingface.co/black-forest-labs/flux-3-image-klein-base/blob/main/variants/fp8r/model.safetensors&quot;</span>
transformer = Flux3Transformer2DModel.from_single_file(
ckpt_path,
config=<span class="hljs-string">&quot;black-forest-labs/flux-3-image-klein-base&quot;</span>,
subfolder=<span class="hljs-string">&quot;transformer&quot;</span>,
quantization_config=BFLQuantizationConfig(compute_dtype=torch.bfloat16),
dtype=torch.bfloat16,
)
pipe = ModularPipeline.from_pretrained(<span class="hljs-string">&quot;black-forest-labs/flux-3-image-klein-base&quot;</span>)
pipe.load_components(dtype=torch.bfloat16)
pipe.update_components(transformer=transformer)
pipe.to(<span class="hljs-string">&quot;cuda&quot;</span>)
prompt = <span class="hljs-string">&quot;A wide-angle wildlife photograph of a red fox standing alert in a snow-covered forest clearing at golden hour.&quot;</span>
image = pipe(prompt=prompt, generator=torch.Generator().manual_seed(<span class="hljs-number">0</span>), output=<span class="hljs-string">&quot;images&quot;</span>)[<span class="hljs-number">0</span>]
image.save(<span class="hljs-string">&quot;flux3-klein-base-fp8r.png&quot;</span>)<!----></pre></div><!----> <p>استبدل <code>variants/fp8r</code> بـ <code>variants/nvfp4</code> لتحميل النسخة <code>nvfp4</code>. تأتي النسخة المُصفاة خطوة بخطوة من <a href="https://huggingface.co/black-forest-labs/flux-3-image-klein" rel="nofollow">FLUX 3 Image Klein</a> بالنسختين نفسيهما؛ حمّلهما باستخدام معرف مستودعها كـ <code>config</code> وخط أنابيب.</p> <!--[1--><h2 class="relative group"><a id="kernels" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#kernels"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->النوى<!----></span></h2><!--]--><!----> <p>تبقى الأوزان المُكمّمة في نوع التخزين منخفض الدقة الخاص بها. يعتمد تنفيذ GEMM على الجهاز:</p> <table><thead><tr><th>المخطط</th><th>نواة مدمجة</th><th>المتطلبات</th></tr></thead><tbody><tr><td><code>fp8r</code></td><td><code>torch._scaled_mm</code> مع مقاييس صفية</td><td>وحدة معالجة رسومات CUDA بقابلية حساب 8.9 أو أعلى</td></tr><tr><td><code>nvfp4</code></td><td><code>flashinfer.mm_fp4</code> (CUTLASS) مع <code>flashinfer.nvfp4_quantize</code> لتفعيلات</td><td>وحدة معالجة رسومات Blackwell (قدرة الحوسبة 10.0 أو أعلى)، وأدوات CUDA مع <code>nvcc</code>، و<code>flashinfer-python</code> مع <code>flashinfer-cubin</code> في نفس الإصدار</td></tr></tbody></table> <p>قم بتثبيت حزم FlashInfer الاثنتين عند نفس الإصدار، على سبيل المثال <code>pip install flashinfer-python==0.6.13 flashinfer-cubin==0.6.13</code>. قد يتأخر إصدار <code>flashinfer-cubin</code> عن <code>flashinfer-python</code>، ويرفض FlashInfer الاستيراد عندما تختلف الإصدارات.</p> <p>يقوم FlashInfer بتجميع نواته NVFP4 عند الاستخدام الأول باستخدام مجموعة أدوات CUDA الخاصة بالبيئة، ويحدد البنية المستهدفة من وحدة معالجة الرسوميات المرئية (أو من <code>FLASHINFER_CUDA_ARCH_LIST</code> عند ضبطها). تحتاج وحدات معالجة الرسوميات Blackwell الموجهة للمستهلكين ومحطات العمل (قدرة الحوسبة 12.0) إلى مجموعة أدوات CUDA من الإصدار 12.9 أو أحدث. عند استخدام مجموعة أدوات أقدم، لا يجد FlashInfer أي بنية مؤهلة، ويفشل أول استدعاء لـ NVFP4 مع رسالة <code>FlashInfer requires GPUs with sm75 or higher</code>.</p> <p>على أي جهاز آخر، يتم إلغاء تكميم الأوزان إلى <code>compute_dtype</code> في كل تمريرة أمامية، وتعمل الطبقة كخطية عادية. في هذه الحالة، لا يتم تكميم التنشيطات، لذا فإن المخرجات تختلف قليلاً عن النوى المدمجة.</p> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/diffusers/blob/main/docs/source/en/quantization/bfl.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]-->
<script>
{
__sveltekit_1qsdbwf = {
base: "/docs/diffusers/main/en",
assets: "/docs/diffusers/main/en"
};
const element = document.currentScript.parentElement;
Promise.all([
import("/docs/diffusers/main/en/_app/immutable/entry/start.0S0_iEoG.js"),
import("/docs/diffusers/main/en/_app/immutable/entry/app.CPdOxCbw.js")
]).then(([kit, app]) => {
kit.start(app, element, {
node_ids: [0, 351],
data: [null,null],
form: null,
error: null
});
});
}
</script>

Xet Storage Details

Size:
15.2 kB
·
Xet hash:
f734e699ce44b3e0ac42026cd87163438194aaac5abd1300a5b0a64ba32928d9

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