الشبكة العصبية YaLM 100B عمليًا.

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

في نهاية شهر يونيو ، أصدرت Yandex
شبكة عصبية تحتوي على 100 مليار معلمة تسمى YaLM 100B للجمهور . إنها أكبر شبكة عصبية تشبه GPT في المجال العام. إنه يخبر عن كيفية تدريسهم ، وأظهروا أفضل الأمثلة وما يمكن للخلايا العصبية القيام به. ولكن هل هي جيدة في الممارسة وقابلة للتطبيق في المنزل؟ المقالة صامتة حول هذا الأمر ، علاوة على ذلك ، ليس من السهل تشغيلها والتحقق منها ، نظرًا لأن ما يقرب من 200 جيجا بايت من ذاكرة الوصول العشوائي GPU مطلوبة. هذا التعليق على حبري
يكشف الموقف بدقة أكبر
.

يُزعم ، في Yandex ، كل هؤلاء الأشخاص الأذكياء ، ولم ينشروا حتى إرشادات عادية. لا توجد واجهة برمجة تطبيقات لنموذج كبير ، ولا يوجد نموذج متوسط ​​أو صغير جاهز للناس العاديين (في Google Colab). لا يوجد مثال على كيفية إعداد النموذج ، وكيفية إنشاء نص. كل ما في الأمر أن المقالة تشير إلى اثنين من الفروق الدقيقة للمهووسين وهذا كل شيء. يكفي إلقاء نظرة فاحصة على كيفية قيام البنك بذلك بالحرف “C” وفعل الشيء نفسه. لدي انطباع بأن هذا النموذج هو مجرد واحدة من التجارب الفاشلة التي كان من المؤسف رميها في سلة المهملات ، لذلك تم نشره في Open Source لإظهار النماذج الرائعة التي تنشئها Yandex ، وعلاوة على ذلك ، فهو مفتوح المصدر!

هناك الكثير من الأسئلة على الإنترنت حول كيفية تشغيل yalm أو حتى المحاولة عبر الإنترنت ، ولكن لا توجد إجابات على ذلك. كنت من بين المستخدمين الذين طرحوا هذه الأسئلة. وشرع في اكتشافها. لأنني حقًا كنت بحاجة إلى طريقة لإنشاء نصوص للروبوتات المالية. حتى يتمكنوا من التنبؤ ليس فقط بالقيم ، ولكن أيضًا التعليق عليها في النص ، بناءً على التقارير المالية. من حيث الجوهر ، سيكون نفس ما يفعله المحللون الماليون ، فقط باستخدام الذكاء الاصطناعي. هناك طريقتان لتشغيل yalm.
استئجار خادم في السحابةمع 200+ غيغابايت من ذاكرة الوصول العشوائي GPU أو إنهاء الكود وتشغيله باستخدام deepspeed zero offload (عندما تعالج وحدة معالجة الرسومات بشكل تسلسلي جزءًا من الشبكة العصبية ، ويتم تخزين الباقي في ذاكرة الوصول العشوائي CPU أو NVMe). الأول مكلف للغاية ، حوالي 2500 روبل في الساعة أو 1.7 مليون في الشهر. المجهول الثاني لأن لم يتم توفير الكود الموجود في المستودع ، فقط
تلميحات في مسألة المستودع ، وهو أمر ليس من الصعب القيام به. لنبدأ ببساطة.

تعليمات إطلاق YaLM 100B

1. نؤجر 200 غيغابايت من ذاكرة الوصول العشوائي GPU ، على سبيل المثال هنا .

الشبكة العصبية YaLM 100B عمليًا.

تحتاج إلى 200 غيغابايت على الأقل من إجمالي ذاكرة الفيديو. 8 × 40 = 320 جيجا بايت. هذا فقط يناسب. أقل من 200 أمر مستحيل ، والمزيد ممكن. يشير السهم إلى وحدة المعالجة المركزية RAM ، ونحن لا ننظر إليها. يمكنها أن تكون أي شخص.

نشير إلى قرص يبلغ حجمه حوالي 300 جيجا بايت ، بحيث يكون به قرص احتياطي ويفضل قرص سريع ، لأن. عشرات الجيجابايت من البيانات سيتم نقلها منها وإليها.

الشبكة العصبية YaLM 100B عمليًا.عند الإنشاء في المصادر ، حدد Ubuntu ML (التعلم الآلي). يعد هذا أمرًا إلزاميًا حتى يتم تكوين بطاقات الفيديو ولا يلزم تثبيت أي شيء بشكل إضافي.

بعد تنشيط الخادم (قد يستغرق الأمر من 5 إلى 10 دقائق) ، اتصل بالخادم عبر ssh أو مباشرة في وحدة تحكم الويب على صفحة الخادم وقم بتنفيذ الأمر.

نفيديا سمي

يجب أن تكون النتيجة جدولًا به بطاقات فيديو وإصدار برنامج تشغيل و cuda. تقريبا مثل هذا.
الشبكة العصبية YaLM 100B عمليًا.في رأس إصدار السائق وأين. على الجانب الأيسر توجد أرقام الجهاز ، وفي الوسط حجم ذاكرة الجهاز. إذا لم يكن لديك هذه المعلومات ، فهذا يعني أنك جمعت الخادم من مصدر خاطئ. مطلوب Ubuntu ML (Machine Learnong) ، كما هو موضح أعلاه.

2. استنساخ المستودع مع YaLM

sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm

استنساخ إلى مجلد منزلك حتى لا تضطر إلى تعديل تكوين عامل الإرساء بعد ذلك. إذا تم استنساخه في مكان آخر ،
فانتقل هنا وأضف المسار إلى المكان المستنسخ.

3. تنزيل نقاط التفتيش (معلومات التدريب النموذجية الأساسية)

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

سيستغرق هذا حوالي ساعة. من أجل عدم إضاعة الوقت دون جدوى ، نقوم بإنشاء اتصال ssh جديد وبالتوازي نبدأ في بناء حاوية عامل ميناء.

4. تثبيت nvidiadocker 2

عامل الإرساء العادي غير مناسب ،
هناك حاجة إلى nvidia-docker2 .
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. بناء حاوية لشركة YaLM

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

إنها أيضًا حوالي ساعة.

اختراق الحياة. يمكنك تنزيل نقاط التفتيش وتثبيت عامل الميناء وبناء حاوية على خادم رخيص باستخدام بطاقة فيديو واحدة. سيكون هو نفسه في الوقت المناسب ، حتى تتمكن من توفير القليل. بعد التجميع على خادم رخيص ، نحذفه ، وننشئ خادمًا قتاليًا باستخدام قرص من خادم رخيص. ثم لن تدفع أكثر من الوقت لانتظار التجميع وضخ نقاط التفتيش.

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. قم بتشغيل حاوية عامل الإرساء

كونك في مجلد yalm ، قم بتنفيذ الأمر

sudo bash ./docker/run.sh

إذا كان كل شيء على ما يرام ، فسيتم نقلك إلى حاوية تحتاج فيها إلى الانتقال إلى مجلد yalm في دليل منزلك.

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 بدون ذاكرة وصول عشوائي GPU بسعة 200 جيجا بايت؟

تحتاج إلى إضافة deepspeed zero offload إلى ملف config. بالنسبة لأولئك الذين يعرفون ما نتحدث عنه ، سيكون من السهل جدًا القيام بذلك. بالنسبة للآخرين ، هذه ليست مهمة تافهة على الإطلاق. من المهم معرفة أن إلغاء التحميل يمكن أن يكون إما في ذاكرة الوصول العشوائي CPU أو NVMe. يمكنك نسيان NVMe في الوقت الحالي ، لأن. تتم معالجة كمية كبيرة جدًا من البيانات ولا يستطيع القرص التعامل معها. وحدة المعالجة المركزية صفر تفريغ أكثر واقعية. صحيح ، لهذا يجب أن يكون لديك 200+ جيجابت من ذاكرة الوصول العشوائي في المخزن ، وهي أيضًا ليست رخيصة. وسيتم إنشاء نص واحد لحوالي 20-40 دقيقة ، حيث لم يكن من الممكن موازنته على بطاقتي فيديو. كما ترى في لقطة الشاشة أدناه ، تم استخدام بطاقة فيديو واحدة فقط في الجيل ، وبعد ذلك فقط لربع الذاكرة. يبقى أن نرى سبب عدم استخدام كل الـ 24 جيجابايت ،
الشبكة العصبية YaLM 100B عمليًا.حسنًا ، في الختام ، سأقول أنه من الممكن التشغيل حتى على RTX 3070 TI. لكن ليس هناك معنى خاص في هذا ، لأن. لن يسمح لك NVMe بمعالجة 150 غيغابايت من البيانات بسرعة في المبادلة ، الموجودة في ملحق 96 غيغابايت من ذاكرة الوصول العشوائي.
الشبكة العصبية YaLM 100B عمليًا.

تلخيص لما سبق

بالطبع ، سأظل أحاول العثور على مسارات الإطلاق المثلى. لكن حتى الآن توصلت إلى استنتاج مفاده أن YaLM 100b مكلف للغاية / بطيء جدًا بالنسبة لمهامي. لنفس المال ، سيكتب الناس أكثر وأفضل بكثير. لكن أعتقد أنه مؤقت ، سنرى. إذا كنت بحاجة إلى مساعدة في بدء تشغيل yalm أو إعداده أو ترغب في رؤية النتائج في أمثلة السياق الخاصة بك ، فاكتب إلى البريد أو البرقية.

pskucherov
Rate author
Add a comment

  1. Olha

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

    Reply
  2. Данила

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

    Reply
  3. Дмитрий

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

    Reply