GPT
G

graphcodebert-base

קוד פתוח

microsoftרישיון לא דווח2022-03-02

  • transformers
  • pytorch
  • tf
  • jax
  • roberta

microsoft עומדים גם מאחורי Sho, ויש עליו סקירה כאן.

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

  • 514טוקנים בהקשר
  • 1.5 GBמשקל הקבצים
  • 85,856הורדות בחודש
  • 92לייקים

מה זה

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

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

מתאים ל

  • השלמת משתנים בקוד

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

  • חיפוש סמנטי במאגרי קוד

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

  • ניתוח תלויות מקומי

    בדיקת עקביות של שמות משתנים וזרימת ערכים בתוך קטעי קוד קצרים יחסית.

איפה זה נופל

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

שאלות
נפוצות

האם הוא יכול לכתוב לי פונקציה שלמה מאפס כמו מודלים מודרניים?

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

כמה שטח זיכרון ומעבד אני צריך כדי להריץ אותו בפרודקשן?

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

איך מריצים

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

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

from transformers import pipeline

pipe = pipeline("fill-mask", model="microsoft/graphcodebert-base")
print(pipe("שלום"))

הרישיון

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

הרישיון המלא בעמוד המודל ↗