‏הצגת רשומות עם תוויות openllm. הצג את כל הרשומות
‏הצגת רשומות עם תוויות openllm. הצג את כל הרשומות

יום שישי, פברואר 02, 2024

הצלחתי להפעיל openllm מקומית עם כרטיס בעל 8 ג"ב VRAM ,זה עובד טוב עם מודל קטן, צריך למצוא דרך להפעיל מודלים של 70B או יותר בשביל שיהיה אפשר לרוץ על הRAM במחשב האישי.

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

דבר ראשון תלויות חשובות בשבילי:
sudo apt install build-essential curl git python3-pip
  
את ה venv פשוט בונים על ידי python3 -m venv venv ואחרי זה מפעילים ע"י . venv/bin/activate
לאחר מכן משכתי את openllm ע"י פיפ
pip3 install openllm
pip3 install "openllm[vllm]"
ואז הפעלתי אותו ביחד עם המודל של פייסבוק :
openllm start facebook/opt-2.7b --backend vllm --port 3000
  
אני משתמש במודל הקטן הזה , כי יש לי כרטיס גרפי עם רק 8 ג"ב זיכרון, מתברר שצריך 24 ומעלה בשביל להתחיל לעבוד על מודלים יותר רציניים,  מצאתי נוסחה שמתארת בערך כמה ג"ב צריך עבור כל מודל לפי כמות הפרטמטרים, אז לא פלא שומודלים גדולים יותר פשוט נכשלים בעלייה אצלי. אפילו הפעלה של openllm start llama נכשלה עם
  torch.cuda.OutOfMemoryError: CUDA out of memory.
  Tried to allocate 172.00 MiB. GPU 0 has a total capacty of 7.79 GiB of which 104.88 MiB is free.
  Including non-PyTorch memory, this process has 7.59 GiB memory in use. Of the allocated memory 6.78 GiB is allocated by PyTorch,
  and 752.00 KiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting max_split_size_mb to avoid fragmentation.
  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
  
ניסיתי גם להפעיל ביחד עם ה backend vllm וגם עם backend pt, בשני המקרים אין מספיק זכרון ונכשלים במודלים מעל 2 מילארד פרמטרים , לא מצאתי איך להפעיל מודלים גדולים יותר שגם ינצלו את הram שלי וגם את הvram שלי ביחד בתוך openllm. אני כנראה מחפש משהוא ממש לא טוב. חשוב שכאשר מתקינים מודלים דונים לבדוק שיש לנו סביבות venv ו bentol שונות כי הן מתנגשות בחלק מהמודלים השונים.

לפעמים קיבלתי את השגיאה
  ValueError: The model's max seq len (2048) is larger than the maximum number of tokens that can be stored in KV cache (752). Try increasing `gpu_memory_utilization` or decreasing `max_model_len` when initializing the engine.  
את זה פתרתי ע"י העברת המשתנה --max_model_len=751 (רק ערך קטן יותר מה KV שמדווח)

כלומר כך:
  openllm start facebook/opt-2.7b --backend vllm --port 3000 --max_model_len=751
🚀Tip: run 'openllm build facebook/opt-2.7b --backend vllm --serialization legacy' to create a BentoLLM for 'facebook/opt-2.7b'
2024-02-02T16:00:00+0200 [INFO] [cli] Prometheus metrics for HTTP BentoServer from "_service:svc" can be accessed at http://localhost:3000/metrics.
2024-02-02T16:00:00+0200 [INFO] [cli] Starting production HTTP BentoServer from "_service:svc" listening on http://0.0.0.0:3000 (Press CTRL+C to quit)
  
יש מספר דרכים להשתמש כשצריך לתקשר עם המודל, או אולי יותר נכון להגיד, לחפש בתוכו ? , לי היה הכי נוח להשתמש בטרמינל בצורה הבאה :
  export OPENLLM_ENDPOINT=http://localhost:3000
  openllm query 'Tell me about Debian'
  
ומקבלים תשובה (לא משנה כמו הזויה) ישר בטרמינל.
  Tell me about Debian. I'm using Arch, and it's working fine, but I've heard Debian is much more stable. What's the difference?
Debian is stable and has a lot of nice features. But it's also quite a bit more difficult to install and configure.  Arch is really just Arch.(
  
אבל כאשר שאלתי
  openllm query 'Answer to the Ultimate Question of Life, The Universe, and Everything'
הוא נכשל לתת את התשובה הנכונה ופשוט פלא דברים לא קשורים כמו Big Bang ולקח לו 24 ניסיונות עש שהגיעה לתוצאה הנכונה שהיא :
the answer is 42
אחת התשובות שהכי אהבתי הייתה "A potato" , שזה משהוא די אירופאי להגיד, אבל כן תפוחי אדמה באמת הם התשבוה לחיים העולם והכל.  אפשר להפעיל גם כקוד פייתון ישירות או אפילו דרך ממשק וובי.

מבחינת איכות התשובות ב 2.7 מילאירד ו1.5 מילארד לא אהבתי ממש,
בזמנו כשניסתי את הLLM ב hugging face התוצאות היו הרבה יותר טובות, ואף יכלו לרנדר לי קוד טוב יותר ממתכנת צעיר שמגיע לחברה. אבל פה, אני כנראה עושה משהוא ממש לא טוב, כי זה מרגיש כמו פשוט חיפוש במאגר מידע (לא מקצעוי כלל).