ASC'18: المثابرة والتدريب المنتظم كوسيلة لتحقيق الهدف

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


img


المهام والتقدم في المرحلة التأهيلية


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


  1. تجميع تكوين الكتلة ووصف لماذا تم اختيار مكونات معينة.
  2. قياس أداء الكتلة مع Lynpak و HPCG. كان الفرق عن العام الماضي فقط في حقيقة أنه كان يجب تحسين Linpak في العام الماضي للمجموعة التي قدمها المنظمون مع معالجات Intel Xeon Phi ، وفي هذا - لأي مجموعة متاحة.
  3. تحسين Relion (برنامج للتعرف على الصور من المجهر الإلكتروني البارد) لبطاقات الفيديو.
  4. قم ببناء شبكة عصبية للاستجابة لعمليات البحث التي يقوم بها المستخدمون باستخدام إطار عمل CNTK ومجموعة بيانات MS MARCO .

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


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


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


التحضير للنهائيات وإيجاد كفيل


هتاف ، ذهبنا إلى النهائيات!


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


img


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


img


النهائي: اليوم الأول والثاني


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


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



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


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



مسلحين بالخبرة المكتسبة في التدريب ، قمنا بنشر نظام التشغيل والحزم الأخرى بشكل أسرع من التدريب - لا يمكن مقارنة أداء الخادم مع مجموعة التدريب لدينا. إحدى ميزات المسابقة هي عدم الوصول إلى الإنترنت من الخوادم ، لذلك قمنا بتنزيل المستودع مع الحزم مقدمًا وتسجيله على محركي أقراص USB أخذناهما معنا.


بعد إعداد المجموعة ، بدأ كل عضو في الفريق في إعداد واختبار تطبيقه للنظام الجديد ، وهنا كانت لدينا مفاجأة غير سارة. رفض إصدار Linpak ، الذي بقي منذ العام الأخير من المسابقة ، العمل بشكل صحيح على النظام الجديد. تثبيت إصدارات مختلفة من CUDA ، الفرز من خلال خيارات مختلفة وإعدادات النواة لم يعط التأثير المطلوب. ونتيجة لذلك ، قررنا إطلاق النسخة غير المحسنة المعتادة حتى لا نفقد نقاط المهمة. (يرجع ذلك إلى نظام التسجيل الجديد هذا العام: حتى إذا كانت نتيجتك هي الأفضل في السرعة أو الأداء ، ولكن الناتج غير صحيح ، فلن تتلقى سوى نصف الحد الأقصى للنقاط المحتملة. ويتم تسجيل النصف الثاني من النقاط للاستنتاج الصحيح.)


لفهم جوهر المشكلة ، يجدر إخبار ما هو Lynpack. يستخدم Lynpack لقياس أداء الحواسيب الفائقة ولجمع قائمة بأكثر 500 حاسب فائق قوة في العالم. إن أسهل طريقة للحصول على مكان مرتفع في هذه القائمة هي شراء مجموعة بها عدد كبير من بطاقات الفيديو (عدد المعالجات ليس مهمًا جدًا ، لأن 99٪ من المهمة تُعطى لبطاقة الفيديو). لكل مُسرع ، هناك إصدار مُحسَّن من Lynpak ، يتم إغلاق رمزه ، كقاعدة عامة. لا يمكن الحصول على الثنائي إلا إذا كان لديك جهاز كمبيوتر فائق يمكنه أن يحتل مكانًا في قائمة TOP500 ، أو إذا كنت تشارك في منافسة الكمبيوتر العملاق. على الرغم من ذلك ، لم يقدم منظمو المسابقة ثنائيًا ، كما رفض فرع NVIDIA الروسي القيام بذلك. في روسيا ، لا توجد مجموعات مع V100 يمكن إدراجها في قائمة TOP500 ، وبالتالي ، لم تنجح أيضًا عمليات البحث التي أجراها الزملاء المألوفون. كما أن الوضع غير مفهوم لأن حقيقة أن Linpak لا تستخدم في أي مكان باستثناء اختبار الأداء: لا في العلوم ولا في التكنولوجيا. إذا كنت ترغب في مساعدة الفريق ومعرفة كيفية الحصول على البرنامج الثمين ، فمرحباً بك في PM. حسنًا ، قمنا ، بعفويتنا المباشرة ، بتمييز هذه القصة بشريحة في العرض التقديمي النهائي ، والتي يمكننا إرضاء أعضاء لجنة التحكيم.


img


النهائي: اليوم الثالث


في اليوم الثالث من المسابقة ، كان ينتظرنا Linpak و HPCG و Relion والتطبيق السري ، وكان هذا اليوم هو الأصعب بالنسبة للفريق. بعد التعامل بسرعة مع Lynpak (انظر القسم السابق) و HPCG ، حصلنا على مهام العمل (إدخال البيانات) لتطبيق سري. اتضح أنه برنامج لحساب الديناميكيات الجزيئية لسيستا . كانت خيبة الأمل الأولى هي أنه في جزء من المهام ، أعطى Siesta خطأً في العنوان (على الرغم من حقيقة أنه مكتوب بلغة Fortran ، حيث لم يكن من السهل جدًا الحصول على مثل هذا الخطأ) ، ولم يكن من الممكن تصحيحه. ومع ذلك ، اكتسبت المهام المتبقية وفي نهاية اليوم نجحنا في اجتيازها.


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


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


النهائي: اليوم الرابع


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


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


النهائي: اليوم الخامس


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


بعد ساعات قليلة ، بدأ حفل توزيع الجوائز. كانت المشاعر مختلطة: من ناحية ، كان أداؤنا أفضل بكثير من العام الماضي ، من ناحية أخرى - كان من الممكن أن يكون أداؤنا أفضل لولا الأخطاء المزعجة في التطبيقات. ونتيجة لذلك ، على الرغم من حقيقة أن مجموعتنا لم تختلف في عدد كبير من بطاقات الفيديو ، نظرًا للعدد الكبير من العقد والمثابرة ، فقد تغلبنا على فرق أخرى في CFL3D ، والتي حصلنا على جائزة منفصلة في المسابقة. في الترتيب العام ، احتلنا المركز الحادي عشر من أصل عشرين فريقًا وصلوا إلى النهائي (ومن ثلاثمائة فريق شاركوا في المرحلة التمهيدية). كان البطل في التصنيف العام ، مثل العام الماضي ، هو جامعة شينخوا. بالنسبة لفريقنا ، كان هذا انتصارًا على أنفسنا: لقد حققنا أداءً أفضل من المرة الماضية ، وحصلنا على خبرة لا تقدر بثمن ، والتي سنستخدمها العام المقبل ، وهزمنا الآخرين في إحدى المهام.


img


الاستنتاجات والانطباعات العامة


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


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


خلال المسابقة ، يمكنك مقابلة أروع البرامج مفتوحة المصدر. البرامج التي يتم جمعها عن طريق نصوص مكتوبة غير مقروءة ، وبرامج تستخدم وظائف مكتبة معاد كتابتها بأخطاء ، وبرامج مكتوبة في فورتران بإدخالات C ، وبرامج ذات تبعيات مشفرة وأعلام تجميع. لا أتذكر برنامجًا واحدًا تم تجميعه في المرة الأولى أو تسبب في خطأ مفهوم أثناء التجميع. (مثال جديد: يحاول إصدار قديم من OpenMPI على أنظمة جديدة توصيل مكتبة باسم فارغ. لا يمكن حل المشكلة بشكل موثوق إلا عن طريق الاستبدال التلقائي في ملفات إنشاء تم إنشاؤها.) تعلمنا المنافسة ألا نفاجأ بأي شيء ونتغلب على الصعوبات. أريد أن أصدق أن الشخص الذي عمل مع مثل هذه البرامج لن يخلق شيئًا كهذا في حياته.


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


img


شكر وتقدير


لم تكن المشاركة في المسابقة ممكنة بدون راعينا Devexperts ( http://devexperts.com/ ). تكبدت الشركة تكلفة السفر الجوي إلى الصين.


img


انطباعات من الصين


كان بعض أعضاء الفريق في الصين للمرة الأولى ، مما تسبب في صدمة ثقافية طفيفة. يخبر أنطون.


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


كان من الصعب فراش.
الساموراي المكتئب.


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


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


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


img


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

Source: https://habr.com/ru/post/ar417917/


All Articles