Buckets:

mishig's picture
|
download
raw
5.61 kB

GGUF

يُستخدم تنسيق ملفات GGUF عادةً لتخزين النماذج للاستدلال باستخدام GGML، ويدعم مجموعة متنوعة من خيارات التكميم على مستوى الكتل. يدعم Diffusers تحميل نقاط التفتيش المُكمَّمة مسبقًا والمُحفوظة بتنسيق GGUF عبر تحميل from_single_file باستخدام فئات النموذج. حاليًا، لا يُدعم تحميل نقاط التفتيش بتنسيق GGUF عبر خطوط الأنابيب (Pipelines).

سيُحمّل المثال التالي نموذج التحويلة FLUX.1 DEV باستخدام متغير التكميم GGUF Q2_K.

قبل البدء، يرجى تثبيت gguf في بيئتك

pip install -U gguf

بما أن GGUF هو تنسيق ملف واحد، استخدم ~FromSingleFileMixin.from_single_file لتحميل النموذج وقم بتمرير GGUFQuantizationConfig.

عند استخدام نقاط التفتيش بصيغة GGUF، تبقى الأوزان المُكمّمة في نوع بيانات ذاكرة منخفض dtype (عادةً torch.uint8) وتُفكّ كمّتها وتُحوَّل ديناميكيًا إلى compute_dtype المُهيّأ أثناء مرور كل وحدة في المسار الأمامي عبر النموذج. ويتيح لك GGUFQuantizationConfig ضبط compute_dtype.

تستند الدوال المستخدمة لفك الترميز الديناميكي إلى العمل الرائع الذي أنجزه city96، والذي أنشأ إصدارات Pytorch من التنفيذ الأصلي بـ numpy الذي أنشأه compilade.

import torch

from diffusers import FluxPipeline, FluxTransformer2DModel, GGUFQuantizationConfig

ckpt_path = (
    "https://huggingface.co/city96/FLUX.1-dev-gguf/blob/main/flux1-dev-Q2_K.gguf"
)
transformer = FluxTransformer2DModel.from_single_file(
    ckpt_path,
    quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16),
    dtype=torch.bfloat16,
)
pipe = FluxPipeline.from_pretrained(
    "black-forest-labs/FLUX.1-dev",
    transformer=transformer,
    dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
prompt = "A cat holding a sign that says hello world"
image = pipe(prompt, generator=torch.manual_seed(0)).images[0]
image.save("flux-gguf.png")

استخدام نواة CUDA المُحسَّنة مع GGUF

يمكن أن تُسرّع نواة CUDA المُحسَّنة استنتاج نماذج GGUF المُكمّمة بنسبة تقارب 10%. تتطلب هذه الميزة وحدة معالجة رسومات متوافقة تكون قيمة torch.cuda.get_device_capability فيها أكبر من 7، بالإضافة إلى مكتبة النواة:

pip install -U kernels

بعد التثبيت، اضبط DIFFUSERS_GGUF_CUDA_KERNELS=true لاستخدام الأنوية المحسّنة عند توفرها. لاحظ أن أنوية CUDA قد تُدخل فروقات رقمية طفيفة مقارنةً بتنفيذ GGUF الأصلي، مما قد يسبب اختلافات بصرية دقيقة في الصور المولّدة. لتعطيل استخدام أنوية CUDA، اضبط متغير البيئة DIFFUSERS_GGUF_CUDA_KERNELS=false.

يتم تنزيل نواة GGUF من مستودع Isotr0py/ggml، حيث أن ناشره ليس ناشر نواة موثوقًا به على Hub. يؤدي تحميله إلى تنزيل وتنفيذ أكواد من Hub، لذا يتطلب Diffusers منك الموافقة صراحةً من خلال تعيين DIFFUSERS_TRUST_REMOTE_KERNELS=true. راجع الثقة في النوى البعيدة للتفاصيل.

أنواع التكميم المدعومة

  • BF16
  • Q4_0
  • Q4_1
  • Q5_0
  • Q5_1
  • Q8_0
  • Q2_K
  • Q3_K
  • Q4_K
  • Q5_K
  • Q6_K

التحويل إلى GGUF

استخدم المساحة أدناه لتحويل نقطة تحقق من Diffusers إلى صيغة GGUF للاستدلال. نفّذ التحويل:

Xet Storage Details

Size:
5.61 kB
·
Xet hash:
f734970688f4415604a678e6f58cfbf0f6d0bf69298d9d0e3d91c4e0e773c9f0

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