GPT
C

commitpack

קוד פתוח

bigcodemit2023-01-17

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

  • 14,742הורדות בחודש
  • 79לייקים

מה זה

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

הנתונים נאספו ממאגרי גיטהאב עם רישיונות פתוחים בלבד, כמו mit, apache-2.0 ו־bsd. החלוקה הפנימית היא לפי שפות תכנות ופורמטים שונים, עם ייצוג ל־350 שפות שונות, החל מפייתון, ג'אווהסקריפט ו־C, ועד לקובצי מבנה כמו json, xml ו־markdown.

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

מתאים ל

  • אימון מודל לעריכת קוד

    לימוד מודל שפה לבצע שינויים בקובץ קיים בהתבסס על בקשה מילולית של מתכנת.

  • יצירת הודעות קומיט

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

  • מחקר על דפוסי שינוי

    ניתוח סטטיסטי של אופן ביצוע שינויים ותיקוני תוכנה על פני 350 שפות פיתוח שונות.

איפה זה נופל

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

בנוסף, יש חוסר איזון קיצוני בין השפות. בעוד ששפות כמו פייתון וג'אווהסקריפט מחזיקות מיליוני דוגמאות, מאות שפות אחרות מיוצגות על ידי עשרות בודדות של מקרים. כדאי גם לשים לב שחלק גדול מהנפח שייך לקובצי נתונים כמו json ו־xml ולא לקוד תוכנה של ממש, וקיימות דגימות שבהן שדה הרישיון מסומן כ־unknown.

שאלות
נפוצות

האם מותר להשתמש במאגר כדי לאמן מודל מסחרי?

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

כמה מקום אחסון צריך בשביל להוריד אותו?

המאגר שוקל כ־3.71TB בפורמט לא דחוס, עם מעל 57 מיליון רשומות. מומלץ מאוד לא להוריד את כולו בבת אחת, אלא לטעון רק קבצי jsonl ספציפיים לפי שפת התכנות שמעניינת אתכם.

האם הדאטהסט כולל קוד או הערות בעברית?

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

מה ההבדל בין המאגר הזה לבין CommitPackFT מאותו פרויקט?

המאגר הזה מכיל את כל הנתונים הגולמיים ללא סינון איכות של ההודעות. הגרסה שמסתיימת ב־FT עברה סינון ממוקד כדי להשאיר רק הודעות קומיט שנשמעות כמו הוראות ברורות, והיא מתאימה יותר ל־instruction tuning ישיר.

איך טוענים

טעינה מלאה דורשת התמודדות עם נפח של כ־4TB ו־7,645 קבצים בפורמט jsonl, כך שלא מורידים את הכל למחשב האישי בלי תשתית אחסון מתאימה. אין צורך באישור גישה מיוחד, המאגר פתוח לציבור.

אם אתם לא צריכים את כל 350 השפות, מומלץ למשוך רק את התיקייה של השפה הרלוונטית לכם דרך datasets, למשל תיקיית python או c++. השדות העיקריים שתרצו לחלץ לאימון הם old_contents, new_contents והשדה subject, שמשמש בדרך כלל בתור פרומפט ההנחיה.

from datasets import load_dataset

ds = load_dataset("bigcode/commitpack")

הרישיון

המאגר עצמו מופץ תחת רישיון mit, שמתיר שימוש מסחרי, שינוי והפצה, כל עוד שומרים על הודעת זכויות היוצרים. עם זאת, כל דגימה נלקחה ממאגר קוד מקורי עם רישיון משלה, המצוין בשדה הייעודי ברשומה. רוב הרישיונות מתירניים מאוד, אך מאחר שיש גם דגימות תחת רישיונות copyleft כמו agpl-3.0 או רשומות ללא רישיון ידוע, חובה לסנן לפי שדה הרישיון לפני אימון מודל שמיועד למוצר מסחרי סגור.

  • שימוש מסחרי
  • שינוי הקוד
  • הפצה מחדש

הרישיון המלא ב־Hugging Face ↗