انتقل إلى المحتوى الرئيسي

الوحدة 7 — LoRA والانعكاس النصّيّ لتعلّم أسلوب

كتالوج علامة الأثاث بدأ يتشكّل، لكن مشكلة تظهر: الصور تفتقر إلى «هويّة العلامة». كلّ كرسيّ جميل تقنيًّا، لكن يمكن أن يكون لأيّ علامة. المدير الفنّيّ لديه 30 صورة مرجعيّة سابقة تُظهر «أسلوب البيت»: ألوان دافئة، إضاءة جانبيّة ناعمة، خلفيّة كتّانيّة، ظلّ خفيف. كيف نُدخل هذا الأسلوب في كلّ توليداتنا القادمة، دون كتابته في تعليمة عملاقة في كلّ مرّة؟ الحلّ: LoRA.

LoRA في جملة تقنيّة

LoRA (Low-Rank Adaptation) تقنيّة تعديل خفيف لنموذج كبير. بدل تعديل الـ2.6 مليار معلمة في U-Net (كلفة عملاقة، ضرورة GPU احترافيّ)، نُضيف طبقات صغيرة (بمعلمات بضعة ملايين) تتعلّم فرقًا فقط. ملفّ LoRA النهائيّ 20 إلى 200 ميغا، يُحمَّل ويُفكّ فوق النموذج الأساسيّ عند التوليد.

النتيجة العمليّة: يمكنك تدريب LoRA أسلوب على GPU بـ12 غيغا VRAM في 20-40 دقيقة، مقابل ساعات وGPU احترافيّ لضبط كامل. وأهمّ من ذلك: يمكنك امتلاك عشرات ملفّات LoRA (أسلوب علامتك، أسلوب علامة عميل آخر، أسلوب موسميّ)، وتحميل ما يناسب في كلّ توليد.

تحضير مجموعة التدريب

هذا القسم يُقرّر النجاح أو الفشل، وليس عدد الخطوات ولا معدّل التعلّم.

  • العدد: 20-40 صورة كافية لأسلوب. أقلّ من 10 يُنتج LoRA ضعيفًا؛ أكثر من 100 لا يُحسّن كثيرًا ويستغرق أضعاف الوقت.
  • التنوّع: تنوّع في الموضوع (كرسيّ، طاولة، أريكة، إضاءة، غرفة) مع ثبات الأسلوب (نفس نوع الإضاءة، الألوان، الظلّ). التنوّع في الموضوع يمنع فرط التكيّف على شيء واحد؛ ثبات الأسلوب يعلّم النموذج ما يجب استخراجه.
  • الجودة: صور 1024×1024 حادّة. صورة واحدة ضبابيّة تُدخل ضبابيّة في كلّ توليداتك القادمة.
  • العلامات: كلّ صورة تحتاج ملفّ نصّيّ يصفها (chair_01.png + chair_01.txt). العلامات تصف ما هو في الصورة بلا ذكر ما تُريد تعلّمه. مثلًا: «wooden chair, three-quarter view, next to window» ولا تكتب «warm cozy style» لأنّ هذا ما يجب أن يتعلّمه النموذج ضمنيًّا.

الكلمة المُشغِّلة (trigger word)

كلمة نادرة أو مصنوعة تُدرَج في بداية كلّ علامة تدريب، وتصبح المفتاح لاستدعاء الأسلوب لاحقًا. اختيار جيّد: mbrand_style (لا معنى قبل التدريب، فلا يتضارب مع مفهوم موجود). اختيار سيّئ: modern (كلمة مليئة بالمعاني قبل التدريب، سيُخلّط النموذج).

بعد التدريب، أيّ تعليمة تحتوي mbrand_style تفعّل الأسلوب. تعليمة بلا الكلمة تُنتج بلا الأسلوب (وهذا مفيد لأنّ LoRA لا يُخرّب توليداتك الأخرى).

التدريب: الأداة والمعلمات

الأداة الأكثر شيوعًا هي kohya-ss (واجهة رسوميّة أو سكربتات)، وأخرى بديلة diffusers مباشرة. المعلمات المهمّة لـLoRA أسلوب على SDXL:

  • network_dim (rank): 8-32 يكفي لأسلوب. 64+ لأشخاص أو أشياء محدّدة.
  • learning_rate: 1e-4 نقطة انطلاق قياسيّة.
  • train_batch_size: 1-2 على 12 غيغا VRAM.
  • num_epochs: 10-20. أكثر لا يُحسّن، بل يُدخل فرط تكيّف.

الملفّ الناتج mbrand_style.safetensors يوضع في مجلّد LoRA ويُحمَّل قبل التوليد:

pipe.load_lora_weights("./loras", weight_name="mbrand_style.safetensors")

image = pipe(
prompt="mbrand_style, wooden Scandinavian chair, product photography",
cross_attention_kwargs={"scale": 0.8}, # جرعة LoRA
num_inference_steps=30,
).images[0]

جرعة LoRA (scale) بين 0 و1.5. 0.8 مناسبة عادةً. 1.0 كاملة. 1.3+ فرط تطبيق وتكرار عناصر التدريب. 0.5 خفيفة، تلمّح للأسلوب.

الانعكاس النصّيّ: منافس LoRA

Textual Inversion يتعلّم تضمين نصّيّ جديد (متّجه في فضاء CLIP) يمثّل المفهوم/الأسلوب، دون تعديل U-Net. الملفّ الناتج صغير جدًّا (كيلوبايتات) ويُحمَّل كـ«كلمة جديدة» يمكن استعمالها في التعليمة.

مقارنة سريعة:

المعيارLoRATextual Inversion
حجم الملفّ20-200 ميغا5-50 كيلو
قوّة التعلّمعالية، يمكنه تعلّم أسلوب معقّدمتوسّطة، مناسب لمفهوم بسيط
صور تدريب20-405-15
زمن التدريب20-40 دقيقة10-20 دقيقة
قابليّة التركيبعدّة LoRA معًاعدّة تضمينات في نفس التعليمة
مخاطر الفرط تكيّفمتوسّطة إلى عاليةمنخفضة (لا يعدّل U-Net)

الاختيار المهنيّ: LoRA لأسلوب علامة كامل، Textual Inversion لمفهوم محدود (شخصيّة، وجه، شعار). التركيب ممكن: LoRA أسلوب + Textual Inversion شخصيّة، معًا في نفس التوليد.

فرط التكيّف البصريّ: العلامات المُنذِرة

الفشل الأشهر في LoRA. النموذج يتعلّم الصور بذاتها بدل الأسلوب العامّ. علامات مرئيّة:

  • كلّ توليداتك تُظهر نفس الخلفيّة، حتّى حين لا تطلبها.
  • عناصر متكرّرة من صور التدريب تظهر (مصباح، سجّادة، لوحة على الحائط).
  • انخفاض التنوّع البصريّ عبر البذور المختلفة.
  • عجز عن التوليد بأسلوب مختلف حين تُحمّل LoRA (يُلوّث كلّ شيء).

الحلّ: التوقّف المبكّر. تدريب لـ10 epochs، توليد اختبار على 10 تعليمات مختلفة، مقارنة بنسخة 15 epochs و20 epochs. النقطة السعيدة قبل ظهور الفرط، وليست دائمًا آخر epoch.

الخيط الأحمر: LoRA علامة الأثاث

بعد هذه الوحدة، نمتلك:

  • mbrand_style.safetensors: LoRA مُدرَّب على 32 صورة سابقة للعلامة.
  • الكلمة mbrand_style تفعّل الأسلوب في أيّ تعليمة.
  • كلّ توليدات الوحدات القادمة (والقصيرة) تحمل هويّة العلامة بلا كتابة 15 مصطلحًا أسلوبيًّا في كلّ تعليمة.

هذا الاستثمار (يومان: جمع الصور، وضع علامات، تدريب) يوفّر أسابيع من التعديل اليدويّ لاحقًا.

حقّ صور التدريب

LoRA يُعيد إنتاج ما دُرِّب عليه بأشكال ملتوية. تدريب على صور من الإنترنت بلا رخصة يجعل توليداتك مسؤوليّة قانونيّة. سنعود لهذا الموضوع بالتفصيل في الوحدة 10.

الخلاصة

  • LoRA يُضيف طبقات خفيفة (~100 ميغا) فوق نموذج كبير، تُدرَّب على GPU متوسّط في نصف ساعة.
  • مجموعة التدريب 20-40 صورة، متنوّعة الموضوع، ثابتة الأسلوب، بعلامات وصفيّة نظيفة.
  • الكلمة المُشغِّلة كلمة نادرة تفعّل الأسلوب؛ جرعة LoRA بين 0.5 و1.0 هي النطاق السعيد.
  • الانعكاس النصّيّ بديل أخفّ لمفاهيم بسيطة؛ التركيب ممكن (LoRA أسلوب + TI شخصيّة).