GPT
C

codebert-base-mlm

קוד פתוח

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

  • transformers
  • pytorch
  • tf
  • jax
  • rust

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

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

  • 514טוקנים בהקשר
  • 2.2 GBמשקל הקבצים
  • 95,515הורדות בחודש
  • 46לייקים

מה זה

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

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

מתאים ל

  • השלמת אופרטורים בקוד

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

  • בדיקת שגיאות תחביר

    זיהוי מילים שלא מתאימות להקשר של הקוד על ידי השוואת ההסתברות של הטוקן הקיים.

  • בסיס לאימון ייעודי

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

איפה זה נופל

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

שאלות
נפוצות

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

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

מה ההבדל בינו לבין CodeBERT הרגיל?

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

איך מריצים

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

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

from transformers import pipeline

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

הרישיון

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

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