playchesscoach على lichess: مشاهدة | الإحصائيات | التحدي (1+0 أو 0+1 حتى 15+10)
Chesscoach هو محرك شطرنج قائم على الشبكة العصبية قادر على التعليق الطبيعي. إنه يلعب لعبة الشطرنج بتصنيف حوالي 3450 ELO ، مما يعني أنه يجب أن يتغلب عادةً على أقوى اللاعبين البشريين في 2850 ELO ، والعديد من المحركات الأخرى ، ولكن غالبًا ما تخسر إلى أقوى ، مثل Stockfish 14 في 3550 ELO.
كما هو الحال مع جميع المحركات ، يعتمد Chesscoach على فحص ملايين مواقع الشطرنج لاتخاذ قرار بشأن أفضل خطوة للعب. يستخدم شبكة عصبية كبيرة وبطيئة تمامًا مثل Alphazero أو Leela Chess Zero (LC0) لتقييم كل موقف ، على عكس المحركات الكلاسيكية التي تهدف إلى السرعة مع تقييم أبسط بكثير ، أو محركات NNUE الحديثة ، والتي تعد مزيجًا أقوى من كلا الطريقين.
يتم تدريب الشبكة العصبية في صميم المحرك من خلال اللعب ضد نفسه ، وذلك باستخدام دورة التغذية المرتدة للبدء من المعرفة تقريبًا - فقط قواعد الشطرنج - وتعلم طرقًا جديدة للتغلب على نفسها لأنها تزداد قوة. تتيح تقييمات الشبكة العصبية الأقوى للبحث بشكل أفضل ، واتركها نتائج بحث أقوى لتدريب تقييم الشبكة العصبية بشكل أكثر فعالية.
يمكن لـ Chesscoach أيضًا إطعام معرفتها الشطرنج في شبكة عصبية إضافية للتعليق على التحركات والمواقف باللغة الإنجليزية. إنها ليست ثاقبة للغاية وغالبًا ما تكون خاطئة ولكنها تظهر بعض الوعد بالبيانات المحدودة التي تمكنت من التدريب عليها.
بدأت في تطوير Chesscoach كمشروع من شهرين إلى ثلاثة أشهر لمعرفة ما إذا كنت أحب التعلم الآلي وانتهى بي الأمر بأخذ الأمور أبعد مما كنت أتوقع. كان للخطة الأصلية ثلاثة أهداف طموحة بشكل مفرط: تكرار محرك صغير يشبه ألفازيرو ، مضيفًا تعليقًا طبيعيًا على دورة التغذية المرتدة ، وجعل درجة من التدريب ممكنًا على محطة عمل GPU واحدة.
بعد ما يزيد قليلاً عن عام من التطوير ، لا يمكنني المطالبة بأي تقدم تقريبًا في أساليب التدريب. ومع ذلك ، أنا سعيد بالتعليق الذي ينتجه Chesscoach ، كل الأشياء التي تم النظر فيها ، وفاجأت بالقوة النهائية للمحرك.
لقد كنت محظوظًا بمتاحة الكثير من الموارد العامة ، بما في ذلك الحساب السحابي المجاني والورق والمناقشات والبيانات المتاحة بحرية. أنا أيضًا ممتن جدًا لعدد من الأشخاص الذين ساعدوا في توضيحات ومناقشات مهمة وتصحيح الأخطاء.
يشبه محرك الشطرنج في صميم Chesscoach مشابه جدًا لمحرك Alphazero (Silver et al. ، 2018) أو LC0 (Linscott & Pascutto ، 2018) ، في هيكل الشبكة العصبية ، وجدول التدريب والخوارزمية البحثية ، ولكن مع نهج عملي ، من خلال الضرورة ، وتفتقر إلى عرض وعمق المواهب البحثية في فريق أكبر. ومع ذلك ، آمل أن تكون هناك بعض الأفكار الجديدة التي يمكن أن تكون مفيدة في مكان آخر.
إن مقال التعليقات الطبيعية باللغة الطبيعية يشبه إلى حد كبير عمل تعلم توليد تعليق متحرك على حدة لألعاب الشطرنج من بيانات المنتدى الاجتماعي على نطاق واسع (Jhamtani ، Gangal ، Hovy ، Neubig & Berg-Kirkpatrick ، 2018) ومعلقًا آليًا مدعومًا بمحرك الشطرنج العصبي (Zang ، وإن كان مع بنية أكثر بساطة.
تم تصميم Chesscoach ليكون الحد الأدنى إلى حد ما ومحمولة. يعمل على وحدات معالجة Linux و Windows ويدعم وحدات معالجة GPU واحدة و GPU متعددة وموتر (TPUs). الكود الموجهة للأداء موجود في C ++ (خطوط 10.5 كيلو) ورمز الشبكة العصبية في بيثون (خطوط 3.7 كيلو متر) ، والاعتماد على Tensorflow 2. يتم استخدام رمز أسماك الأوراق المالية لإدارة الموضع ، والتوليد الناتج ، والتحقيق في قاعدة الجدول النهائية ، ولكن ليس للبحث أو التقييم. تم إنشاء بيانات التدريب الذاتي للتشغيل بالكامل في مشروع Chesscoach ، بعد جدول Alphazero البالغ 44 مليون لعبة و 700000 مجموعة تدريب تضم 4،096 وظيفة لكل منهما.
تم دمج بعض الأفكار التي تتجاوز ألفازيرو ولكنها موجودة في الأدب والمشاريع مثل Katago (Wu ، 2020) و LC0 (غالبًا ما اعتقدت أنني كنت أحاول شيئًا جديدًا ، لكن اتضح أن الأشخاص الأذكياء في LC0 قد جربوا كل شيء تقريبًا). وتشمل هذه الرغبة في الاستكشاف ، والتحقيق في قاعدة نهاية المطاف ، والحد الأدنى للألعاب النهائية ، ومتوسط الوزن العشوائي (SWA) ، ومتوسطات الحركة الموزونة بشكل كبير (EWMA) ، ومختلف حوافز الاستكشاف ، والتنبؤ بالتنبؤ ، وأهداف التدريب المساعد ، وتقطير المعرفة.
أعتقد أن بعض الأفكار جديدة. الأول هو طريقة البحث التي تهدف إلى تجنب الفخاخ التكتيكية وتقليل الأسف البسيط من خلال الاستكشاف الخطي والانكماش الانتقائي ، المطبقة عن طريق القضاء-البنية. والثاني هو بنية عصبية بسيطة للتعليق باللغة الطبيعية على المواقف والتحركات بالتزامن مع تطبيق معجول لأخذ العينات النووية (TOP-P) يركز على صحة مع خلاف-أخذ العينات الطمعية.
النتيجة هي مجموعة من الأدوات للعب الشطرنج ، وتدريب الشبكات العصبية ، وتحسين المعلمات ، وقوة الاختبار ، وبيانات التدريب على العملية ، وعرض وبيانات تدريب التصحيح ، وتنظيم بيانات التدريب ، واختبار الوحدة ، والتنسيق. لإنهاء المشروع ، يتم إعداد روبوت على https://lichess.org/@/playchesscoach للعب الألعاب ضد المنافسين والروبوتات الأخرى ، وتقديم التعليقات للمتفرجين.
على طراز أحدث طراز V3-8 Cloud TPU VM:
gui قبل البحث.توجد بعض الملفات الرئيسية في الجذر ، بما في ذلك config.toml الذي يقود معظم الأدوات ويتم قراءته من رمز C ++ ورمز Python. يحدد Meson.Build بناء Linux ، و CPP/Chesscoach.sln و CPP/**/*. تقوم SETUP.SH/.CMD و Build.sh/.CMD برامج النصوص أتمتة الإعداد والبناء ، على الرغم من أنه يمكن أن تكون هناك حاجة إلى خطوات إضافية. حدد Dockerfiles في الجذر الصور لكل دور عامل الكتلة ، و Docker-*.
في دليل الكتلة ، تقوم ملفات .sh/.yaml بإدارة مجموعات Kubernetes على TPUs ذات الطراز الأقدم ، في حين أن PY/alpha.py تدير مجموعات على VMS Cloud TPU الأحدث.
يحتوي دليل CPP على رمز C ++ ، معظمه في CPP/Chesscoach. رمز Chesscoach C ++ موجه بشكل أساسي للأداء. تشمل مكتبات الطرف الثالث CPP/CRC32C ، CPP/Hunspell ، CPP/Numpy ، CPP/Protobuf-3.13.0 ، CPP/STOCHFISH ، CPP/TCLAP ، CPP/TOML11 و CPP/ZLIB. تتضمن بيانات الجهات الخارجية CPP/Dancories و CPP/StrengthTests. يتم تثبيت مكتبات C ++ الجهات الخارجية الإضافية باستخدام أداة الحزمة المتقدمة (APT) واكتشفها نظام بناء Meson على Linux ، وتم تثبيته واكتشافه باستخدام Nuget على Windows. يتم إنشاء مكتبة CPP/Protobuf باستخدام أداة Protoc و CPP/Protobuf/Chesscoach.proto.
يحتوي دليل PY على رمز Python ، يتم الوصول إليه الأساسي من خلال Network.py من C ++ ، ولكن أيضًا بعض أدوات البرنامج النصي المستقل. يهتم رمز Chesscoach Python بشكل أساسي بالشبكة العصبية والتخزين السحابي. يتم تثبيت مكتبات بيثون الطرف الثالث الإضافي باستخدام PIP.
يحتوي دليل JS على واجهة المستخدم الرسومية Debug المستخدمة في Chesscoachgui و Chesscoachuci ، ويعتمد على الشطرنج.
يحتوي دليل الأدوات على CuteChess-Cli و Bayeselo لتشغيل البطولات وحساب تقييمات ELO للمشاركين ، وكذلك محرك أسماك البورصة 13 ليكون بمثابة خصم.
يحتوي دليل البرامج النصية على البرامج النصية والراحة الظرفية المختلفة.
يحتوي دليل المستندات على توثيق ودعم الأصول.
بعد التثبيت ، يحدد Chesscoach بيانات ثابتة على/usr/local/share/chesscoach على Linux وجانب الثنائي في Windows. يحدد موقع البيانات الديناميكية على $ {xdg_data_home}/chesscoach ، أو فشل ذلك ، في ~/.local/share/chesscoach على linux ، ونسبة ٪ localappdata ٪/chesscoach على windows. يمكن أيضًا وضع البيانات الديناميكية في تخزين Google Cloud ؛ على سبيل المثال ، GS: // chesscoach-eu/chesscoach.
إذا كان يعمل على Google Cloud ، فيمكنه تبسيط إعداد GPU لاستخدام صورة قرص تعليمية عميقة تم إنشاؤها مسبقًا مع CUDA 11.
./setup.sh (قد يستغرق الأمر 30 دقيقة لبناء protobuf من المصدر).pip3 install -r requirements-all.txt .sudo ./build.sh release install ../setup.sh (قد يستغرق الأمر 30 دقيقة لبناء protobuf من المصدر).pip3 install -r requirements-all.txt .sudo ./build.sh release install ../setup.sh (قد يستغرق الأمر 30 دقيقة لبناء protobuf من المصدر).pip3 install tf-models-official==2.5.0 (هذا يتساقط TF-Nightly المثبت مسبقًا).pip3 uninstall tensorflow tf-slim tf-nightly .--force-reinstall .sudo ./build.sh release install .conda activate chesscoach ، ولكن لا بأس إذا فشل هذا عند عدم استخدام بيئة افتراضية.setup.cmd (هذا يعين chesscoach_pythonhome بعد تشغيل activate_virtual_env.cmd).build.cmd .يعتمد Chesscoach على البيانات المثبتة على $ {xdg_data_home}/chesscoach ، أو فشل ذلك ، في ~/.local/share/chesscoach على Linux ، و ٪ localappdata ٪/chesscoach على Windows.
تثبيت أوزان الشبكة العصبية. هذا يتطلب تنزيل 372 MIB و 406 MIB Disk Space.
scripts/download_install_data.sh .scripts/download_install_data.cmd .اختياريا ، قم بتثبيت قواعد الطاولة syzygy endgame. تستغرق ملفات 3-4-5 قطعًا تقريبًا GIB ، وتستغرق الملفات مقابل 3-4-5 + 6 حوالي 150 GIB. عملية التثبيت تقنية إلى حد ما.
في وضع التخزين السحابي ، يتم تكرار جداول Syzygy تلقائيًا إلى التخزين المحلي عند الإطلاق.
تقوم برامج النصوص البرمجية/ramdisk_syzygy6.sh بإعداد قرص ذاكرة الوصول العشوائي على آلات مثل Cloud Cloud TPU VMs الجديدة لاستضافة الجداول 3-4-5 + 6 قطع ، عندما تكون الذاكرة عالية ولكن مساحة القرص منخفضة. عند استخدام قرص ، من الأفضل وضع هذه الجداول على SSD للحفاظ على سرعة البحث. يستخدم البرامج النصية/Ramdisk_syzygy6.sh المسار .../chesscoach/syzygy6 ، بالاعتماد على تغيير التكوين في config.toml ، ولكن .../chesscoach/syzygy يمكن استخدامه بدلاً من ذلك.
export PROJECT_ID=<your Google Cloud project ID> .إذا كنت تستخدم alpha.py (هذا الجزء فوضوي بشكل خاص):
cluster/cluster-prep-creds.sh لإنشاء حساب خدمة وملف مفتاح.gsutil cp .يحتوي قسم التدريب والتشغيل الذاتي الموزع في التفسير الفني على مزيد من المعلومات حول إدارة المجموعات ذات الطراز الأقدم والأحدث.
تعتمد معظم برامج Chesscoach على config.toml المدمج والمثبت. من المهم بشكل خاص تعيين معلمة Search_Threads عند تشغيل chesscoachuci ، إما عبر config.toml في وقت الإنشاء أو خيار UCI في وقت التشغيل ، لتجنب الجوعية من جدولة التنبؤ غير العادلة.
يمكن تحميل ثنائي Chesscoachuci كمحرك UCI في مختلف GUIs للشطرنج.
ومع ذلك ، عند استخدام بيئة افتراضية للبيثون ، قد يكون من الضروري إما:
يوفر Chesscoachuci أوامر مخصصة بالإضافة إلى أدوات بروتوكول UCI:
comment تعليقًا طبيعيًا للمنصب الحالي والخطوة الأخيرة التي لعبت. من الأفضل توفير تاريخ التحرك الكامل مع position startpos moves … أمر.gui بتصحيح Debug GUI عند بدء البحث (كما هو موضح في الشكل 9 في التفسير عالي المستوى).~ puct [moves …] [csv] يعرض بيانات GUI Debug في نموذج النص.~ fen الموضع الحالي في تدوين Forsyth - Edwards (FEN).للعب الذاتي والتدريب ، راجع عملية التشغيل الذاتي والتدريب في وثيقة البيانات.
بالنسبة للمرافق الأخرى المدرجة في البرامج ، ابحث عن التعليقات في config.toml لتوجيهات التكوين. العديد من المرافق تدعم حجة --help . يمكن أن تظهر محتويات البرامج النصية في دليل البرامج النصية أمثلة. عند استخدام بيئة افتراضية لـ Python ، قد تحتاج إلى تنشيطها قبل تشغيل المرافق ، على الرغم من أن بعضها لا يعتمد على Python.
قم بتشغيل build/gcc/debug/ChessCoachTest أو build/gcc/release/ChessCoachTest .
قم بتشغيل activate_virtual_env.cmd ثم cpp/x64/Debug/ChessCoachTest.exe أو cpp/x64/Release/ChessCoachTest.exe .
يمكنك أيضًا تشغيل/تصحيح مشروع ChesscoAchtest داخل Visual Studio ، أو استخدام واجهة Test Explorer داخل Visual Studio.
كان برنامج Google TPU Research Cloud (TRC) سخيًا بشكل استثنائي مع موارد الحوسبة التي جعلت هذا المشروع ممكنًا ، وأشكر جوناثان كاتون على وجه الخصوص على تحقيق الأشياء.
أنا أقدر تقديريًا جدًا لفريق Google Cloud TPU لاستخدام Cloud TPU VMS ، وخاصة مايكل بانفيلد للمساعدة الهندسية في جميع أنحاء ألفا للتكنولوجيا الجديدة.
أشكر خالصًا كارلسون فانشميدت (جامعة بادربورن) ، التي كانت أدوات ضبط الشطرنج وتنفيذ بايز-سكيوبت ، والمشورة بشأن تحسين بايزي لا تقدر بثمن في تعزيز محرك تشيسكواش.
أنا ممتن جدًا لماثيو لاي (DeepMind) لتوفير توضيحات مهمة على ورقة Alphazero.
أقدم بفضل بيير دي وولف لتوفير اعتمادات البحث ل DragingBee لتمكين التدريب على التعليقات الطبيعية في Chesscoach.
شكرًا لك على Ted Li على الأفكار والمناقشات القيمة في بداية المشروع.
شكرًا لك على Freya Wilcox للمساعدة في النماذج الأولية للمخطط.
وشكر خاص لجاري بوتنر ولينيل رافتون لتحريرها وتصحيحها ودعمها.
يتم إصدار Chesscoach بموجب ترخيص GPLV3 أو الأحدث.
كريس بوتنر ، [email protected]