Skip to main content

نظرة عامة

LoRA (تكيّف الرتبة المنخفضة) هي تقنية للضبط الدقيق تُعلّم نموذج ذكاء اصطناعي أسلوبًا بصريًا جديدًا باستخدام مجموعة صغيرة من صور المثال. تعمل عن طريق حقن “أوزان أسلوب” جديدة في نموذج موجود، مما يجعل التدريب سريعًا وفعّالًا في آن واحد. يرشدك هذا الدليل عبر سير العمل الكامل:

تحضير صور التدريب

نسّق ورفع صورًا عالية الجودة تُمثّل الأسلوب الذي تريده

إرسال مهمة التدريب

أرسل طلب POST إلى /styles/train مع روابط صورك وتكوينك

مراقبة التقدّم

تتبّع حالة مهمة التدريب باستخدام job_id المُرجَع

التوليد بأسلوبك

طبّق أسلوبك المدرّب على توليد الصور

تحضير صور التدريب

تنسيق مجموعة البيانات لديك

تؤثر جودة صور التدريب مباشرةً على النتائج. تختلف متطلبات أنواع التدريب المختلفة:
النوعحالة الاستخدامنصائح
Styleالأساليب الفنية، الجماليات البصريةأسلوب متسق عبر مواضيع متنوعة
Characterالتشابه الشخصي، الشخصيات المتسقةأوضاع وتعابير وإضاءة متنوعة
Objectعناصر أو منتجات محددةزوايا متعددة، جسم متسق

كم صورة؟

الجودة أهم بكثير من الكمية. مجموعة صغيرة من الصور الممتازة تفوق مجموعة كبيرة من الصور المتوسطة.
حجم مجموعة البياناتإرشادات
5 صورالحد الأدنى العملي. قد تعمل مع أساليب بسيطة ومتسقة
10-30 صورةموصى بها. أفضل توازن بين الجودة والتغطية
50+ صورةعوائد متناقصة ما لم يكن للأسلوب تنوع كبير
الجودة > الكمية15 صورة عالية الجودة ستُنتج نتائج أفضل من 50 صورة منخفضة الجودة. أعطِ الأولوية لـ:
  • الدقة العالية (1024x1024 كحد أدنى)
  • الأسلوب المتسق عبر جميع الصور
  • خالية من العلامات المائية أو النصوص المتراكبة أو تشوّهات الضغط
  • مواضيع متنوعة مع الحفاظ على تماسك الأسلوب
أمثلة على مجموعات البيانات
  • تدريب الشخصيات: صور لشخص بأوضاع وتعابير وظروف إضاءة متنوعة. تجنّب تضمين أشخاص آخرين في الصور.
  • تدريب الأسلوب: مجموعة من الأعمال الفنية بأسلوب متسق. على سبيل المثال، مجموعة بيانات Ukiyo-E من متحف المتروبوليتان للفنون توفر مطبوعات يابانية على الخشب مثالية لتدريب أسلوب فني.

رفع الصور

قبل التدريب، ارفع صورك للحصول على روابط مستضافة. استخدم نقطة النهاية /assets:
import requests
import os
from dotenv import load_dotenv
import mimetypes

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")

image_dir = "training_images"
uploaded_urls = []

for filename in os.listdir(image_dir):
    if filename.lower().endswith(('.jpg', '.jpeg', '.png', '.webp')):
        filepath = os.path.join(image_dir, filename)
        mime_type, _ = mimetypes.guess_type(filepath)

        with open(filepath, 'rb') as f:
            response = requests.post(
                f"{API_BASE}/assets",
                headers={"Authorization": f"Bearer {API_TOKEN}"},
                files={"file": (filename, f, mime_type)},
                data={"description": f"Training image: {filename}"}
            )

        if response.ok:
            data = response.json()
            uploaded_urls.append(data["image_url"])
            print(f"Uploaded: {filename}")
        else:
            print(f"Failed: {filename}")

print(f"\nUploaded {len(uploaded_urls)} images")
احفظ قيم image_url المُرجَعة — ستُمرّرها إلى نقطة نهاية التدريب.

تدريب أسلوبك

مثال أساسي على التدريب

أرسل روابط صورك لبدء التدريب:
import requests
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")

# Training URLs from the upload step
urls = [
    "https://krea.ai/assets/img1.jpg",
    "https://krea.ai/assets/img2.jpg",
    "https://krea.ai/assets/img3.jpg",
    # ... more images
]

response = requests.post(
    f"{API_BASE}/styles/train",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "name": "Ukiyo-E Style",
        "urls": urls,
        "model": "flux_dev",
        "type": "Style",
        "max_train_steps": 500
    }
)

response.raise_for_status()
job = response.json()
print(f"Training started! Job ID: {job['job_id']}")

أنواع التدريب

يعيّن معلم type قيمًا افتراضية ذكية مُحسَّنة لحالة الاستخدام لديك:
النوعالأفضل لـ
Styleالأساليب الفنية، الجماليات البصرية
Characterالتشابه الشخصي، الشخصيات المتسقة
Objectعناصر أو منتجات محددة
Defaultتدريب عام

المعلمات

المعلمات المطلوبة

name
string
required
اسم وصفي لأسلوبك المخصص.مثال: "Ukiyo-E Style"، "Product Photos"
urls
array
required
مصفوفة من روابط الصور للتدريب عليها. أدرج المزيد من الصور للحصول على نتائج أفضل.

المعلمات الاختيارية

model
string
default:"flux_dev"
النموذج الأساسي للتدريب:نماذج الصور:
  • flux_dev - عالي الجودة، متعدد الاستخدامات
  • flux_schnell - نموذج BFL الفوري
  • qwen - نموذج Alibaba
  • z-image - نموذج صور فعّال من Alibaba
  • wan22 - توليد الصور فقط
نماذج الفيديو:
  • wan - نموذج فيديو Alibaba
type
string
default:"Default"
فئة التدريب: Style أو Object أو Character أو Default
trigger_word
string
كلمة مخصصة لتفعيل هذا الأسلوب في النصوص الوصفية. عند عدم تحديدها، يُستخدم اسم الأسلوب.
اختر كلمات تفعيل فريدة لن تظهر في النصوص الوصفية النمطية. استخدم الشرطات السفلية للكلمات المتعددة: ukiyo_style
learning_rate
number
تتحكم في كثافة التدريب. القيم الأعلى تُدرّب أسرع لكن قد تُفرط في التعلّم.النطاق الموصى به: 0.0001 - 0.001
max_train_steps
integer
الحد الأقصى لتكرارات التدريب. النطاق: 1-2000
batch_size
integer
عدد الصور المعالجة في وقت واحد. الدفعات الأكبر = تدريب أسرع لكن ذاكرة أكثر.

ضبط المعلمات المتقدمة

ابدأ بالقيم الافتراضية التي يضبطها حقل type — إنها تعمل جيدًا لمعظم الحالات. اضبطها فقط إذا كنت تواجه مشكلات محددة:
يتحكم في مدى تكيّف النموذج بقوة مع صور التدريب لديك.
القيمةمتى تستخدمها
0.0001 (أقل)مشاكل الإفراط في التعلّم، الأساليب المعقدة، مجموعات البيانات الصغيرة
0.0003 (افتراضي)معظم حالات الاستخدام
0.0005-0.001 (أعلى)تدريب أسرع
علامات تدل على أنك تحتاج إلى الضبط:
  • المخرجات تبدو مطابقة لصور التدريب ← اخفض المعدل
  • تأثير الأسلوب ضعيف بعد التدريب ← ارفع المعدل قليلًا
مدة تدريب النموذج على صورك.
حجم مجموعة البياناتالخطوات الموصى بها
5-10 صور300-500 خطوة
15-30 صورة500-800 خطوة
50+ صورة800-1500 خطوة
علامات تدل على أنك تحتاج إلى الضبط:
  • المخرجات جامدة جدًا، تتجاهل النصوص الوصفية ← قلّل الخطوات
  • تأثير الأسلوب ضعيف ← زد الخطوات
  • الصور المُولّدة تبدو تمامًا مثل بيانات التدريب ← قلّل الخطوات (إفراط في التعلّم)
الضبط التكراريإذا لم تُنتج محاولة التدريب الأولى النتائج التي تريدها:
  1. ابدأ بضبط max_train_steps (الحل الأكثر شيوعًا)
  2. ثم جرّب learning_rate إذا لم تكن الخطوات وحدها كافية

تنسيق الاستجابة

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": "2024-01-15T10:30:00Z"
}

مراقبة تقدّم التدريب

يستغرق التدريب عادةً 5-15 دقيقة. استعلم عن Jobs API للتحقق من الحالة:
import requests
import time
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")
job_id = "your-job-id"

while True:
    response = requests.get(
        f"{API_BASE}/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_TOKEN}"}
    )
    job = response.json()
    status = job["status"]

    print(f"Status: {status}")

    if status == "completed":
        style_id = job["result"]["style_id"]
        print(f"Training complete! Style ID: {style_id}")
        break
    elif status in ["failed", "cancelled"]:
        print(f"Training {status}")
        break

    time.sleep(30)
تمرّ مهام التدريب بهذه الحالات:
  1. queued - في انتظار الطابور
  2. processing - تدريب نشط
  3. completed - انتهى التدريب بنجاح
  4. failed - واجه التدريب خطأ
  5. cancelled - تم إلغاء المهمة يدويًا

استخدام أسلوبك المدرّب

بمجرد اكتمال التدريب، طبّق أسلوبك على توليد الصور باستخدام معلم styles:
ملكية الأسلوب بين التطبيق وواجهة APIتعمل واجهة API وتطبيق Krea على الويب كهويات مستخدم منفصلة داخل مساحة عملك. الأساليب خاصة بالمستخدم الذي أنشأها، لذلك:
  • الأساليب المدرّبة عبر التطبيق غير متاحة عبر واجهة API ما لم تتم مشاركتها
  • الأساليب المدرّبة عبر API غير متاحة في التطبيق ما لم تتم مشاركتها
لمشاركة أسلوب مع مساحة عملك (يعمل في كلا الاتجاهين):
curl -X POST https://api.krea.ai/styles/YOUR_STYLE_ID/share/workspace \
  -H "Authorization: Bearer YOUR_API_TOKEN"
import requests
import time
import os
from dotenv import load_dotenv

load_dotenv()

API_BASE = "https://api.krea.ai"
API_TOKEN = os.getenv("API_TOKEN")
STYLE_ID = "w29t6pvy0"

response = requests.post(
    f"{API_BASE}/generate/image/krea/krea-2/medium",
    headers={
        "Authorization": f"Bearer {API_TOKEN}",
        "Content-Type": "application/json"
    },
    json={
        "prompt": "An abstract, colorful, surreal composition of symmetry and balance. Swirling colors, imagery of trees and coalescing patterns converge. The lantern of light and death. It is as if the world was at once dark, and yet again lit.",
        "aspect_ratio": "1:1",
        "resolution": "1K",
        "styles": [
            {
                "id": STYLE_ID,
                "strength": 0.95
            }
        ]
    }
)

job = response.json()
job_id = job["job_id"]
print(f"Generation started! Job ID: {job_id}")

# Poll for completion
while True:
    check = requests.get(
        f"{API_BASE}/jobs/{job_id}",
        headers={"Authorization": f"Bearer {API_TOKEN}"}
    )
    status_data = check.json()

    if status_data["status"] == "completed":
        image_url = status_data["result"]["urls"][0]
        print(f"Image ready: {image_url}")
        break
    elif status_data["status"] == "failed":
        print("Generation failed")
        break

    time.sleep(2)

قوة الأسلوب

يتحكم معلم strength (0.0-1.0) في مدى قوة تطبيق أسلوبك:
القوةالتأثير
0.5-0.7تأثير خفيف، يحافظ على مرونة النص الوصفي
0.8-0.9تطبيق أسلوب قوي، نقطة انطلاق موصى بها
0.95-1.0التزام أقصى بالأسلوب، قد يُقلل من الاستجابة للنص الوصفي
ابدأ بقوة 0.8 واضبط بناءً على النتائج. القيم الأقل تُتيح حرية إبداعية أكبر؛ والقيم الأعلى تفرض التزامًا أكثر صرامة بالأسلوب.

دمج أساليب متعددة

طبّق أساليب متعددة عن طريق إضافتها إلى مصفوفة styles:
"styles": [
    {"id": "style-id-1", "strength": 0.6},
    {"id": "style-id-2", "strength": 0.4}
]

أفضل الممارسات

  • استخدم أكبر عدد ممكن من الصور عالية الجودة للحصول على نتائج مثالية
  • تأكّد من تناسق الأسلوب عبر جميع صور التدريب
  • تنوّع في المواضيع مع الحفاظ على تماسك الأسلوب
  • تجنّب العلامات المائية أو النصوص المتراكبة أو التشوّهات
  • استخدم صورًا بدقة 1024x1024 على الأقل
  • ابدأ بالمعلمات الافتراضية باستخدام حقل type
  • للأساليب: 500-1000 خطوة عادةً كافية
  • معدلات التعلّم الأقل (0.0001-0.0003) تمنع الإفراط في التعلّم
  • زد الخطوات إذا لم يكن الأسلوب قويًا بما يكفي
  • قلّل الخطوات إذا كانت المخرجات جامدة جدًا
  • استخدم كلمة التفعيل نفسها إذا كنت تخطط لدمج أساليب متعددة
  • يتم حقن كلمات التفعيل تلقائيًا في النص الوصفي إذا أدرجت الأسلوب
  • تجنّب الكلمات الشائعة التي تظهر في النصوص الوصفية النمطية
  • استخدم الشرطات السفلية للكلمات المتعددة: my_custom_style