تشغيل FLUX.1-dev GGUF Q8 في Python
تسريع FLUX.1-dev باستخدام كمّ量化 GGUF
FLUX.1-dev هو نموذج قوي لتحويل النص إلى صورة ينتج نتائج مذهلة، ولكن متطلباته من الذاكرة البالغة 24 جيجابايت أو أكثر تجعله تحديًا لتشغيله على العديد من الأنظمة. تكميم GGUF لـ FLUX.1-dev يقدم حلًا، حيث يقلل من استخدام الذاكرة بنسبة تصل إلى 50% مع الحفاظ على جودة الصورة الممتازة.
تم إنشاء هذه الصورة باستخدام نموذج FLUX.1-dev المُكمم بـ Q8 بصيغة GGUF، مما يُظهر أن الجودة تُحافظ عليها حتى مع تقليل حجم الذاكرة.
ما هو تكميم GGUF؟
GGUF (GPT-Generated Unified Format) هو صيغة تكميم تم تطويرها في الأصل لنموذج لغوي، ولكنها الآن مدعومة أيضًا لنماذج الانتشار مثل FLUX. يقلل التكميم من حجم النموذج عن طريق تخزين الأوزان بصيغة دقة منخفضة (8 بت، 6 بت، أو 4 بت) بدلًا من الدقة الكاملة 16 بت أو 32 بت.
بالنسبة لـ FLUX.1-dev، يمكن تكميم مكون المُحول (أكبر جزء من النموذج)، مما يقلل من حجم الذاكرة من حوالي 24 جيجابايت إلى 12 جيجابايت باستخدام تكميم Q8_0، أو حتى أقل مع مستويات تكميم أكثر تشددًا.
فوائد تكميم GGUF
الفوائد الرئيسية لاستخدام نماذج FLUX المُكممة بـ GGUF تشمل:
- تقليل استخدام الذاكرة: تقليل متطلبات الذاكرة المُستخدمة (VRAM) بنصف، مما يجعل FLUX.1-dev متاحًا على معدات أكثر
- الحفاظ على الجودة: يحافظ تكميم Q8_0 على جودة الصورة مع اختلافات بسيطة لا يمكن ملاحظتها
- التحميل الأسرع: تُحمل النماذج المُكممة أسرع بسبب أحجام الملفات الأصغر
- الاستهلاك الأقل للطاقة: تقليل استخدام الذاكرة يُترجم إلى استهلاك طاقة أقل أثناء الاستنتاج
في اختباراتنا، تستخدم النموذج المُكمم حوالي 12-15 جيجابايت من الذاكرة المُستخدمة (VRAM) مقارنة بـ 24 جيجابايت أو أكثر للنموذج الكامل، بينما تظل مدة إنشاء الصورة مشابهة.
التثبيت والتكوين
للاستفادة من نموذج FLUX.1-dev المُكمم بـ GGUF، ستحتاج إلى حزمة gguf بالإضافة إلى التبعيات القياسية لـ diffusers. إذا كنت تستخدم بالفعل FLUX لتحويل النص إلى صورة، فأنت على دراية بالتكوين الأساسي.
إذا كنت تستخدم uv كمدير حزم Python، فيمكنك تثبيت الحزم المطلوبة باستخدام:
uv pip install -U diffusers torch transformers gguf
أو باستخدام pip القياسي:
pip install -U diffusers torch transformers gguf
التنفيذ
الاختلاف الرئيسي عند استخدام نماذج GGUF المُكممة هو أنك تحمّل المُحول بشكل منفصل باستخدام FluxTransformer2DModel.from_single_file() مع GGUFQuantizationConfig، ثم تمرره إلى الأنبوب. إذا كنت بحاجة إلى مرجع سريع لقواعد Python، فراجع قائمة مصطلحات Python. إليك مثالًا كاملًا يعمل:
import os
import torch
from diffusers import FluxPipeline, FluxTransformer2DModel, GGUFQuantizationConfig
# المسارات
gguf_model_path = "/path/to/flux1-dev-Q8_0.gguf"
base_model_path = "/path/to/FLUX.1-dev-config" # الملفات فقط للتكوين
# تحميل المُحول المُكمم بـ GGUF
print(f"تحميل المُحول المُكمم بـ GGUF من: {gguf_model_path}")
transformer = FluxTransformer2DModel.from_single_file(
gguf_model_path,
quantization_config=GGUFQuantizationConfig(compute_dtype=torch.bfloat16),
config=base_model_path,
subfolder="transformer",
torch_dtype=torch.bfloat16,
)
# إنشاء أنبوب مع المُحول المُكمم
print(f"إنشاء أنبوب مع النموذج الأساسي: {base_model_path}")
pipe = FluxPipeline.from_pretrained(
base_model_path,
transformer=transformer,
torch_dtype=torch.bfloat16,
)
# تمكين نقل المعالجة إلى وحدة المعالجة المركزية (الضروري لـ GGUF)
pipe.enable_model_cpu_offload()
# ملاحظة: enable_sequential_cpu_offload() غير متوافق مع GGUF
# إنشاء صورة
prompt = "مخطط مدينة مستقبلية عند غروب الشمس مع أضواء نيون"
image = pipe(
prompt,
height=496,
width=680,
guidance_scale=3.5,
num_inference_steps=60,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(42)
).images[0]
image.save("output.jpg")
اعتبارات مهمة
ملفات تكوين النموذج
عند استخدام تكميم GGUF، ما زلت بحاجة إلى ملفات تكوين النموذج الأصلية من نموذج FLUX.1-dev. وتتضمن هذه الملفات:
model_index.json- هيكل الأنبوب- تكوينات المكونات (المُحول، المُشفِّر النصي، المُشفِّر النصي الثاني، VAE، المُخطط)
- ملفات المُشفِّر النصي ووزن VAE (هذه غير مُكممة)
تأتي أوزان المُحول من ملف GGUF، ولكن جميع المكونات الأخرى تتطلب الملفات الأصلية للنموذج.
توافق نقل المعالجة إلى وحدة المعالجة المركزية
مهم: enable_sequential_cpu_offload() غير متوافق مع نماذج GGUF المُكممة، وسينتج خطأ KeyError: None. أستخدم فقط enable_model_cpu_offload() عند العمل مع المُحولات المُكممة.
مستويات التكميم
مستويات التكميم المتاحة لـ FLUX.1-dev تشمل:
- Q8_0: أفضل جودة، ~14-15 جيجابايت من الذاكرة (الموصى بها)
- Q6_K: توازن جيد، ~12 جيجابايت من الذاكرة
- Q4_K: ضغط أقصى، ~8 جيجابايت من الذاكرة (أفترض أن هذا يؤثر على الجودة بشكل غير مفيد)
لأغلب الاستخدامات، Q8_0 يوفر أفضل توازن بين توفير الذاكرة وجودة الصورة.
مقارنة الأداء
في اختباراتنا مع نفس العبارات والإعدادات:
| النموذج | استخدام الذاكرة (VRAM) | وقت إنشاء الصورة | الجودة |
|---|---|---|---|
| FLUX.1-dev الكامل | 24 جيجابايت | ليس لدي جهاز كمبيوتر يحتوي على وحدة معالجة رسومات بهذا الحجم | ممتاز (أعتقد) |
| FLUX.1-dev الكامل | ~3 جيجابايت مع enable_sequential_cpu_offload() | ~329 ثانية | ممتاز |
| GGUF Q8_0 | ~14-15 جيجابايت | ~98 ثانية !!! | ممتاز |
| GGUF Q6_K | ~10-12 جيجابايت | ~116 ثانية | جيد جدًا |
بما أن النموذج المُكمم يتطلب الآن نقلًا أقل إلى وحدة المعالجة المركزية، فإن سرعة إنشاء الصورة أسرع بثلاث مرات تقريبًا، مع استخدام كمية أقل بكثير من الذاكرة، مما يجعله عمليًا على الأنظمة ذات الذاكرة المحدودة.
لقد اختبرت كلا النموذجين باستخدام العبارة التالية:
تقرير مقربي للمحول التخميني ASIC مع دوائر معقدة، تضيء الأضواء الزرقاء من وحدات الضرب المصفوفة الكثيفة ووحدات ALU ذات الدقة المنخفضة، محاطة بخزائن SRAM على الرقاقة وخطوط تكميم، مُصورة بأسلوب فوتوغرافي فائق التفاصيل مع إضاءة باردة وطبية.
صورة النموذج المُكمم Q8 لـ FLUX.1-dev هي صورة الغلاف لهذا المقال - راجع أعلاه.
صورة النموذج غير المُكمم لـ FLUX.1-dev أدناه:

لا أرى فرقًا كبيرًا في الجودة.
الخاتمة
يُمكن لـ GGUF تكميم FLUX.1-dev الوصول إلى مجموعة أوسع من الأجهزة مع الحفاظ على جودة إنشاء الصور العالية التي يشتهر بها النموذج. من خلال تقليل متطلبات الذاكرة بنسبة تصل إلى 50%، يمكنك تشغيل إنشاء الصور من النصوص على معدات أكثر تكلفة دون فقدان كبير في الجودة.
التنفيذ بسيط باستخدام مكتبة diffusers، ويحتاج فقط إلى تغييرات بسيطة في إعداد أنبوب FLUX القياسي. بالنسبة لمعظم المستخدمين، تكميم Q8_0 يوفر التوازن الأمثل بين كفاءة الذاكرة وجودة الصورة.
إذا كنت تعمل مع FLUX.1-Kontext-dev لتحسين الصورة، فقد تصبح تقنيات تكميم مشابهة متاحة في المستقبل.
المقالات المرتبطة
- FLUX تحويل النص إلى صورة - دليل استخدام FLUX.1-dev لتحويل النص إلى صورة
- FLUX.1-Kontext-dev: نموذج الذكاء الاصطناعي لتحسين الصورة
- uv - حزمة Python الجديدة، مدير المشاريع، وبيئة جديدة
- قائمة مصطلحات Python
المراجع
- توثيق GGUF في HuggingFace Diffusers - الوثائق الرسمية حول استخدام GGUF مع diffusers
- FLUX.1-dev-GGUF من Unsloth - نماذج GGUF المُكممة مسبقًا لـ FLUX.1-dev
- FLUX.1-dev من Black Forest Labs - مستودع النموذج الأصلي لـ FLUX.1-dev
- مواصفات صيغة GGUF - التفاصيل التقنية حول صيغة GGUF