GPT
C

CodeBERTa-small-v1

קוד פתוח

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

  • transformers
  • pytorch
  • tf
  • jax
  • roberta

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

  • 514טוקנים בהקשר
  • 1.1 GBמשקל הקבצים
  • 49,810הורדות בחודש
  • 93לייקים

מה זה

מדובר בארכיטקטורת RoBERTa מוקטנת עם 6 שכבות ו־84 מיליון פרמטרים, בדיוק כמו DistilBERT, שאומנה מאפס על כשני מיליון פונקציות ממאגר CodeSearchNet. הוא תומך בפייתון, ג'אווה, ג'אווהסקריפט, PHP, רובי ו־Go, כשהמשימה המרכזית שלו היא השלמת מילים מוסתרות בתוך שורות קוד.

במקום לקחת טוקנייזר של טקסט רגיל ולנסות להלביש אותו על סינטקס תכנותי, אימנו כאן טוקנייזר BPE ייעודי על קוד בלבד. ההבדל ניכר מיד ביעילות הייצוג, רצפי הטוקנים קצרים ב־33% עד 50% בהשוואה לטוקנייזרים של GPT-2 או RoBERTa רגיל, מה שחוסך מקום ומאיץ את העיבוד.

מתאים ל

  • השלמת מילות מפתח בעורך קוד

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

  • בסיס לסיווג שפות תכנות

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

  • תיקון תחביר ושגיאות כתיב

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

איפה זה נופל

זהו מודל מסיכת טוקנים (fill-mask) ולא מודל ג'נרטיבי, כך שהוא לא מסוגל לכתוב פונקציות שלמות מאפס או לענות לשאלות. חלון ההקשר מוגבל ל־514 טוקנים בלבד, מה שאומר שהוא יאבד הקשר בקבצים ארוכים. בנוסף, הוא מתקשה מאוד עם שפה טבעית, והניסיון לחזות בה מילים מוביל לתוצאות מוזרות שמגיעות ישירות מעולם המושגים של שגיאות קוד. אם הקוד שלכם כולל שפות שאינן בשש הנתמכות, הוא לא יספק תוצאות סבירות.

שאלות
נפוצות

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

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

האם אפשר להשתמש בו כדי לנתח קוד ב־C++ או C#?

המודל אומן רק על שש שפות ממאגר CodeSearchNet: פייתון, ג'אווה, ג'אווהסקריפט, PHP, רובי ו־Go. הרצה שלו על שפות אחרות תניב תוצאות לא מדויקות בגלל הבדלי סינטקס והטוקנייזר הייעודי.

איך מריצים

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

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

from transformers import pipeline

pipe = pipeline("fill-mask", model="huggingface/CodeBERTa-small-v1")
print(pipe("שלום"))

הקבצים

9 קבצים במאגר, 1.1 GB סך הכול. הקישורים מובילים ישירות ל־Hugging Face.

הרישיון

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

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