GPT
2

2-bit-LLMs

קוד פתוח

KnutJaegersbergother2024-01-24

  • gguf
  • text-generation
  • endpoints_compatible

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

  • 707 GBמשקל הקבצים
  • 2,041הורדות בחודש
  • 92לייקים

מה זה

המאגר הזה מרכז שורה ארוכה של דגמים גדולים, כולל גרסאות של שבעים מיליארד כמו Qwen, Codellama ו־Nous-Hermes2, ועד משקלים כבדים של מעל מאה מיליארד כמו Miquliz ו־DiscoLM. כולם עברו כימוס לשני ביט בשיטה ששואבת השראה מ־quip#, כשלחלקם יש גרסאות xs ו־xxs כדי ללחוץ את הגודל עוד קצת למטה.

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

מתאים ל

  • בדיקת דגמי ענק מקומית

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

  • כתיבת קוד אופליין

    טעינת Codellama-70b מכווץ לסביבת פיתוח מבודדת לחלוטין שאין לה גישה לרשת חיצונית.

  • מחקר על דחיסת משקלים

    השוואת התנהגות של ארכיטקטורות שונות תחת כימוס אגרסיבי של שני ביט ב־llama.cpp.

איפה זה נופל

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

שאלות
נפוצות

איך בוחרים את הפרומפט הנכון לכל מודל?

עוברים ישירות על כרטיס המודל ובודקים מה המבנה המקורי שלו. לחלק מתאים ChatML, לאחרים Vicuna או Alpaca, ומודלים בסיסיים כמו Qwen-72b לא כוללים תבנית שיחה מובנית בכלל.

למה המודל קורס לי בגלל חוסר זיכרון למרות שהוא בשני ביט?

חלון ההקשר המקורי של דגמים כמו Qwen גדול מדי לרוב כרטיסי המסך. תצטרכו להגביל את n_ctx ב־textgen-webui או להגדיר Rope scaling כדי לייצב את צריכת ה־VRAM.

איך מריצים

המטרה של שני ביט היא לאפשר ריצה מקומית ב־llama.cpp או דרך textgen-webui על כרטיסי מסך ביתיים עם זיכרון צנוע יחסית. מודלים מסוימים, במיוחד אלה שמבוססים על Qwen-72b, מחזיקים חלון הקשר ענקי שעלול לחנוק את ה־GPU מיד, ולכן צריך להקטין ידנית את פרמטר n_ctx בהגדרות.

אם אתם טוענים מודלים שמבוססים על הרחבות הקשר כמו LongAlpaca או Yarn, תצטרכו להגדיר Rope scaling לערך שמונה ולקבוע את compress_pos_emb בהתאם. לכל דגם באוסף יש תבנית פרומפט ייעודית, למשל ChatML, Alpaca, Vicuna או Mistral, וערבוב ביניהן ישבור את הפלט לגמרי.

ollama run hf.co/KnutJaegersberg/2-bit-LLMs:longalpaca-70b-xs

איזו גרסה

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

הרישיון

הרישיון הכללי מוגדר other, והאוסף מערבב תנאים שונים לחלוטין לכל קובץ. חלק מהמודלים יושבים תחת Llama 2, חלק תחת הרישיון של Qwen או Deepseek, ויש כאלה עם Apache 2.0. אי אפשר לקחת את המאגר הזה כיחידה אחת למוצר מסחרי בלי לבדוק בנפרד את הרישיון המקורי של הדגם הספציפי שאתם מורידים.

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