Skip to main content

अवलोकन

LoRA (Low-Rank Adaptation) एक फाइन-ट्यूनिंग तकनीक है जो उदाहरण इमेजेस के एक छोटे सेट का उपयोग करके एक AI मॉडल को एक नई विज़ुअल स्टाइल सिखाती है। यह एक मौजूदा मॉडल में नए “स्टाइल वेट्स” इंजेक्ट करके काम करती है, जिससे प्रशिक्षण तेज़ और कुशल दोनों बनता है। यह गाइड पूर्ण वर्कफ़्लो के बारे में बताती है:

प्रशिक्षण इमेजेस तैयार करें

उच्च गुणवत्ता वाली इमेजेस को क्यूरेट और अपलोड करें जो आपकी इच्छित स्टाइल का प्रतिनिधित्व करती हैं

प्रशिक्षण जॉब सबमिट करें

अपने इमेज URL और कॉन्फ़िगरेशन के साथ /styles/train पर एक POST अनुरोध भेजें

प्रगति की निगरानी करें

लौटाए गए job_id का उपयोग करके अपने प्रशिक्षण जॉब स्टेटस को ट्रैक करें

अपनी स्टाइल के साथ जनरेट करें

इमेज जनरेशन में अपनी प्रशिक्षित स्टाइल लागू करें

प्रशिक्षण इमेजेस तैयार करें

अपने डेटासेट को क्यूरेट करना

आपकी प्रशिक्षण इमेजेस की गुणवत्ता सीधे परिणामों को प्रभावित करती है। विभिन्न प्रशिक्षण प्रकारों की अलग-अलग आवश्यकताएँ होती हैं:
प्रकारउपयोग केसटिप्स
Styleकलात्मक स्टाइल, विज़ुअल एस्थेटिक्सविभिन्न विषयों में सुसंगत स्टाइल
Characterव्यक्तिगत समानता, सुसंगत पात्रविविध मुद्राएँ, अभिव्यक्तियाँ, लाइटिंग
Objectविशिष्ट वस्तुएँ, उत्पादकई कोण, सुसंगत ऑब्जेक्ट

कितनी इमेजेस?

गुणवत्ता मात्रा से कहीं अधिक मायने रखती है। शानदार इमेजेस का एक छोटा सेट औसत दर्जे की इमेजेस के बड़े सेट से बेहतर प्रदर्शन करेगा।
डेटासेट आकारमार्गदर्शन
5 इमेजेसन्यूनतम व्यवहार्य। सरल, सुसंगत स्टाइल्स के लिए काम कर सकता है
10-30 इमेजेसअनुशंसित। गुणवत्ता और कवरेज का सर्वोत्तम संतुलन
50+ इमेजेसजब तक स्टाइल में उच्च विविधता न हो, घटता हुआ रिटर्न
गुणवत्ता > मात्रा15 उच्च-गुणवत्ता वाली इमेजेस 50 निम्न-गुणवत्ता वाली इमेजेस से बेहतर परिणाम देंगी। प्राथमिकता दें:
  • उच्च रिज़ॉल्यूशन (न्यूनतम 1024x1024)
  • सभी इमेजेस में सुसंगत स्टाइल
  • कोई वॉटरमार्क, टेक्स्ट ओवरले, या कंप्रेशन आर्टिफैक्ट्स नहीं
  • स्टाइल कोहेरेंस बनाए रखते हुए विविध विषय
उदाहरण डेटासेट्स
  • कैरेक्टर प्रशिक्षण: विविध मुद्राओं, अभिव्यक्तियों, और लाइटिंग स्थितियों वाले किसी व्यक्ति की तस्वीरें। इमेजेस में अन्य लोगों को शामिल करने से बचें।
  • स्टाइल प्रशिक्षण: एक सुसंगत स्टाइल में कलाकृतियों का संग्रह। उदाहरण के लिए, The Metropolitan Museum of Art Ukiyo-E Dataset एक कलात्मक स्टाइल के प्रशिक्षण के लिए आदर्श जापानी वुडब्लॉक प्रिंट्स प्रदान करता है।

इमेजेस अपलोड करें

प्रशिक्षण से पहले, होस्ट किए गए URL प्राप्त करने के लिए अपनी इमेजेस अपलोड करें। /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 मानों को सहेजें—आप इन्हें प्रशिक्षण एंडपॉइंट पर पास करेंगे।

अपनी स्टाइल प्रशिक्षित करें

बुनियादी प्रशिक्षण उदाहरण

प्रशिक्षण शुरू करने के लिए अपने इमेज 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
प्रशिक्षण के लिए इमेज URL की सरणी। बेहतर परिणामों के लिए अधिक इमेजेस शामिल करें।

वैकल्पिक पैरामीटर

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