טוקניזציה מתחת למכסה המנוע
אתם פורסים צ'אטבוט. שאילתות באנגלית משתמשות ב-42 טוקנים. משתמש דובר ספרדית שולח שאילתה אחת והיא משתמשת ב-103 טוקנים. פתאום, עלויות ה-API שלכם קופצות ב-40%.
זה קורה כשמתייחסים לטוקניזציה כאל "צנרת" בלתי נראית. כל מודל שפה גדול (LLM) משתמש באחד מארבעת אלגוריתמי תתי-המילים (subword algorithms). הבחירה שלכם קובעת את גודל אוצר המילים, את היעילות הלשונית ואת החשבון החודשי שלכם.
טוקניזציה שולטת בשלושה דברים קריטיים:
- עלות הסקה (Inference cost). ממשקי API של LLM גובים תשלום לפי טוקן. אוצר מילים קטן עלול לפצל מילה אחת ל-8 טוקנים. אוצר מילים גדול יטפל בה ב-3. ההבדל הזה עולה כסף אמיתי בקנה מידה גדול.
- כיסוי אוצר מילים (Vocabulary coverage). אוצר מילים דל יוצר רצפים ארוכים יותר. זה מוביל ליצירה (generation) איטית יותר ולעלויות גבוהות יותר.
- התנהגות המודל. אם טוקנייזר מפצל את "cowboy" ל-["cow", "boy"], המודל ילמד בצורה שונה מאשר אם הוא יפצל אותו ל-["c", "owb", "oy"].
כך עובדים ארבעת הסוגים העיקריים:
BPE (Byte Pair Encoding)
- איך זה עובד: זה מתחיל בתווים. האלגוריתם סופר זוגות סמוכים תכופים וממזג אותם לטוקנים חדשים. הוא חוזר על הפעולה הזו עד שהוא מגיע לגודל היעד.
- יתרונות: מהיר ודטרמיניסטי.
- משתמשים: GPT-4o, Llama 3, Mistral.
WordPiece
- איך זה עובד: דומה ל-BPE אך משתמש בהסתברות (likelihood) במקום בתדירות גולמית. הוא בוחר מיזוגים שממקסים את ההסתברות של נתוני האימון.
- יתרונות: יוצר טוקנים בעלי משמעות לשונית רבה יותר.
- משתמשים: BERT, מודלים של Google.
SentencePiece
- איך זה עובד: הוא מתייחס לקלט כאל בייטים (bytes) גולמיים של Unicode. אין צורך בשלב טוקניזציה מקדים כמו פיצול לפי רווחים.
- יתרונות: הטוב ביותר לתמיכה רב-לשונית מכיוון שהוא אגנוסטי לשפה (language-agnostic).
- משתמשים: Llama 2, Llama 3, Gemma.
Unigram
- איך זה עובד: הוא מתחיל עם אוצר מילים עצום ומצמצם אותו באמצעות מודל הסתברותי. הוא בוחר את נתיב הסגמנטציה (segmentation) הטוב ביותר.
- יתרונות: מיפוי עקבי יותר בין טוקן למשמעות.
- משתמשים: T5, XLNet.
תובנות מפתח למפתחים:
- שימו לב לתמהיל השפות שלכם. מודלי BPE המסתמכים על רווחים מתקשים עם שפות כמו יפנית או הינדי. השתמשו ב-SentencePiece עבור מוצרים גלובליים.
- קבעו גרסאות (Pin your versions). מעבר מ-cl100k_base ל-o200k_base משנה את ספירת הטוקנים שלכם. תמיד עקבו אחר הקידוד (encoding) שבו אתם משתמשים בהערכות (evaluations).
- בצעו בנצ'מרק (Benchmark) בצורה נכונה. אל תשוו ספירת טוקנים בין משפחות מודלים שונות. תמיד בצעו בנצ'מרק באמצעות ספירת תווים או בייטים כדי לשמור על דיוק.
הבנת הכלים הללו עוזרת לך להוציא לשוק מוצרים חסכוניים במקום להפתיע את צוותי הכספים.
קהילת למידה אופציונלית: https://t.me/GyaanSetuAi