רשת נוירונים YaLM 100B בפועל.

Программирование

בסוף יוני, Yandex
הוציאה לציבור רשת עצבית עם 100 מיליארד פרמטרים בשם YaLM 100B . זוהי הרשת העצבית דמוית GPT הגדולה ביותר ברשות הרבים. הוא מספר על איך הם לימדו, הראו את הדוגמאות הטובות ביותר ומה הנוירון מסוגל. אבל האם זה כל כך טוב בפועל וישים בבית? המאמר שותק על כך, יתר על כן, זה לא כל כך קל להפעיל ולבדוק את זה, מכיוון שנדרש כ-200 ג’יגה-בייט של זיכרון RAM GPU. הערה זו על האברה
חושפת את המצב בצורה המדויקת ביותר
.

לכאורה, ב-Yandex, כל האנשים החכמים האלה, והם אפילו לא פרסמו מדריך רגיל. אין API לדגם גדול, אין דגם בינוני או קטן מוכן ומוכן לאנשים רגילים (בגוגל קולאב). לא ניתנת דוגמה כיצד להגדיר את המודל, כיצד ליצור טקסט. רק שהמאמר מציין כמה ניואנסים לחנונים וזהו. זה מספיק כדי להסתכל מקרוב על איך הבנק עשה את זה עם האות “C” ולעשות את אותו הדבר. התרשמתי שהדגם הזה הוא רק אחד מהניסויים הכושלים שחבל לזרוק אותו לפח, אז הוא פורסם ב-Open Source כדי להראות אילו דגמים נהדרים יוצרת Yandex, ויותר מכך, הוא קוד פתוח!

יש הרבה שאלות באינטרנט איך להפעיל את Yalm או אפילו לנסות באינטרנט, אבל אין לזה תשובות. הייתי בין המשתמשים ששאלו את השאלות הללו. ותתחיל להבין את זה. מאז באמת הייתי צריך דרך ליצור טקסטים עבור רובוטים פיננסיים. כדי שיוכלו לחזות לא רק את הערכים, אלא גם להעיר עליהם בטקסט, על סמך דוחות כספיים. בעצם, זה יהיה זהה למה שעושים אנליסטים פיננסיים, רק עם שימוש בבינה מלאכותית. יש שתי דרכים להפעיל את יאלם.
השכרת שרת בענןעם 200+ Gb GPU RAM או סיים את הקוד והפעל אותו באמצעות deepspeed zero offload (כאשר ה-GPU מעבד ברצף חלק מהרשת העצבית, והשאר מאוחסן ב-CPU RAM או NVMe). הראשון יקר מאוד, בערך 2500 רובל לשעה או 1.7 מיליון לחודש. השני לא ידוע, כי הקוד במאגר אינו מסופק, רק
רמזים בסוגיית המאגר, מה שלא קשה לעשות. בואו נתחיל פשוט.

הוראות הפעלה של YaLM 100B

1. אנו שוכרים 200 GB GPU RAM, למשל כאן .

רשת נוירונים YaLM 100B בפועל.

אתה צריך לפחות 200 GB של זיכרון וידאו כולל. 8×40 = 320 GB. רק זה מתאים. פחות מ-200 זה בלתי אפשרי, יותר אפשרי. החץ מציין את זיכרון ה-CPU, אנחנו לא מסתכלים עליו. היא יכולה להיות כל אחד.

אנו מציינים דיסק של כ-300 ג’יגה, כך שעם דיסק רזרבי ורצוי מהיר, כי. עשרות גיגה-בייט של נתונים יועברו אליו וממנו.

רשת נוירונים YaLM 100B בפועל.בעת יצירה במקורות, בחר אובונטו ML (למידת מכונה). זה חובה כדי שכרטיסי המסך יהיו מוגדרים ואין צורך להתקין דבר נוסף.

לאחר הפעלת השרת (זה עשוי לקחת 5-10 דקות), התחבר לשרת באמצעות ssh או ישירות בקונסולת האינטרנט בעמוד השרת והפעל את הפקודה.

nvidia-smi

התוצאה צריכה להיות טבלה עם כרטיסי מסך, גרסת דרייבר ו-cuda. בערך ככה.
רשת נוירונים YaLM 100B בפועל.בכותרת גרסת מנהל ההתקן ואיפה. בצד שמאל מופיעים מספרי המכשירים, במרכז גודל זיכרון המכשיר. אם אין לך מידע זה, אז אספת את השרת מהמקור הלא נכון. אובונטו ML (Machine Learnong) נדרש, כמתואר לעיל.

2. שכבו את המאגר עם YaLM

שיבוט sudo git https://github.com/yandex/YaLM-100B/ yalm
cd yalm

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

3. הורדת נקודות ביקורת (מידע בסיסי על אימון מודל)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

זה ייקח כשעה. כדי לא לבזבז זמן לשווא, אנו יוצרים חיבור ssh חדש ובמקביל מתחילים לבנות קונטיינר דוקר.

4. התקן את nvidiadocker 2

דוקר רגיל אינו מתאים,
יש צורך ב-nvidia-docer2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. בניית קונטיינר לי.ל.מ

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

זה גם בערך שעה.

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

6. הכן תוכן

6.1 מחסומים

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

mv ./download/yalm100b_checkpoint ./

או שנה את הנתיבים לקבצים בקבצים לדוגמה
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 כרטיסי מסך

אנו בודקים שכרטיסי המסך מוגדרים כהלכה. אם יש לך שמונה כרטיסי מסך, אין צורך לשנות דבר. אם המספר שונה, אז נשנה את השורות הללו
רשת נוירונים YaLM 100B בפועל.בשורה השנייה, את המספרים של המכשירים שבהם נעשה שימוש (תוכלו להסתכל עליהם ב-nvidia-smi, שכבר הפעלתם). ברביעית, מספרם.

7. הפעל את מיכל הדוקר

בהיותך בתיקיית ylm, בצע את הפקודה

sudo bash ./docer/run.sh

אם הכל תקין, אז תועבר למיכל שבו אתה צריך לעבור לתיקיית ylm בספריית הבית שלך.

cd ~/yalm

8. הפעל את הדוגמה מ-YaLM 100B

אנחנו מוכנים להשיק את אחת הדוגמאות. הם מתוארים
כאן .

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

התאזר בסבלנות, נותר להמתין עוד 10-15 דקות עד ליצירת דגם ה-GPT2 והעלאת המשקולות מהמחסומים.
רשת נוירונים YaLM 100B בפועל.

עם סיום הבנייה, MegatronML יבקש ממך להזין הקשר ליצירת טקסט. היזהר בעת הקלדה. בנסיבות מסוימות, מתרחשת שגיאה, התוכנית קורסת ואתה צריך להתחיל את ההרכבה שוב. לכן, עדיף להשתמש בדוגמאות שלוקחות טקסט מקובץ.

9. תוצאות העבודה

רשת נוירונים YaLM 100B בפועל.
רשת נוירונים YaLM 100B בפועל.נראה מעניין. כמובן, אלו רק דוגמאות טובות. הרצתי את הבדיקה על דוגמאות שונות. כצפוי, ככל שההקשר טוב יותר, כך ייווצר טקסט משמעותי יותר. ניתן לראות את הסט המלא של דורות ניסויים בקישורים:

עבור המחיר, זה עלה לי בערך 9 אלף רובל עבור השכרת שרתים ביכולות שונות מהדרכה ומהכנה לדור. אכזבה מיוחדת הייתה שאתה לא יכול ליצור הכל באופן מיידי. לוקח הרבה מאוד זמן להתחיל והטקסט לא נוצר מהר כמו שהיינו רוצים, לאור עלות השרת לשעה.
רשת נוירונים YaLM 100B בפועל. 

כיצד להפעיל את YaLM ללא 200Gb GPU RAM?

אתה צריך להוסיף deepspeed zero offload לתצורה. למי שיודע על מה אנחנו מדברים, זה יהיה קל מאוד לעשות את זה. עבור אחרים, זו לא משימה טריוויאלית בכלל. חשוב לדעת ש-offload יכול להיות ב-CPU RAM או NVMe. אתה יכול לשכוח מ-NVMe כרגע, כי. כמות גדולה מאוד של נתונים מעובדת והדיסק לא יכול להתמודד איתה. מעבד אפס פריקה הוא אמיתי יותר. נכון, בשביל זה אתה צריך 200+ Gb CPU RAM במלאי, וזה גם לא זול. ויווצר טקסט אחד למשך כ-20-40 דקות, מכיוון שעדיין לא ניתן היה להקביל אותו בשני כרטיסי מסך. כפי שניתן לראות בצילום המסך למטה, רק כרטיס מסך אחד היה מעורב בדור, ולאחר מכן רק עבור רבע מהזיכרון. נותר לראות מדוע לא נעשה שימוש בכל 24 GB,
רשת נוירונים YaLM 100B בפועל.ובכן, לסיכום, אני אגיד שאפשר לרוץ אפילו על RTX 3070 TI אחד. אבל אין בזה היגיון מיוחד, כי. NVMe לא יאפשר לך לעבד במהירות 150 GB של נתונים בהחלפה, שנמצאים בתוספת של 96 GB של זיכרון RAM.
רשת נוירונים YaLM 100B בפועל.

סיכום

כמובן, אני עדיין אנסה למצוא את נתיבי ההשקה האופטימליים. אבל עד כה הגעתי למסקנה ש-YaLM 100b יקר מדי / איטי מדי עבור המשימות שלי. תמורת אותו כסף אנשים יכתבו הרבה יותר והרבה יותר טוב. אבל אני חושב שזה זמני, נראה. אם אתה זקוק לעזרה בהפעלה, הגדרת Yalm, או רוצה לראות את התוצאות בדוגמאות ההקשר שלך, כתוב למייל או למברק.

pskucherov
Rate author
Add a comment

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    Reply
  2. Данила

    Крутая статья! Спасибо автору!

    Reply
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    Reply