חזרה
שבעה לוחות ESP32-S3 מריצים מודל שפה של 1.58 ביט כאשכול אחד
SiTech AI Team2 წთ. საკითხავი

שבעה לוחות ESP32-S3 מריצים מודל שפה של 1.58 ביט כאשכול אחד

פרויקט ב-GitHub מפצל את Qwen2-0.5B המכומת ל-24 שכבות בין שישה צמתי חישוב ESP32-S3 וצומת מאסטר אחד, המחוברים ב-SPI. משקולות טרנריות מאפשרות לכל צומת להישאר בתוך 16 MB של זיכרון פלאש.

הפרויקט ESP32s3-LLM-Cluster, שפורסם ב-GitHub, מציג כיצד שבעה לוחות ESP32-S3 מריצים יחד מודל שפה קטן. שישה מהם משמשים צמתי חישוב והשביעי הוא המאסטר: עליו פועלים הטוקנייזר BPE, חיפוש ההטמעות, הנרמול הסופי ו-LM Head. הבסיס הוא Qwen2-0.5B, שקוצר וכומת עבור מיקרו-בקרים.

לוחות ה-ESP32-S3 של האשכול

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

1.58 ביט לכל משקל

כל השכבות הלינאריות משתמשות בכימות טרנרי בסגנון BitNet: משקל יכול לקבל רק את הערכים מינוס 1, 0 או 1. שלושה ערכים נכנסים לשני ביטים, ולכן כל בית מכיל ארבעה משקולות, וזה מה שמאפשר למודל להיכנס לשבבים כה קטנים. טבלת ההטמעות נשמרת בנפרד בפורמט INT4.

לפי ה-README, שכבה אחת תופסת כ-3.82 MB, וארבע שכבות בצומת כ-15.3 MB, בתוך מחיצת פלאש של 16 MB. המאסטר צריך כ-14 MB להטמעות INT4 ועוד 64 KB לנרמול הסופי. חלון ההקשר הוא 512 טוקנים, ומטמון ה-KV נשמר ב-PSRAM של כל צומת.

שרשרת SPI

לכל לוח שני ערוצי SPI: אחד שולח (CS 4, MOSI 5, CLK 7) ואחד קולט (CS 15, MOSI 16, CLK 18). ערוץ השידור של הצומת הראשון מחובר לערוץ הקליטה של השני, והצומת האחרון מחזיר את התוצאה למאסטר. קווים נפרדים מטפלים באיפוס ובמוכנות: ה-GPIO 1 של המאסטר מאפס את הצמתים, ו-GPIO 3 מחזיר אות מסוף השרשרת שכל הלוחות עלו. נורית ב-GPIO 8 נדלקת בזמן עבודה.

צריכת חשמל ומגבלות

לפי מדידות המחבר, במצב סרק האשכול צורך 5 וולט ו-0.23 אמפר, כלומר כ-1.17 ואט, ובזמן הסקה כ-1.53 ואט. כל צומת זקוק לכשנייה ושליש לחלק שלו בחישוב, ולכן הוספת לוחות מאריכה את התגובה באופן לינארי: ESP32-S3 אחת מכסה 4 שכבות.

הפרויקט מציג בגלוי את נקודות התורפה. סקריפט הכימות אומן רק חלקית, ה-loss נעצר בסביבות 8.0, והמודל פולט לעיתים קרובות טוקנים אקראיים או חוזר על מילה אחת בדגימה חמדנית. ה-README גם מזהיר שאם סדר האריזה של 2 ביטים ב-Python אינו תואם את קוד הפריקה ב-C ובאסמבלר, כל המשקולות נפגמות בשקט. הקוד מופץ ברישיון MIT, ובמקורות ההשראה נמנים Microsoft BitNet ושני פרויקטים מוקדמים על ESP32.

SSiTech

SiTech — פיתוח אתרים בכוח ה-AI

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