בינה מלאכותית נמצאת כרגע על השפתיים של כולם, ואם אפל עדיין לא התקשרה רשמית על שילוב פונקציות חדשות בתוך המערכות שלה, כבר אפשר להעיף מבט על העבודה שלה, ואפילו להפעיל את דגם החמוס שלך על אפל סיליקון מק , בתנאי שיש לך מכונה עם כמות טובה של זיכרון RAM.
כתזכורת,פרט הוא MLLM(עבור מודל שפה רב-מודאלית, או מודל שפה רב-מודאלי גדול) פורסם ב-GitHubמסוגל לעבד טקסטים ותמונות. העמוד הרשמי מציין בבירור כי Ferret שמור כרגע למחקר ואינו ניתן למסחר, אך עדיין ניתן להשיק אותו ב-Apple Silicon Mac.
הקורא ויועץ ה-DevOps שלנוז'אן ז'רום לוי פרסם בבלוג שלומדריך שלם להתקנה וניסיון של Ferret ב-Mac המצויד בשבב אפל סיליקון. בהסכמתו (אנו מודים לו), אנו מציעים לך אותה למטה.שימו לב שתזדקק לכמות טובה של זיכרון מאוחד כדי לנצל אותו במלואו, מחבר המדריך לאחר שהשיק אותו על MacBook Pro M1 Max עם 64 GB של זיכרון RAM.
פותחה בשיתוף עם אוניברסיטת קורנל, אפל הציגה בדיסקרטיות רבה את דגם ה-LLM הראשון שלה, Ferret, ב-GitHub. הרבה אחרי OpenAI, Meta ואפילו גוגל, אפל משיקה את עצמה, בתורה, למירוץ LLM. עם זאת, הגישה שונה. קוד פתוח ורב-מודאלי, מודל זה משלב ראייה ממוחשבת ועיבוד שפה טבעית, ומציע יכולות ייחודיות במונחים של הבנה וניתוח של טקסט ותמונות. חזק יותר מה-GPT-4 של OpenAI על פי אפל, התקדמות זו מבטיחה להעשיר את מכשירי החברה, בפרט על ידי שיפור הפרשנות של נתונים ואולי אפילו של Siri.
למרבה האירוניה, למרות שאפל הפסיקה להשתמש ולתמוך במוצרי NVidia מאז 2016, דגם החמוס שלה פותח באמצעות כרטיסים גרפיים בעלי ביצועים גבוהים של NVidia, ה-A100. לכן קוד המקור הזמין ב-GitHub אינו פועל על מוצרי אפל.
בואו נראה איך לתקן את זה ולבדוק את היכולות וההיענות של הגרסה הראשונה הזו של Ferret במכונות "Designed by Apple" שלנו.
CUDA, MPS ותנאים מוקדמים
הדביקות הגדולה ביותר של הקוד של Ferret היא השימוש שלו ב-CUDA, מסגרת ה-GPU של NVidia. למרבה המזל, הספרייה שבה נעשה שימוש היא PyTorch שהועברה ומותאמת למעבדי Apple Silicon GPU. העברה לארכיטקטורת המתכת של אפל תהיה פשוטה אפילו יותר.
הנקודה הנוספת שיש לציין היא התיעוד המסכם על ההתקנה והשימוש של Ferret באתר GitHub, הוכחה אם הייתה כזו, לכך שאפל שומרת את מודל ה-LLM שלה רק לחוקרים כפי שצוין בתנאי השימוש שלה.
אז בואו נבין ביחד איך להפעיל את החמוס הזה במחשבי המק שלנו. לשם כך, הבה נזכור כי נדרשת כמות ניכרת של זיכרון GPU. הבדיקות שלנו בוצעו על MacBook Pro עם 64 ג'יגה-בייט של זיכרון.
Installation de Ferret
שלב 1: הגדר את Git
התחל בהתקנת Git Large File Storage (LFS) כדי לנהל את גדלי הקבצים הגדולים שנצטרך:
brew install git-lfs
git lfs install
שלב 2: הורד את קוד המקור של Ferret
הקוד הרשמי של Ferret זמין בכתובתhttps://github.com/apple/ml-ferret. התאמתי את הקוד הזה למעבדי סיליקון ולמסגרת Metal Performance Shaders (MPS) של אפל, הזמינה ב-https://github.com/jeanjerome/ml-ferret/tree/silicon:
• הסניףרָאשִׁימכיל קוד אפל מקורי.
• הסניףסִילִיקוֹןמכיל את הגרסה המותאמת שלי.
מבנה זה מקל על השוואה בין שתי הגרסאות. כדי לשכפל את הקוד:
git clone https://github.com/jeanjerome/ml-ferret
cd ml-ferret
git switch silicon
שלב 3: צור סביבה וירטואלית של Python
Ferret משתמש ב-Python, אז בואו ניצור סביבה וירטואלית עם Conda כדי לבודד תלות:
conda create -n ferret python=3.10 -y
conda activate ferret
לאחר מכן התקן את התלות הדרושה:
pip install --upgrade pip
pip install -e .
pip install pycocotools
pip install protobuf==3.20.0
שלב 4: התקן את תבנית Vicuna
מקם את דגם Vicuna בספרייה./דֶגֶםבבסיס הפרויקט:
mkdir -p ./model
git lfs install
git clone https://huggingface.co/lmsys/vicuna-13b-v1.3 model/vicuna-13b-v1.3
המתן בזמן שהתבנית תוריד.
שלב 5: הורד את משקולות החמוס
אפל מספקת קובץ עם ההבדלים בין המשקלים של ויקונה וחמוס. הורד אותם:
mkdir -p ./delta
curl -o ./delta/ferret-13b-delta.zip https://docs-assets.developer.apple.com/ml-research/models/ferret/ferret-13b/ferret-13b-delta.zip
unzip ./delta/ferret-13b-delta.zip -d ./delta
שלב זה עשוי לקחת מעט זמן.
שלב 6: הפוך את Vicuna לחמוס
כדי להחיל את השינויים של Ferret על Vicuna:
python -m ferret.model.apply_delta \
--base ./model/vicuna-13b-v1.3 \
--target ./model/ferret-13b-v1-3 \
--delta ./delta/ferret-13b-delta
עקוב אחר היומנים כדי לאשר את השלמת הפעולה המוצלחת:
/opt/homebrew/Caskroom/miniconda/base/envs/ferret/lib/python3.10/site-packages/bitsandbytes/cextension.py:34: UserWarning: The installed version of bitsandbytes was compiled without GPU support. 8-bit optimizers, 8-bit multiplication, and GPU quantization are unavailable.
warn("The installed version of bitsandbytes was compiled without GPU support. "
'NoneType' object has no attribute 'cadam32bit_grad_fp32'
Loading base model
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████| 3/3 [00:04<00:00, 1.57s/it]
Loading delta
Loading checkpoint shards: 100%|██████████████████████████████████████████████████████| 3/3 [00:08<00:00, 2.94s/it]
Applying delta
Applying delta: 100%|█████████████████████████████████████████████████████████████| 421/421 [00:16<00:00, 26.04it/s]
Saving target model
זה עתה התקנת את Ferret ב-Mac שלך.
השקת ההדגמה של Ferret
ההדגמה שמספקת אפל מאפשרת לך להעריך את היכולות של הדגם החדש באמצעות ממשק אינטרנט.
מדגמן זה כולל בקר, שרת אינטרנט של גראדיו ועובד מודל שמטעין את המשקולות ומבצע הסקת מסקנות.
הפעל את ההדגמה עם הפקודות האלה בשלושה מסופים נפרדים:
שלב 7: טרמינל ראשון
הפעל את הבקר:
conda activate ferret
python -m ferret.serve.controller --host 0.0.0.0 --port 10000
המתן להודעה המציינת שהבקר פועל:Uvicorn פועל ב-https://0.0.0.0:10000 (הקש CTRL+C כדי לצאת)

שלב 8: טרמינל שני
הפעל את שרת האינטרנט:
conda activate ferret
python -m ferret.serve.gradio_web_server --controller https://localhost:10000 --model-list-mode reload --add_region_feature
המתן עד שהקו יופיעפועל על כתובת אתר מקומית: https://0.0.0.0:7860:

שלב 9: טרמינל שלישי
הפעל את עובד המודל:
conda activate ferret
python -m ferret.serve.model_worker --host 0.0.0.0 --controller https://localhost:10000 --port 40000 --worker https://localhost:40000 --model-path ./model/ferret-13b-v1-3 --add_region_feature
עקוב אחר היומנים כדי לוודא שהכל עובד כשורה:Uvicorn פועל ב-https://0.0.0.0:40000 (הקש CTRL+C כדי לצאת)

שלב 10: גש להדגמה
לחץ על הכתובת https://localhost:7860/ כדי לגשת לממשק האינטרנט של ההדגמה.

בודק את ההדגמה
אפל כללה בדיקות עם תמונות והנחיות מאוכלסות מראש כדי להעריך את Ferret.
בואו נבחן אותם!
מבחן 1: הכלב והחמוסים
• בחר את התמונה הראשונה (הכלב הלבן) בדוגמאות.
• במפנה סוג קלט, בחרסְקִיצָה.
• צייר על הכלב והחמוס פנימהתמונה וסקיצה.
• לבסוף לחץ על הכפתורלְהַגִישׁמול ההנחיהמה הקשר בין אובייקט [אזור0] לאובייקט [אזור1]?

התשובות משתנות, אך נשארות עקביות עם התמונה וכנראה תלויות בפיקסלים שנבחרו:
•משפט 1: החפץ [497, 303, 791, 658] הוא כלב, והוא עומד ליד כלב אחר [307, 507, 459, 690]. נראה שהם נהנים מהזמן שלהם ביחד בשלג.
•מבחן 2: החפץ [457, 283, 817, 701] הוא כלב, והאובייקט [318, 498, 464, 707] הוא חמוס. נראה שהכלב והחמוס יושבים יחד בשלג, מה שמרמז על אינטראקציה ידידותית או חברות.
מגבלות:
חמוס יכול לצרוך הרבה זיכרון, וייתכן שיהיה צורך להפעיל מחדש את המודל בין הבדיקות. ב-MacBook M1 Max שלי וב-64 GB שלו, נעשה שימוש ב-62 GB של זיכרון RAM, 2 GB של קבצים במטמון ו-20 GB עבור קובץ העמוד.
מבחן 2: הפונטון על האגם
• בחר את התמונה השנייה (הפונטון).
• ללא ציור, שלח את הבקשה על ידי לחיצה על הכפתורלְהַגִישׁמול ההנחיהמהם הדברים שעלי להיזהר מהם כשאני מבקר כאן? תגיד לי את הקואורדינטות בתגובה.

•תוֹצָאָה: כאשר אתה על המזח [218, 535, 810, 993], אתה צריך להיות מודע לכמה דברים. ראשית, המים [0, 518, 998, 997] הם היבט מכריע, ועליכם להיזהר לא להתקרב מדי לקצה [731, 543, 998, 591]. שנית, העצים שמסביב [875, 366, 940, 510] [707, 385, 757, 535] [650, 393, 695, 529] [512, 420, 540, 526] [772, 375, 8] עלול להוות סכנה אם אתה לא זהיר. לבסוף, חשוב להיות מודעים לנתיב [218, 535, 810,] כדי להבטיח שאתה נשאר על המסלול הנכון כדי למנוע נפילות או פציעות לא מכוונות.
מבחן 3: הסלון
• בחרו בתמונה השלישית (הסלון).
• שלח את הבקשה ללא ציור על ידי לחיצה על הכפתורלְהַגִישׁמול ההנחיהתאר את התמונה בפירוט.
• חמוס מתחיל לענות לנו...

תוֹצָאָה:
•חמוס כותב לאט את תגובתו. אנו מרגישים שזה מרגיש צפוף ב-64 GB של זיכרון RAM.
•הוא עדיין מצליח לכתוב את זה: התמונה מתארת סלון נעים [12, 1, 982, 989] עם רהיטים שונים [490, 588, 709, 883] ועיטורים [244, 27, 394, 110] [247, 28, 274, 109 ] [378, 43, 411, 108]. במרכז יש שטיח צבעוני ורב צבעים [90, 689, 746, 994] על הרצפה. טלוויזיה בעלת מסך שטוח [1, 394, 93, 723] מותקנת על הקיר השמאלי, כאשר שלטים [5, 679, 60, 734] ממוקמים בקרבת מקום. שתי ספות [513, 421, 938, 769] [501, 577, 993, 995] מסודרות בחדר, אחת לאורך הקיר הימני ואחרת בקצה המרוחק של החדר. יש גם כמה כיסאות, הפזורים בחדר. שולחן אוכל [710, 392, 954, 511] [
•לפני השתילה עלובהשגיאת רשת עקב תנועה גבוהה. נא ליצור מחדש או לרענן עמוד זה. (קוד_שגיאה: 1)
•ביומנים, אנו יכולים לקרוא: נתפסה שגיאה לא ידועה MPS אחורי חסר זיכרון (MPS שהוקצה: 26.50 GB, הקצאות אחרות: 55.14 GB, מקסימום מותר: 81.60 GB). ניסיתי להקצות 10.00 KB לבריכה פרטית. השתמש ב-PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 כדי לבטל את הגבול העליון עבור הקצאות זיכרון (עלול לגרום לכשל במערכת).
לכן אין פתרון עבור ה-MacBook Pro שלי, 80 ג'יגה-בייט שתפוסים על ידי Ferret אינם מספיקים...
מַסְקָנָה
לסיכום, השילוב של Ferret, האחרון מבין דגמי ה-LLM של אפל, במכונות המצוידות במעבדי Apple Silicon, מייצג התקדמות בולטת בתחום הבינה המלאכותית. למרות כמה אתגרים הגלומים בהתאמת הקוד הראשוני, שתוכנן עבור NVidia GPUs, מאמץ המעבר לארכיטקטורת Metal של אפל היה פשוט מאוד.
התקנה ופריסה של Ferret, תוך דרישה לזיכרון ומשאבים, פותחת הזדמנויות מרגשות עבור משתמשי Mac. ההדגמות המסופקות עם קוד המקור ממחישות את העוצמה והרבגוניות של Ferret, המסוגלת לנתח ולפרש נתונים חזותיים וטקסטואליים לעומק.
חשוב לציין שהיישום הזה של Ferret, למרות הכוח שלו, נשאר עתיר משאבים, במיוחד ב-RAM. אין ספק שאפל תתאים כעת את הדגם החדש שלה למכונות שלה ובפרט לאייפון. הפוטנציאל שלו לשפר יישומים קיימים וליצור חדשים הוא עצום, וניתן לצפות שההתפתחות הבאה שלו תביא עוד יותר חידושים ותכונות.