היה לי קצת זמן פנויי אז החלטתי גם אני לנסות להתקין openllm, ולשחק איתו מקומית. ההתקנה התבססה על שרת דביאן ביחד עם pip בשביל הדברים הנדרשים לתוך סבבית .venv אינני ידע האם openllm דואג לפרטיות והאם הוא מדליף מידע ואיזה מידע הוא מדליף.
דבר ראשון תלויות חשובות בשבילי:
לאחר מכן משכתי את openllm ע"י פיפ
לפעמים קיבלתי את השגיאה
כלומר כך:
מבחינת איכות התשובות ב 2.7 מילאירד ו1.5 מילארד לא אהבתי ממש,
בזמנו כשניסתי את הLLM ב hugging face התוצאות היו הרבה יותר טובות, ואף יכלו לרנדר לי קוד טוב יותר ממתכנת צעיר שמגיע לחברה. אבל פה, אני כנראה עושה משהוא ממש לא טוב, כי זה מרגיש כמו פשוט חיפוש במאגר מידע (לא מקצעוי כלל).
דבר ראשון תלויות חשובות בשבילי:
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 התוצאות היו הרבה יותר טובות, ואף יכלו לרנדר לי קוד טוב יותר ממתכנת צעיר שמגיע לחברה. אבל פה, אני כנראה עושה משהוא ממש לא טוב, כי זה מרגיש כמו פשוט חיפוש במאגר מידע (לא מקצעוי כלל).