DI-star: منصة تدريب واسعة النطاق موزعة بالذكاء الاصطناعي تم تطويرها خصيصًا للعبة StarCraft II. لقد قمنا بالفعل بتدريب الأستاذ الكبير في مجال الذكاء الاصطناعي! يحتوي هذا المشروع على:
قم بتشغيل العرض التوضيحي ورمز الاختبار (حاول اللعب مع وكيلنا!)
الإصدار الأول من وكيل SL وRL المدربين مسبقًا (فقط Zerg vs Zerg)
كود التدريب الخاص بالتعلم الخاضع للإشراف والتعلم المعزز (تم التحديث بتاريخ 31-01-2022)
خط الأساس للتدريب بموارد محدودة (جهاز كمبيوتر واحد) وإرشادات التدريب هنا (جديد! تم التحديث بتاريخ 24-04-2022)
قاتل العملاء مع هارستيم (يوتيوب) (تم التحديث بتاريخ 2022-04-01)
المزيد من وكلاء RL المدربين مسبقًا (WIP)
اختبار البرمجيات على نظام التشغيل Windows | لا داعي للقلق
يرجى تمييزنا بنجمة (انقر فوق الزر الموجود أعلى يمين هذه الصفحة) لمساعدة وكلاء DI-star على النمو بشكل أسرع :)
متطلبات البيئة:
ملاحظة: لا يوجد إصدار للبيع بالتجزئة على Linux، يرجى اتباع التعليمات هنا
أضف مسار تثبيت SC2 إلى متغيرات البيئة SC2PATH
(تخطي هذا إذا كنت تستخدم مسار التثبيت الافتراضي على MacOS أو Windows، وهو C:Program Files (x86)StarCraft II
أو /Applications/StarCraft II
):
على نظام التشغيل MacOS أو Linux، أدخل هذا في الوحدة الطرفية:
export SC2PATH= < sc2/installation/path >
على نظام التشغيل Windows:
SC2PATH
كموقع تثبيت sc2.git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
يوصى باستخدام إصدار Pytorch 1.7.1 وCUDA، اتبع التعليمات من موقع pytorch الرسمي
ملحوظة: وحدة معالجة الرسومات ضرورية للحصول على أداء لائق في اختبار الوكيل في الوقت الفعلي، ويمكنك أيضًا استخدام pytorch بدون cuda، ولكن لا يوجد أداء مضمون بسبب زمن الوصول الاستدلالي على وحدة المعالجة المركزية. تأكد من ضبط SC2 على أدنى جودة للصورة قبل الاختبار.
انقر نقرًا مزدوجًا فوق الملف data/replays/replay_4.10.0.SC2Replay، وسيتم تنزيل الإصدار 4.10.0 من StarCraftII تلقائيًا.
ملحوظة: قمنا بتدريب نماذجنا على الإصدارات من 4.8.2 إلى 4.9.3. تم طرح التصحيح 5.0.9 في 15 مارس 2022. بعض التغييرات لها تأثير كبير على الأداء، لذلك قمنا بإصلاح الإصدار الخاص بنا عند 4.10.0 قيد التقييم.
python -m distar.bin.download_model --name rl_model
ملاحظة: حدد rl_model
أو sl_model
بعد --name
لتنزيل نموذج التعلم المعزز أو النموذج الخاضع للإشراف.
قائمة النماذج:
sl_model
: التدريب بالإعادة البشرية، المهارة تعادل اللاعبين الماسيين.rl_model
: يستخدم كإعداد افتراضي، والتدريب مع التعلم المعزز، والمهارة تساوي الماجستير أو المعلم الكبير.Abathur
: أحد نماذج التعلم المعزز، يحب لعب الماتاليسك.Brakk
: أحد نماذج التعلم المعزز، يحب lingbane Rush.Dehaka
: أحد نماذج التعلم المعزز، يحب لعب لعبة روتش رافاجر.Zagara
: أحد نماذج التعلم المعزز، يحب اندفاع الصراصير. مع النموذج المحدد، نقدم اختبارات متعددة مع وكيلنا.
python -m distar.bin.play
يتم تشغيل حالتين من StarCraftII. يتم التحكم في الأول بواسطة وكيل RL الخاص بنا. يمكن للاعب البشري اللعب في اللعبة الثانية بملء الشاشة مثل اللعبة العادية.
ملحوظة:
--cpu
إذا لم يكن لديك هذه.--model1 <model_name>
python -m distar.bin.play --game_type agent_vs_agent
يتم تشغيل مثيلين من StarCraftII يتحكم فيهما وكيل RL الخاص بنا، ويحدد مسار نموذج آخر باستخدام الوسيطة --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
يلعب وكيل RL ضد روبوت النخبة المدمج.
من الضروري بناء عملاء مختلفين ضمن قاعدة رموز واحدة مع الاستمرار في جعلهم يلعبون ضد بعضهم البعض. نقوم بتنفيذ ذلك من خلال جعل الممثل والبيئة مكونين مشتركين ووضع كل ما يتعلق بالوكيل في دليل واحد. الوكيل المسمى الافتراضي ضمن distar/agent هو مثال على ذلك. يستخدم كل برنامج نصي افتراضيًا استيرادًا نسبيًا، مما يجعله قابلاً للنقل إلى أي مكان كجزء كامل.
إذا كنت تريد إنشاء وكيل جديد مع/بدون وكيلنا الافتراضي، فاتبع التعليمات هنا
إذا كنت ترغب في تدريب وكيل جديد باستخدام إطار العمل الخاص بنا، فاتبع التعليمات الموضحة أدناه وإليك إرشادات تحتوي على مزيد من التفاصيل حول مسار التدريب بالكامل.
مطلوب عميل StarCraftII لإعادة فك التشفير، اتبع التعليمات المذكورة أعلاه.
python -m distar.bin.sl_train --data < path >
يمكن أن يكون المسار إما دليلاً يحتوي على عمليات إعادة تشغيل أو يتضمن ملفًا مسار إعادة تشغيل في كل سطر.
اختياريًا، يمكن أن يكون الفصل بين فك تشفير إعادة التشغيل والتدريب على النماذج أكثر كفاءة، وتشغيل البرامج النصية الثلاثة في محطات طرفية مختلفة:
python -m distar.bin.sl_train --type coordinator
python -m distar.bin.sl_train --type learner --remote
python -m distar.bin.sl_train --type replay_actor --data < path >
للتدريب الموزع:
python -m distar.bin.sl_train --init_method < init_method > --rank < rank > --world_size < world_size >
or
python -m distar.bin.sl_train --type coordinator
python -m distar.bin.sl_train --type learner --remote --init_method < init_method > --rank < rank > --world_size < world_size >
python -m distar.bin.sl_train --type replay_actor --data < path >
فيما يلي مثال للتدريب على جهاز به 4 وحدات معالجة رسومات في الوضع البعيد:
# Run the following scripts in different terminals (windows).
python -m distar.bin.sl_train --type coordinator
# Assume 4 GPUs are on the same machine.
# If your GPUs are on different machines, you need to configure the init_mehod's IP for each machine.
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 0 --world_size 4
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 1 --world_size 4
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 2 --world_size 4
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 3 --world_size 4
python -m distar.bin.sl_train --type replay_actor --data < path >
سيستخدم التعلم المعزز النموذج الخاضع للإشراف كنموذج أولي، برجاء تنزيله أولاً، ويلزم أيضًا استخدام عميل StarCraftII.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
يتم استخدام أربعة مكونات لتدريب RL، تمامًا مثل تدريب SL، ويمكن تنفيذها من خلال عمليات مختلفة:
python -m distar.bin.rl_train --type league --task selfplay
python -m distar.bin.rl_train --type coordinator
python -m distar.bin.rl_train --type learner
python -m distar.bin.rl_train --type actor
يتم أيضًا دعم التدريب الموزع مثل تدريب SL.
الركود: الرابط
سيرفر الديسكورد : الرابط
@misc{distar,
title={DI-star: An Open-sourse Reinforcement Learning Framework for StarCraftII},
author={DI-star Contributors},
publisher = {GitHub},
howpublished = { url {https://github.com/opendilab/DI-star}},
year={2021},
}
تم إصدار DI-star بموجب ترخيص Apache 2.0.