GPT
I

InternVL-Chat-V1-5

קוד פתוח

OpenGVLabmit2024-04-18

  • transformers
  • tensorboard
  • safetensors
  • internvl_chat
  • feature-extraction

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

  • 26Bפרמטרים
  • 47.5 GBמשקל הקבצים
  • 9,909הורדות בחודש
  • 417לייקים

מה זה

הארכיטקטורה מחברת בין רכיב ראייה ייעודי בשם InternViT-6B לבין מודל השפה InternLM2-Chat-20B, ומגיעה יחד לכמעט 26 מיליארד פרמטרים. במקום לכווץ תמונות גדולות ולמחוק פרטים, הוא חותך אותן דינמית לעד 40 אריחים של 448 על 448 פיקסלים. הגישה הזו הופכת אותו לשימושי במיוחד בניתוח תרשימים, צילומי מסך ודוחות עמוסים בטקסט.

האימון התבסס על דאטה דו לשוני רחב באנגלית ובסינית, עם דגש מכוון על משימות OCR ותמונות של מסמכים. במבחנים כמו DocVQA, ChartQA ו־OCRBench הוא תוכנן להתחרות ישירות במודלים קנייניים מסחריים. המשמעות בפועל היא יכולת חילוץ נתונים מדויקת מתוך גרפים ומסמכים מורכבים, בלי להסתמך על מנוע OCR חיצוני נפרד.

מתאים ל

  • ניתוח מסמכים ותרשימים

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

  • חילוץ טקסט מתמונות באנגלית

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

  • הקמת שרת שאלות ותשובות לתמונות

    תמיכה מובנית ב־LMDeploy מאפשרת לפרוס שרת REST מהיר שתואם לפורמט הפניות של OpenAI.

איפה זה נופל

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

שאלות
נפוצות

האם אפשר להריץ אותו ב־4 ביט על כרטיס מסך ביתי?

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

איך המודל מתמודד עם השוואה בין כמה תמונות בבקשה אחת?

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

איך מריצים

כדי להריץ אותו בפורמט המלא של bfloat16 תצטרכו להחזיק 47.5 גיגה בייט בזיכרון של כרטיסי המסך, מה שדורש לפחות שני כרטיסי A100 או H100 של 40GB או 80GB, תוך הקפדה שהשכבות הראשונות והאחרונות ישבו על אותו מעבד גרפי. לחלופין, אפשר לכווץ אותו לקוונטיזציה של 8 ביט דרך bitsandbytes כדי לחסוך מקום, או להרים אותו מעל תשתית LMDeploy שתומכת גם בהגשת שרת תואם ל־API של OpenAI.

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

from transformers import pipeline

pipe = pipeline("image-text-to-text", model="OpenGVLab/InternVL-Chat-V1-5")
print(pipe("שלום"))

הרישיון

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

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

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