/ יצירת תמונות בינה מלאכותית / תיקון שגיאות זיכרון לא מספיק באימון Flux LoRA ב-RTX 4090
יצירת תמונות בינה מלאכותית 12 דקות קריאה

תיקון שגיאות זיכרון לא מספיק באימון Flux LoRA ב-RTX 4090

פתרון שגיאות OOM באימון Flux LoRAs ב-RTX 4090 עם gradient checkpointing, אופטימיזציית גודל batch וטכניקות ניהול זיכרון

תיקון שגיאות זיכרון לא מספיק באימון Flux LoRA ב-RTX 4090 - Complete יצירת תמונות בינה מלאכותית guide and tutorial

יש לך RTX 4090 עם 24GB של VRAM, לכאורה מספיק לאימון Flux מקומי, אבל כל ניסיון קורס עם שגיאות CUDA out of memory. האימון מתחיל בסדר, אולי רץ כמה צעדים, ואז נכשל. ניסית להקטין את גודל ה-batch אבל זה עדיין קורס. מה צורך את כל הזיכרון הזה?

תשובה מהירה: אימון Flux LoRA OOM ב-RTX 4090 קורה כי הארכיטקטורה הגדולה של Flux דורשת 30-40GB VRAM בהגדרות אימון ברירת מחדל. תקן זאת על ידי הפעלת gradient checkpointing להחליף חישוב בזיכרון, הקטנת גודל batch ל-1, שימוש ברזולוציית אימון 512x512 במקום 1024x1024, הפעלת mixed precision עם FP16 או BF16, ושימוש במימושי attention יעילי זיכרון. הגדרות אלו מאפשרות אימון מלא על 24GB תוך הפקת LoRAs איכותיים.

נקודות מפתח:
  • Gradient checkpointing הכרחי לאימון Flux על כרטיסי 24GB
  • אימון ב-512x512 משתמש ב-75% פחות זיכרון מ-1024x1024
  • גודל batch של 1 עם צבירת gradients מספק אימון יציב
  • Attention יעיל זיכרון מחליף attention סטנדרטי לחיסכון משמעותי
  • בחירת האופטימייזר משפיעה על הזיכרון מכיוון ש-Adam 8-bit חוסך 50% מזיכרון מצב האופטימייזר

ה-RTX 4090 הוא כרטיס מצוין לאימון Flux LoRA כשהוא מוגדר נכון. הבעיה היא שתצורות אימון ברירת מחדל מניחות יותר VRAM מ-24GB. עם ההגדרות הנכונות, אתה יכול לאמן Flux LoRAs איכותיים ביעילות. בואו נגדיר את ההתקנה שלך לאימון יציב.

למה אימון Flux צריך כל כך הרבה VRAM?

הבנה של מה צורך זיכרון במהלך האימון עוזרת לך לייעל ביעילות.

גודל המודל

המודל הבסיסי של Flux גדול משמעותית מ-SDXL או SD 1.5. משקלי המודל בדיוק מלא לבדם צורכים כ-23GB. זה כבר כל ה-VRAM של ה-4090 שלך לפני שהאימון בכלל מתחיל.

במהלך האימון, אתה צריך זיכרון למודל, ל-gradients, למצבי האופטימייזר ולהפעלות. כל אחד מאלה יכול להתקרב לגודל המודל עצמו.

עבור אימון LoRA ספציפית, אתה מקפיא את המודל הבסיסי ומאמן רק שכבות adapter קטנות. זה עוזר משמעותית אבל לא מבטל את לחץ הזיכרון מהפעלות ו-gradients שזורמים דרך המודל המלא.

זיכרון הפעלות

במהלך המעבר קדימה, הפעלות ביניים נשמרות לשימוש במהלך המעבר אחורה. הפעלות אלו גדלות עם גודל ה-batch והרזולוציה.

ברזולוציה 1024x1024, זיכרון ההפעלות יכול לעלות על גודל המודל. batch אימון בודד עשוי לדרוש 15-20GB רק להפעלות.

זו הסיבה שהאימון קורס אחרי כמה צעדים. הצעד הראשון אולי מתאים, אבל פיצול זיכרון ומצב מצטבר גורמים לצעדים הבאים להיכשל.

מצב האופטימייזר

אופטימייזרים כמו Adam שומרים שני ערכי momentum לכל פרמטר שניתן לאימון. זה מכפיל את הזיכרון הנדרש לפרמטרים שמאומנים.

עבור fine-tuning מלא, זיכרון מצב האופטימייזר שווה ל-2 כפול גודל המודל. לאימון LoRA יש מצבי אופטימייזר קטנים יותר מכיוון שפחות פרמטרים מאומנים, אבל זה עדיין משמעותי.

זיכרון gradients

Gradients לכל פרמטר שניתן לאימון צריכים אחסון במהלך המעבר אחורה. זה מוסיף עוד עותק מלא של גודל הפרמטרים שניתנים לאימון לדרישות הזיכרון.

בשילוב עם מודל, הפעלות ומצב אופטימייזר, דרישת הזיכרון הכוללת מגיעה בקלות ל-40-50GB עבור תצורות אימון Flux ברירת מחדל.

איך מגדירים אימון ל-24GB VRAM?

הגדרות אלו מאפשרות אימון Flux LoRA יציב ב-RTX 4090.

הפעלת gradient checkpointing

Gradient checkpointing היא האופטימיזציה המשפיעה ביותר על הזיכרון. היא מפחיתה זיכרון הפעלות ב-60-70% במחיר של 20-30% יותר זמן חישוב.

במקום לשמור את כל ההפעלות במהלך המעבר קדימה, checkpointing זורק את רובן ומחשב אותן מחדש במהלך המעבר אחורה. שימוש הזיכרון הופך כמעט קבוע ללא קשר לעומק המודל.

ב-Kohya SS, הפעל gradient checkpointing בתצורת האימון. האפשרות היא בדרך כלל checkbox פשוט או פרמטר בוליאני.

בסקריפטי אימון מותאמים אישית המשתמשים ב-diffusers, קרא ל-model.enable_gradient_checkpointing() לפני תחילת האימון.

האימון לוקח יותר זמן עם checkpointing מופעל אבל בעצם מסתיים במקום לקרוס. הפשרה בזמן שווה את זה.

הגדרת גודל batch ל-1

גודל ה-batch מכפיל ישירות את זיכרון ההפעלות. גודל batch של 4 משתמש בערך ב-4 כפול זיכרון ההפעלות של גודל batch 1.

הגדר את גודל ה-batch שלך ל-1. השתמש בצבירת gradients לסימולציה של גדלי batch אפקטיביים גדולים יותר ללא עלות הזיכרון.

לדוגמה, גודל batch 1 עם 4 צעדי צבירת gradients נותן גודל batch אפקטיבי של 4 תוך שמירה על הפעלות של דגימה אחת בלבד בזיכרון.

צבירת gradients צוברת gradients על פני מספר מעברים קדימה לפני עדכון משקלים. שימוש הזיכרון נשאר קבוע בגודל batch 1 בעוד דינמיקת האימון מתקרבת ל-batches גדולים יותר.

הפחתת רזולוציית אימון

לרזולוציה יש השפעה ריבועית על הזיכרון. הכפלת הרזולוציה מרבעת את זיכרון ההפעלות.

אמן ב-512x512 במקום 1024x1024. זה מפחית את זיכרון ההפעלות בערך ב-75%.

אתה עשוי לחשוש שאימון ב-512x512 מייצר תוצאות גרועות יותר מרזולוציה מקורית. בפועל, LoRAs שאומנו ברזולוציה נמוכה יותר מועברים היטב להסקה ברזולוציה גבוהה יותר. אלמנטים סגנוניים ומושגים שאתה מאמן עדיין מופיעים ביצירה 1024x1024.

אם אתה צריך אימון ברזולוציה גבוהה יותר למקרי שימוש ספציפיים, 768x768 לפעמים אפשרי עם אופטימיזציות אגרסיביות אחרות. בדוק בזהירות ונטר את הזיכרון.

שימוש באימון mixed precision

Mixed precision משתמש ב-FP16 או BF16 לרוב הפעולות תוך שמירה על ערכים קריטיים ב-FP32.

BF16 מומלץ ל-GPUs של Ampere וחדשים יותר. הוא מטפל ב-gradients טוב יותר מ-FP16 בגלל טווח דינמי גדול יותר.

הפעל mixed precision בתצורת האימון שלך. ב-Kohya SS, בחר BF16 מהתפריט הנפתח של precision. בסקריפטים מותאמים אישית, השתמש במנהל הקשר autocast של PyTorch.

Mixed precision מפחית בערך בחצי את הזיכרון למשקלי מודל והפעלות. בשילוב עם אופטימיזציות אחרות, זה הכרחי לאימון 24GB.

הפעלת attention יעיל זיכרון

מימושי attention סטנדרטיים מקצים tensors ביניים גדולים. וריאנטים יעילי זיכרון כמו xFormers או Flash Attention מעבדים attention בחלקים.

xFormers עובד היטב לאימון ונתמך באופן נרחב. התקן אותו בנפרד והפעל אותו בתצורת האימון שלך.

זרימות עבודה ComfyUI בחינם

מצא זרימות עבודה ComfyUI חינמיות וקוד פתוח לטכניקות במאמר זה. קוד פתוח הוא חזק.

100% בחינם רישיון MIT מוכן לייצור תן כוכב ונסה

Flash Attention מספק ביצועים טובים יותר ב-GPUs אחרונים. בדוק אם מסגרת האימון שלך תומכת בו.

Attention יעיל זיכרון יכול להפחית שימוש בזיכרון attention ב-80% או יותר. עבור מודלים גדולים כמו Flux, זה מתורגם לכמה GB חסכון.

שימוש באופטימייזר 8-bit

אופטימייזר Adam סטנדרטי שומר שני ערכי FP32 לכל פרמטר. Adam 8-bit מקוונטז אותם ל-INT8, חותך את זיכרון האופטימייזר בחצי.

התקן את ספריית bitsandbytes והגדר Adam 8-bit בהגדרת האימון שלך. Kohya SS תומך בזה ישירות. סקריפטים מותאמים אישית צריכים לייבא את האופטימייזר 8-bit מ-bitsandbytes.

ההשפעה על האיכות מינימלית. Adam 8-bit מתכנס באופן דומה לדיוק מלא ברוב המקרים.

אילו הגדרות עובדות הכי טוב ל-Kohya SS?

Kohya SS היא כלי אימון Flux LoRA הפופולרי ביותר. הנה תצורות ספציפיות שעובדות.

תצורה מומלצת

השתמש בהגדרות אלו כנקודת מוצא לאימון Flux LoRA ב-RTX 4090.

רזולוציה: 512,512 גודל batch: 1 צעדי צבירת gradients: 4 Mixed precision: bf16 Gradient checkpointing: מופעל xFormers: מופעל אופטימייזר: AdamW8bit דירוג רשת: 16-32 אלפא רשת: זהה לדירוג או חצי קצב למידה: 1e-4 צעדי אימון: 1000-2000 לדמויות, 2000-4000 לסגנונות

תצורה זו משתמשת בערך ב-20GB VRAM, משאירה מרווח ליציבות.

התאמה לסוגי אימון שונים

LoRAs של דמויות יכולים להשתמש בדירוג נמוך יותר סביב 16 ופחות צעדים סביב 1000. תכונות דמויות פשוטות יחסית ללכידה.

LoRAs של סגנון נהנים מדירוג גבוה יותר סביב 32-64 ויותר צעדי אימון סביב 3000-4000. סגנונות אמנותיים יש להם יותר שונות ללמוד.

LoRAs של מושג לאובייקטים או תנוחות ספציפיות משתנים מאוד. התחל עם הגדרות דמות והתאם על סמך תוצאות.

דירוגים גבוהים יותר צריכים יותר VRAM. אם אתה דוחף דירוג ל-64 או יותר, נטר את השימוש בזיכרון במהלך האימון. ייתכן שתצטרך להפחית את הרזולוציה ל-448x448.

תצורת תיאורים

תיאורים טובים משפרים את איכות האימון באופן דרמטי. Flux מגיב היטב לתיאורים בשפה טבעית.

השתמש ב-BLIP או כלים דומים ליצירת תיאורים ראשוניים, ואז שפר אותם ידנית. הסר תיאורים לא מדויקים והוסף את מילת ההפעלה שלך.

רוצה לדלג על המורכבות? Apatero מספק לך תוצאות AI מקצועיות מיד ללא הגדרות טכניות.

ללא הגדרה אותה איכות התחל ב-30 שניות נסה Apatero בחינם
לא נדרש כרטיס אשראי

תיאורים ארוכים יותר בדרך כלל עובדים טוב יותר ל-Flux מאשר ל-SD 1.5. כלול פרטים רלוונטיים על תוכן התמונה מעבר לנושא.

הימנע מתיאורים חוזרים על פני מערך הנתונים שלך. שנה את השפה תוך שמירה על מילת ההפעלה עקבית.

יצירת תמונות דגימה

הפעל יצירת דגימות במהלך האימון לניטור התקדמות. הגדר תדירות דגימה לכל 100-200 צעדים.

יצירת דגימות מוסיפה עומס זיכרון. אם אתה מגיע ל-OOM במהלך הדגימה, הגדל צבירת gradients או הפחת תדירות דגימות.

דגימות אומרות לך מתי האימון הולך טוב ומתי עשית overfitting. עצור את האימון כשהדגימות נראות טוב אבל עדיין לא התחילו להידרדר.

איך פותרים שגיאות OOM מתמשכות?

אם קריסות ממשיכות אחרי אופטימיזציה, חקור גורמים נוספים אלה.

פיצול VRAM

מקצה הזיכרון של PyTorch יכול לפצל VRAM לאורך זמן, גורם לכשלים גם כשסך הזיכרון הפנוי נראה מספק.

הרץ אימון עם משתנה הסביבה PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:128. זה משנה את אסטרטגיית ההקצאה להפחתת פיצול.

התחלה טרייה ללא פעולות GPU קודמות עוזרת. הפעל מחדש את המערכת שלך או לפחות סיים את כל תהליכי Python לפני האימון.

ניטור שימוש בזיכרון

צפה בשימוש VRAM במהלך האימון כדי לזהות בדיוק מתי OOM מתרחש.

הרץ nvidia-smi -l 1 בטרמינל נפרד כדי לראות שימוש בזיכרון מתעדכן כל שנייה.

שים לב לשימוש השיא ממש לפני הקריסה. זה אומר לך כמה אתה צריך להפחית.

אם הקריסה קורית מיד, תצורת טעינת המודל שלך שגויה. אם הקריסה קורית אחרי כמה צעדים, הצטברות הפעלות או פיצול הוא הבעיה.

בעיות מערך נתונים

תמונות ברזולוציה גבוהה במיוחד במערך הנתונים שלך יכולות לגרום ל-OOM כשנטענות לאימון.

עבד מראש את מערך הנתונים שלך כדי לוודא שכל התמונות ברזולוציית האימון או מתחת. אין תועלת בטעינת תמונות 4K כשמאמנים ב-512x512.

הצטרף ל-115 חברי קורס אחרים

צור את המשפיען הראשון שלך עם AI בריאליזם מלא ב-51 שיעורים

צור משפיענים AI ריאליסטיים במיוחד עם פרטי עור אמיתיים, סלפי מקצועיים וסצנות מורכבות. קבל שני קורסים מלאים בחבילה אחת. ComfyUI Foundation לשליטה בטכנולוגיה, ו-Fanvue Creator Academy ללמוד כיצד לשווק את עצמך כיוצר AI.

התמחור המוקדם מסתיים בעוד:
--
ימים
:
--
שעות
:
--
דקות
:
--
שניות
51 שיעורים • 2 קורסים מלאים
תשלום חד-פעמי
עדכונים לכל החיים
חסוך $200 - המחיר עולה ל-$399 לתמיד
הנחת רוכש מוקדם לסטודנטים הראשונים שלנו. אנחנו כל הזמן מוסיפים יותר ערך, אבל אתה נועל $199 לתמיד.
מתאים למתחילים
מוכן לייצור
תמיד מעודכן

ודא שיחסי הגובה-רוחב סבירים. תמונות רחבות או גבוהות מאוד עשויות לדרוש יותר זיכרון במהלך העיבוד גם באותו מספר פיקסלים כולל.

תהליכים אחרים משתמשים ב-VRAM

בדוק יישומים אחרים הצורכים זיכרון GPU לפני האימון.

סגור דפדפני אינטרנט, Discord ויישומים אחרים עם האצת GPU. אפילו כמה מאות MB שנצרכים במקום אחר יכולים לדחוף אותך מעבר לגבול.

תהליכי Python מרובים עשויים להחזיק VRAM מריצות קודמות שנכשלו. הפעל מחדש את מפרש Python או את כל המערכת שלך למצב נקי.

באגים במסגרת האימון

לפעמים, באגים ב-Kohya SS או כלי אימון אחרים גורמים לדליפות זיכרון.

עדכן לגרסה העדכנית ביותר של כלי האימון שלך. תיקונים הקשורים לזיכרון נפוצים בעדכונים.

בדוק את ה-issues ב-GitHub של הכלי לדיווחים שתואמים את הסימפטומים שלך. אחרים אולי מצאו עקיפות או תיקונים.

למשתמשים שרוצים לאמן LoRAs ללא ניהול מגבלות טכניות אלה, Apatero.com מציעה אימון מבוסס ענן עם חומרה ברמה מקצועית. אתה מגדיר את עבודת האימון ומערך הנתונים שלך בעוד הפלטפורמה מטפלת בניהול זיכרון ואופטימיזציה באופן אוטומטי.

מהן גישות אימון חלופיות?

אם אימון ב-4090 נשאר בעייתי, שקול חלופות אלה.

אימון בענן

מופעי ענן עם 48GB+ VRAM מבטלים מגבלות זיכרון לחלוטין.

RunPod, Vast.ai ו-Lambda Labs מציעים מופעי GPU לפי שעה. מופע A100 80GB מאמן Flux LoRAs בנוחות ברזולוציה מלאה.

העלות לריצת אימון LoRA טיפוסית היא $5-15 בהתאם לספק וסוג GPU. זה סביר לצרכי אימון מזדמנים.

העלה את מערך הנתונים שלך, הרץ אימון, הורד את ה-LoRA. התהליך לוקח 1-2 שעות בסך הכל לרוב הפרויקטים.

אימון בדיוק נמוך יותר

אימון FP8 ניסיוני מפחית זיכרון עוד יותר מ-BF16. כמה כלי קהילה תומכים בזה.

אימון FP8 פחות מוכח לאיכות מ-BF16. בדוק תוצאות בזהירות לפני אימוץ לפרויקטים חשובים.

חיסכון בזיכרון של 30-40% נוספים יכול לגרום לתצורות שהיו בלתי אפשריות בעבר לעבוד.

וריאנטים קטנים יותר של LoRA

LoKr, LoHa והתאמות דירוג נמוך דומות משתמשים בפחות זיכרון מ-LoRA סטנדרטי.

וריאנטים אלה עובדים היטב לכמה יעדי אימון אבל עשויים לפגוע בביצועים עבור סגנונות או מושגים מורכבים.

נסה עם חלופות אם תצורת LoRA סטנדרטית נשארת בעייתית למרות האופטימיזציה.

שאלות נפוצות

למה האימון קורס אחרי בדיוק צעד 1 כל פעם?

זה מצביע על סף זיכרון ספציפי שנחצה. המעבר קדימה מתאים אבל הוספת gradients במהלך המעבר אחורה חורגת מ-VRAM. הפעל gradient checkpointing והפחת רזולוציה יחד במקום בהדרגה.

האם אני יכול לאמן ב-1024x1024 ב-RTX 4090?

תיאורטית אפשרי עם אופטימיזציה קיצונית כולל דירוג מינימלי, checkpointing כבד ו-8-bit לכל דבר. מעשית, התוצאות ב-512x512 טובות מספיק שהמאבק בזיכרון לא שווה את זה. אמן ב-512x512 וצור ב-1024x1024.

האם גודל batch 1 מייצר LoRAs גרועים יותר מ-batches גדולים יותר?

לא באופן משמעותי. צבירת gradients מספקת דינמיקת אימון שווה ערך. יש שטוענים ש-batches קטנים מאוד יש קצת יותר רעש אבל gradients מצטברים מחליקים את זה. הבדל האיכות מינימלי בהשוואה לגורמים אחרים.

איך אני יודע אם ה-LoRA שלי מתאמן נכון?

תמונות דגימה במהלך האימון מראות התקדמות. אתה צריך לראות את מילת ההפעלה שלך משפיעה על היצירות אחרי 200-400 צעדים. העברת סגנון מלאה בדרך כלל מופיעה ב-800-1000 צעדים. אם הדגימות לא משתנות או מיד מתדרדרות, התאם את קצב הלמידה.

למה שימוש VRAM עולה בהדרגה במהלך האימון?

פיצול זיכרון או דליפות גורמים לעלייה הדרגתית. המקצה יוצר שברים קטנים שלא ניתן לשמש בהם שוב. הגדר את משתנה הסביבה max_split_size_mb וודא שאין דליפות זיכרון בקוד מותאם אישית.

האם עלי להשתמש ב-xFormers או ב-attention מקורי של PyTorch?

xFormers מספק יעילות זיכרון טובה יותר לרוב תרחישי האימון. Attention מקורי לפעמים עובד טוב יותר לארכיטקטורות ספציפיות. התחל עם xFormers והחלף רק אם אתה נתקל בבעיות.

באיזה דירוג רשת עלי להשתמש ל-Flux LoRAs?

התחל עם 16 לדמויות ומושגים פשוטים, 32 לסגנונות ונושאים מורכבים. דירוגים גבוהים יותר לוכדים יותר פרטים אבל צריכים יותר זיכרון ויותר נתוני אימון. בדוק דירוגים נמוכים יותר קודם מכיוון שהם לעתים קרובות עובדים היטב.

כמה תמונות אימון אני צריך?

לדמויות, 10-20 תמונות טובות עובדות היטב. לסגנונות, 50-200 תמונות מספקות כיסוי טוב יותר. איכות חשובה יותר מכמות. תמונות עם תיאורים טובים ומגוונות מנצחות מאות צילומים דומים.

האם אני יכול לחדש אימון אחרי קריסת OOM?

אם הפעלת checkpointing בתצורת האימון שלך, כן. Kohya SS שומרת התקדמות מעת לעת. חדש מה-checkpoint האחרון אחרי תיקון הגדרות הזיכרון.

האם יש דרך לחזות אם התצורה שלי תגרום ל-OOM לפני ההתחלה?

הערכה גסה מבוססת על גודל מודל, גודל batch, רזולוציה ואופטימיזציות. כלים כמו accelerate estimate-memory מספקים הערכות. אבל זיכרון בפועל משתנה עם פרטי מימוש, אז תמיד התחל שמרני.

מסקנה וזרימת עבודה מומלצת

אימון Flux LoRA ב-RTX 4090 דורש ניהול זיכרון זהיר אבל מייצר תוצאות מצוינות כשמוגדר נכון. ההגדרות המפתח הן gradient checkpointing, גודל batch 1 עם צבירה, רזולוציה 512x512 ואימון mixed precision.

התחל עם התצורה השמרנית שסופקה במדריך זה. הרץ בדיקה קצרה של 100-200 צעדים כדי לאמת יציבות לפני התחייבות לריצות אימון מלאות.

נטר את הדגימות שלך במהלך האימון. עצור כשה-LoRA לוכד את מושג היעד שלך לפני שהאיכות מתחילה להידרדר מאימון יתר.

אם אתה נאבק בעקביות עם מגבלות זיכרון או רוצה הגדרות איכות גבוהות יותר ממה ש-24GB מאפשר, אימון בענן מציע חלופה מעשית. שירותים כמו Apatero.com עושים את זה נגיש ללא ניהול תשתית ענן בעצמך.

ה-RTX 4090 שלך היא חומרה מסוגלת לאימון LoRA מקומי. עם תצורה נכונה, אתה יכול לאמן Flux LoRAs מותאמים אישית לדמויות, סגנונות ומושגים הספציפיים שלך תוך שמירה על הכל במחשב שלך.

מוכן ליצור את המשפיען AI שלך?

הצטרף ל-115 סטודנטים שמשתלטים על ComfyUI ושיווק משפיענים AI בקורס המלא שלנו בן 51 שיעורים.

התמחור המוקדם מסתיים בעוד:
--
ימים
:
--
שעות
:
--
דקות
:
--
שניות
תפוס את מקומך - $199
חסוך $200 - המחיר עולה ל-$399 לתמיד