GPT
L

setu4993/LaBSE

קוד פתוח

setu4993apache-2.02022-03-02

  • transformers
  • pytorch
  • tf
  • jax
  • safetensors

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

  • 471Mפרמטרים
  • 512טוקנים בהקשר
  • 7.0 GBמשקל הקבצים
  • 251,704הורדות בחודש

מה זה

מדובר בהסבה של LaBSE המקורי מבית גוגל מפורמט TensorFlow ל־PyTorch ולספריית transformers. הוא מבוסס על ארכיטקטורת BERT קלאסית עם 12 שכבות ו־471 מיליון פרמטרים, ואומן מראש במיוחד למשימות דמיון סמנטי ושליפת תרגומים מקבילים על פני 109 שפות.

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

מתאים ל

  • שליפת משפטים מקבילים

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

  • חיפוש סמנטי רב־לשוני

    מתן אפשרות למשתמשים לחפש בשפה אחת ולמצוא תוכן מתאים שנכתב בשפה אחרת.

  • סיווג טקסטים בין שפות

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

איפה זה נופל

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

שאלות
נפוצות

איך מחשבים דמיון בין שני משפטים עם המודל הזה?

המודל מוציא וקטור עבור כל משפט מתוך ה־pooler output. כדי לקבל ציון דמיון אמין, מנרמלים את שני הווקטורים בנורמת L2 ומבצעים ביניהם כפל מטריצות, בדיוק כפי שמודגם בקוד השימוש שלו.

האם יש הבדל בתוצאות בין הגרסה הזו למודל המקורי מ־TensorFlow?

לא. מפתח המאגר ביצע בדיקות השוואה ישירות ואימת שהווקטורים שנוצרים בגרסת ה־PyTorch הזו זהים לחלוטין לאלה של גרסת ה־v2 המקורית מ־TensorFlow Hub.

איך מריצים

כדי להריץ אותו צריך רק להתקין את ספריית transformers ו־PyTorch. המודל שוקל 7 גיגה בייט בדיוק מלא של float32, מה שאומר שהוא ידרוש לפחות כמה גיגה בייטים טובים של זיכרון ב־GPU לצורך חישובים מהירים, או שירוץ על מעבד רגיל אבל בקצב איטי יותר. אפשר לקרוא ישירות לטוקנייזר ולמודל עם BertModel ולשלוף את ה־pooler output.

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

from transformers import pipeline

pipe = pipeline("sentence-similarity", model="setu4993/LaBSE")
print(pipe("שלום"))

הרישיון

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

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

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