מדריך לייצור נתונים סינתטיים

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

הרעיון הגדול

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

מה עובד

לייצר במכוון

  • אתם בוחרים את התשובה (התווית) ואת מה שאמור להשתנות, ואז בוחרים כל אחד מהם במכוון.
  • לתמונות, אתם נותנים למודל צורה שילך לפיה: תנוחה, עומק, או קו מתאר.
  • כל דוגמה מגיעה עם תווית שאתם כבר יודעים שהיא נכונה.
  • אתם יכולים לחזור על זה, להסתכל על זה, ולתקן.
✓ עשו כךאתם בוחרים לכל אחת מ-500 ביקורות הסרטים סנטימנט וז'אנר, בונים את הפרומפט מהם, כך שלכל ביקורת יש התווית שקבעתם.
✕ לא כךאתם חוזרים על פרומפט קבוע אחד ומקווים שיופיע גיוון, ואז מגלים ש-500 הביקורות נראות כמעט זהות.
מה לא עובד

פשוט לבקש ולקוות

  • אתם מבקשים ”כמה דוגמאות של X“ ושומרים כל מה שהמודל מחזיר.
  • אתם מניחים שלומר את התווית הופך אותה לנכונה.
  • אתם מייצרים הכול בבת אחת ולעולם לא מסתכלים על זה.
  • אתם לא יכולים לשחזר את זה, ולא יכולים לתקן את מה שהשתבש.
✓ עשו כךאם אתם מתחילים בבקשה חופשית, התייחסו לזה כבדיקה מהירה, ואז עברו לבחירת התכונות בעצמכם ולבדיקת הפלט.
✕ לא כךאתם מבקשים ”500 ביקורות, חלק טובות וחלק רעות“, שומרים 430 קומדיות חיוביות, וסומכים על תוויות שמעולם לא אימתתם.

שלושה עשר הצעדים

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

שלב 1 · תכננו לפני שאתם מייצרים

1

חפשו קודם נתונים אמיתיים

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

✓ עשו כךאתם צריכים ביקורות על מוצרים, אז אתם מוצאים מאגר ביקורות פתוח ומתייגים אותו מחדש למשימה שלכם.
✕ לא כךאתם מדלגים על החיפוש ומייצרים 10,000 ביקורות מזויפות, כשמאגר ציבורי היה במרחק חיפוש אחד.
2

החליטו מראש על התוויות ועל המגוון

לפני שאתם כותבים prompt כלשהו, דעו בדיוק מה כל דוגמה צריכה ללמד (התווית) ומה צריך להיות שונה מדוגמה לדוגמה.

✓ עשו כךאתם מרשימים תוויות (spam / לא spam), מחליטים שההודעות משתנות באורך ובנימה, ואז בוחרים כל אחת במכוון.
✕ לא כךאתם מבקשים ”קצת spam וקצת הודעות רגילות“ ומקווים שהתערובת תצא מאוזנת.
3

חלקו את המשתנים ל”תשובה“ ול”כל השאר“

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

✓ עשו כךתשובה = סנטימנט. מגוון = סוג מטבח, נימה, אורך. אתם בוחרים אחד מכל אחד, ואז כותבים את ה-prompt לביקורת סביבם.
✕ לא כךכל ביקורת חיובית במקרה עוסקת בפיצה, אז המודל לומד ”פיצה = חיובי“ במקום סנטימנט אמיתי.
4

שנו את הערכים, לא בלוקים קבועים של טקסט

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

✓ עשו כךאתם קובעים סוג מטבח, נימה ואורך לערכים שונים ונותנים למודל לכתוב כל ביקורת מחדש מהם.
✕ לא כךאתם משאירים תבנית אחת ורק מחליפים ”מצוין“ ב”נורא“ ו”פיצה“ ב”סושי“, אז כל הביקורות נקראות אותו דבר.
5

הפכו מילים מעורפלות לרשימת בדיקה

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

✓ עשו כך”קוד של מתחיל“ הופך לשמות משתנים גרועים + חוסר טיפול בשגיאות + בלוקים מועתקים, ואת אלה אתם מבקשים.
✕ לא כךאתם מבקשים ”קוד שכתב מתחיל“ ומקבלים קוד שנראה בסדר, או שגוי באיזושהי דרך אקראית.

שלב 2 · ייצרו בשליטה

6

בדקו את הרעיון ב-ChatGPT לפני שאתם כותבים קוד

נסו את ה-prompt קודם ידנית. תקנו את הניסוח בחלון הצ'אט לפני שאתם עושים אוטומציה כלשהי.

✓ עשו כךאתם מדביקים את ה-prompt ל-ChatGPT, רואים שהפלט לא מדויק, ומתקנים את הניסוח בחמש דקות.
✕ לא כךאתם כותבים 200 שורות של קוד API, מריצים אותן על 5,000 דגימות, ורק אז מבחינים שה-prompt היה שגוי.
7

השתמשו ב-API כדי שזה יהיה ניתן לשחזור

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

✓ עשו כךעבור כל דגימה אתם שומרים שורה אחת: התווית, ה-prompt, המודל, והפלט.
✕ לא כךאתם מייצרים בחלון הצ'אט ומעתיקים את התוצאות, כך שאחר כך אינכם יכולים לשחזר או לעקוב אחרי שום דבר.
8

אמנו מחולל משלכם כשה-prompt לא מספיק

אם מודל כללי אינו מצליח להתאים לתחום או לסגנון הייחודי שלכם, בצעו כוונון עדין (fine-tune) של מודל על דוגמאות אמיתיות כדי שייצר את סוג הנתונים שאתם באמת צריכים. ואז בדקו שהוא לא סתם מעתיק את נתוני האימון שלו.

✓ עשו כךאתם מבצעים כוונון עדין של LLM על 300 פניות תמיכה אמיתיות כדי שיכתוב חדשות באותו סגנון, ואז בודקים על פניות אמיתיות מודל שאומן עליהן.
✕ לא כךאתם מבצעים כוונון עדין על 20 דגימות, והמודל פשוט חוזר עליהן או ממציא פניות לא ריאליסטיות.
9

לתמונות, הכווינו באמצעות אות בקרה

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

✓ עשו כךאתם נותנים שלד תנוחה, כך שכל אדם שנוצר עומד בדיוק בתנוחה שהמשימה שלכם צריכה.
✕ לא כךאתם כותבים רק ”אדם קופץ“ ומקבלים תנוחות אקראיות שאינכם יכולים ליישר עם התוויות שלכם.

שלב 3 · הגדילו בבטחה

10

ייצרו קצת, ואז הסתכלו

ייצרו אצווה קטנה, בדקו אותה, תקנו את הבעיות, ואז ייצרו עוד. לעולם אל תייצרו את הכול בבת אחת.

✓ עשו כךאתם מייצרים 20 דוגמאות, מזהים באג בתיוג, מתקנים אותו, ואז מייצרים את ה-20 הבאות.
✕ לא כךאתם מייצרים 5,000 בבת אחת, ואז מגלים שלכל אחת מהן אותו באג.
11

אתרו באגים על מעטים לפני שמגדילים

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

✓ עשו כךאתם בודקים ש-10 דגימות מכסות כל מחלקה ומתויגות נכון, ואז מגדילים ל-10,000.
✕ לא כךאתם מניחים שזה עובד, מייצרים 10,000, ומחצית מהן מתויגות שגוי.

שלב 4 · בדקו ובחרו

12

הסתכלו על הנתונים במו עיניכם

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

✓ עשו כךאתם קוראים 50 דגימות, מוצאים סתירות, ומתחקים אחריהן עד למילה מבלבלת אחת ב-prompt.
✕ לא כךאתם סוקרים רק את הדוגמאות הכי יפות ומניחים ששאר הדוגמאות טובות בדיוק כמותן.
13

נסו כמה שיטות, שמרו את הטובה ביותר

לעיתים נדירות יש דרך אחת נכונה. נסו כמה גישות ושמרו את זו שנותנת את הנתונים הטובים ביותר במאמץ הנמוך ביותר.

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