هل تريد تجربة FLUX عبر الإنترنت دون متاعب إضافية؟
يمكنك تشغيل FLUX.1 Pro وSchnell وDev على Anakin AI الآن!



Flux Schnell هو نموذج قوي لتوليد الصور من النصوص قادر على إنتاج صور عالية الجودة من تلميحات نصية. في هذا الدليل، سنرشدك عبر الخطوات اللازمة لإعداد وتشغيل Flux Schnell محليًا على MacBook Pro M3 Max. هذه التهيئة تمكن توليد الصور بكفاءة عن طريق الاستفادة من ما يصل إلى 40 جيجابايت من الذاكرة العشوائية، حيث يستغرق كل صورة حوالي 30 ثانية للإنتاج.
متطلبات تشغيل Flux.1 Pro على Mac محليًا
قبل أن نبدأ، تأكد من أن نظامك يلبي المتطلبات التالية:
- MacBook Pro مع شريحة M3 Max
- macOS (آخر إصدار موصى به)
- ما لا يقل عن 40 جيجابايت من ذاكرة الوصول العشوائي المتاحة
- تثبيت Anaconda أو Miniconda
- اتصال إنترنت لتنزيل التبعيات
دليل خطوة بخطوة لتشغيل Flux.1 Pro على Mac محليًا
دليل خطوة بخطوة لتشغيل Flux.1 Pro على Mac محليًا
الخطوة 1: إعداد البيئة
أولاً، سنقوم بإنشاء بيئة Conda جديدة وتفعيلها:
conda create -n flux python=3.11
conda activate flux
الخطوة 2: تثبيت التبعيات
الآن، دعونا نثبت الحزم المطلوبة:
pip install torch==2.3.1
pip install git+https://github.com/huggingface/diffusers.git
pip install transformers==4.43.3 sentencepiece==0.2.0 accelerate==0.33.0 protobuf==5.27.3
الخطوة 3: إعداد سكريبت بايثون
قم بإنشاء ملف بايثون جديد باسم flux_schnell.py
وأضف الكود التالي:
import torch
from diffusers import FluxPipeline
import diffusers# عدل دالة الحبل لتنفيذ الجهاز MPS
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "يجب أن يكون البعد زوجيًا."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)
diffusers.models.transformers.transformer_flux.rope = new_flux_rope
# تحميل نموذج Flux Schnell
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
# تعريف التلميح
prompt = "قط يحمل لافتة مكتوب عليها مرحبًا بالعالم"
# توليد الصورة
out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
# حفظ الصورة المنتجة
out.save("flux_image.png")
الخطوة 4: تشغيل السكريبت
نفذ سكريبت بايثون:
python flux_schnell.py
سوف ينتج هذا صورة بناءً على التلميح "قط يحمل لافتة مكتوب عليها مرحبًا بالعالم" ويحفظها كـ "flux_image.png" في نفس الدليل.
فهم الكود
دعونا نفصل المكونات الرئيسية للسكريبت:
استيراد التبعيات
import torch
from diffusers import FluxPipeline
import diffusers
هذه الأسطر تستورد الوحدات اللازمة: PyTorch لعمليات المصفوفات، FluxPipeline من مكتبة diffusers لاستخدام نموذج Flux Schnell، ووحدة diffusers لمرافق إضافية.
تعديل دالة الحبل
_flux_rope = diffusers.models.transformers.transformer_flux.rope
def new_flux_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor:
assert dim % 2 == 0, "يجب أن يكون البعد زوجيًا."
if pos.device.type == "mps":
return _flux_rope(pos.to("cpu"), dim, theta).to(device=pos.device)
else:
return _flux_rope(pos, dim, theta)diffusers.models.transformers.transformer_flux.rope = new_flux_rope
هذا القسم يعدل دالة الحبل (تضمين الموضع الدائري) للتعامل مع جهاز MPS (Metal Performance Shaders) المستخدم في شرائح Apple Silicon. يضمن التوافق مع شريحة M3 Max عن طريق نقل المصفوفات إلى CPU عند الحاجة.
تحميل النموذج
pipe = FluxPipeline.from_pretrained(
"black-forest-labs/FLUX.1-schnell",
revision='refs/pr/1',
torch_dtype=torch.bfloat16
).to("mps")
هذا الكود يحمل نموذج Flux Schnell من مركز نماذج Hugging Face. يحدد إصدار النموذج، ويعين نوع البيانات إلى bfloat16 من أجل الكفاءة، وينقل النموذج إلى جهاز MPS.
توليد الصورة
prompt = "قط يحمل لافتة مكتوب عليها مرحبًا بالعالم"out = pipe(
prompt=prompt,
guidance_scale=0.,
height=1024,
width=1024,
num_inference_steps=4,
max_sequence_length=256,
).images[0]
هنا، نحن نحدد التلميح ونستخدم النموذج المحمل لتوليد صورة. تتحكم المعلمات في جوانب مختلفة من عملية التوليد:
guidance_scale
: محدد على 0 للتوليد غير المشروط.height
وwidth
: تعيين أبعاد الصورة الناتجة إلى 1024×1024 بكسل.num_inference_steps
: تتحكم في عدد خطوات إزالة الضوضاء (4 في هذه الحالة لسرعة التوليد).max_sequence_length
: يحدد الحد الأقصى لطول التسلسل المدخل.
حفظ الصورة
out.save("flux_image.png")
أخيرًا، تحتفظ هذه السطر بالصورة المنتجة كملف PNG يسمى “flux_image.png” في الدليل الحالي.
تحسين الأداء
للاستفادة القصوى من MacBook Pro M3 Max الخاص بك وتحقيق زمن توليد يقارب 30 ثانية مع استخدام تصل إلى 40 جيجابايت من الذاكرة العشوائية، ضع في اعتبارك النصائح التالية:
- إغلاق التطبيقات غير الضرورية: تأكد من إغلاق التطبيقات الأخرى التي تتطلب موارد كثيفة لتحرير ذاكرة الوصول العشوائي وموارد وحدة المعالجة المركزية.
- تعديل أبعاد الصورة: إذا كنت بحاجة إلى أوقات توليد أسرع، يمكنك تقليل معلمات
height
وwidth
. بالعكس، يمكنك زيادتها للحصول على جودة أعلى بتكلفة أوقات توليد أطول. - التجربة مع
num_inference_steps
: زيادة هذه القيمة يمكن أن يؤدي إلى صور ذات جودة أعلى ولكن ستزيد من زمن التوليد. تقليلها سيسرع العملية ولكن قد يقلل من جودة الصورة. - استخدام دقة bfloat16: كما تم تنفيذه بالفعل في السكريبت، يساعد استخدام نوع بيانات
torch.bfloat16
في تقليل استخدام الذاكرة وزيادة السرعة دون فقد كبير في الجودة. - العمليات على دفعات: إذا كنت بحاجة إلى توليد صور متعددة، فكر في تنفيذ معالجة الدفعات لجعل الاستخدام أكثر كفاءة لوحدة معالجة الرسوميات.
استكشاف الأخطاء وإصلاحها
إذا واجهت أي مشاكل أثناء تشغيل Flux Schnell على MacBook Pro M3 Max الخاص بك، جرب ما يلي:
- تحديث التبعيات: تأكد من تحديث جميع الحزم، خاصة PyTorch وdiffusers.
- تحقق من توافق CUDA: على الرغم من أن M3 Max يستخدم MPS، قد تحدث بعض الأخطاء المتعلقة بـ CUDA. تأكد من أنك تستخدم الإصدارات الصحيحة من PyTorch والمكتبات ذات الصلة لنظامك.
- مراقبة استخدام الموارد: استخدم Activity Monitor لمراقبة استخدام الذاكرة العشوائية ووحدة المعالجة المركزية. إذا كنت تضرب الحدود باستمرار، قد تحتاج إلى تعديل معلمات النموذج أو تحرير المزيد من موارد النظام.
- مسح الذاكرة المؤقتة: إذا واجهت أخطاء تتعلق بالذاكرة، حاول مسح ذاكرة التخزين المؤقت لـ PyTorch:
torch.cuda.empty_cache()
5. أعد تشغيل kernel: إذا كنت تستخدم دفتر ملاحظات Jupyter أو بيئة مماثلة، حاول إعادة تشغيل kernel إذا واجهت أخطاء مستمرة.
الخاتمة
تشغيل Flux Schnell محليًا على MacBook Pro M3 Max الخاص بك يوفر قدرات قوية لتوليد الصور من النصوص. مع الإعداد الموضح في هذا الدليل، يمكنك إنشاء صور عالية الجودة من الأوصاف النصية في حوالي 30 ثانية، باستخدام ما يصل إلى 40 جيجابايت من الذاكرة العشوائية. ضع في اعتبارك أن الأداء قد يختلف باختلاف جهازك وتعقيد التلميحات.
لا تتردد في تجربة معلمات مختلفة لتحقيق أفضل توازن بين السرعة وجودة الصورة لاحتياجاتك. مع استمرار تطور نماذج الذكاء الاصطناعي والأجهزة، هناك نتائج أكثر إثارة في الأفق. نتمنا لكم تجربة مولد صور ممتعة!