DI-star: แพลตฟอร์มการฝึกอบรมแบบกระจาย AI ของเกมขนาดใหญ่ที่พัฒนาขึ้นเป็นพิเศษสำหรับ StarCraft II เราได้ฝึกฝน AI ปรมาจารย์แล้ว! โปรเจ็กต์นี้ประกอบด้วย:
เล่นโค้ดสาธิตและทดสอบ (ลองเล่นกับตัวแทนของเรา!)
เวอร์ชันแรกของตัวแทน SL และ RL ที่ผ่านการฝึกอบรมล่วงหน้า (เฉพาะ Zerg vs Zerg)
รหัสการฝึกอบรมการเรียนรู้แบบมีผู้สอนและการเรียนรู้แบบเสริมกำลัง (อัปเดตภายใน 31-01-2022)
ข้อมูลพื้นฐานการฝึกอบรมที่มีทรัพยากรจำกัด (พีซีหนึ่งเครื่อง) และคำแนะนำการฝึกอบรมที่นี่ (ใหม่! อัปเดต 2022-04-24)
ตัวแทนต่อสู้กับ Harstem (YouTube) (อัปเดตภายใน 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 >
บนวินโดวส์:
SC2PATH
เป็นตำแหน่งการติดตั้ง sc2git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
แนะนำให้ใช้ Pytorch เวอร์ชัน 1.7.1 และ CUDA ทำตามคำแนะนำจากเว็บไซต์อย่างเป็นทางการของ pytorch
หมายเหตุ: GPU จำเป็นสำหรับประสิทธิภาพที่ดีในการทดสอบเอเจนต์แบบเรียลไทม์ คุณยังสามารถใช้ pytorch โดยไม่ต้องใช้ cuda ได้ แต่ไม่รับประกันประสิทธิภาพเนื่องจากเวลาแฝงในการอนุมานบน cpu ตรวจสอบให้แน่ใจว่าคุณตั้งค่า SC2 ไว้ที่คุณภาพของภาพต่ำสุดก่อนการทดสอบ
ดับเบิลคลิกไฟล์ data/replays/replay_4.10.0.SC2Replay, StarCraftII เวอร์ชัน 4.10.0 จะถูกดาวน์โหลดโดยอัตโนมัติ
หมายเหตุ: เราฝึกโมเดลของเราด้วยเวอร์ชันตั้งแต่ 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
: การฝึกด้วยรีเพลย์ของมนุษย์ ทักษะเทียบเท่ากับผู้เล่นระดับ Diamondrl_model
: ใช้เป็นค่าเริ่มต้น, การฝึกด้วยการเรียนรู้แบบเสริมกำลัง, ทักษะเทียบเท่ากับปรมาจารย์หรือปรมาจารย์Abathur
: หนึ่งในรูปแบบการเรียนรู้แบบเสริมกำลัง ชอบเล่น mutaliskBrakk
: หนึ่งในโมเดลการเรียนรู้แบบเสริมกำลัง ชอบ lingbane rushDehaka
: หนึ่งในโมเดลการเรียนรู้แบบเสริมกำลัง ชอบเล่นแมลงสาบทำลายล้างZagara
: หนึ่งในโมเดลการเรียนรู้แบบเสริมกำลัง ชอบแมลงสาบวิ่งเร็ว ด้วยโมเดลที่กำหนด เราจะทำการทดสอบหลายครั้งกับตัวแทนของเรา
python -m distar.bin.play
มันรัน 2 อินสแตนซ์ StarCraftII อันแรกถูกควบคุมโดยตัวแทน RL ของเรา ผู้เล่นที่เป็นมนุษย์สามารถเล่นภาคสองแบบเต็มจอได้เหมือนเกมทั่วไป
บันทึก:
--cpu
หากคุณไม่มีสิ่งเหล่านี้--model1 <model_name>
python -m distar.bin.play --game_type agent_vs_agent
มันรัน 2 อินสแตนซ์ StarCraftII ที่ควบคุมโดย RL Agent ของเรา ระบุพาธโมเดลอื่นด้วยอาร์กิวเมนต์ --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
ตัวแทน RL เล่นกับบอทชั้นสูงในตัว
จำเป็นต้องสร้างเอเจนต์ที่แตกต่างกันภายในฐานโค้ดเดียวและยังสามารถทำให้พวกเขาเล่นกันเองได้ เราใช้สิ่งนี้โดยทำให้นักแสดงและสภาพแวดล้อมเป็นส่วนประกอบทั่วไป และรวมทุกอย่างที่เกี่ยวข้องกับเอเจนต์ไว้ในไดเร็กทอรีเดียว ตัวแทนที่เรียกว่า default ภายใต้ 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 >
นี่คือตัวอย่างการฝึกบนเครื่องที่มี GPU 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
หย่อน: ลิงค์
เซิร์ฟเวอร์ Discord: ลิงค์
@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