GPT
U

unixcoder-base

קוד פתוח

microsoftapache-2.02022-03-23

  • transformers
  • pytorch
  • roberta
  • feature-extraction
  • en

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

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

  • 1,026טוקנים בהקשר
  • 482 MBמשקל הקבצים
  • 314,344הורדות בחודש
  • 69לייקים

מה זה

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

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

מתאים ל

  • חיפוש קוד סמנטי

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

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

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

  • תיעוד אוטומטי של פונקציה

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

איפה זה נופל

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

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

שאלות
נפוצות

האם המודל יכול להחליף מודלים גדולים לכתיבת קוד מלא?

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

למה צריך להוריד קובץ פייתון נפרד מגיטהאב?

המימוש של מיקרוסופט למעבר בין שלושת מצבי העבודה דורש מעטפת שנמצאת בסקריפט unixcoder.py. המודל עצמו נטען דרך ספריית transformers, אבל המעטפת מנהלת את הטוקניזציה לפי המצב.

איך מריצים

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

כדי להריץ אותו בפועל, לא מספיק למשוך אותו דרך transformers כרגיל. צריך להוריד סקריפט ייעודי בשם unixcoder.py ממאגר הגיטהאב של CodeBERT, שמגדיר את המחלקה ומטפל במצבי הריצה השונים לפי פרמטר ה־mode שמעבירים לו.

from transformers import pipeline

pipe = pipeline("feature-extraction", model="microsoft/unixcoder-base")
print(pipe("שלום"))

הקבצים

8 קבצים במאגר, 482 MB סך הכול. הקישורים מובילים ישירות ל־Hugging Face.

הרישיון

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

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

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