DI-star: Platform pelatihan terdistribusi AI game berskala besar yang dikembangkan khusus untuk StarCraft II. Kami telah melatih AI grand-master! Proyek ini berisi:
Mainkan demo dan uji kode (coba mainkan dengan agen kami!)
Versi pertama dari agen SL dan RL terlatih (hanya Zerg vs Zerg)
Kode pelatihan Supervised Learning dan Reinforcement Learning (diperbarui pada 31-01-2022)
Dasar pelatihan dengan sumber daya terbatas (satu PC) dan panduan pelatihan di sini (Baru! diperbarui 24-04-2022)
Agen bertarung dengan Harstem (YouTube) (diperbarui pada 01-04-2022)
Agen RL terlatih (WIP) yang lebih kuat
Menguji perangkat lunak pada Windows | 对战软件下载
Silakan bintangi kami (klik tombol di kanan atas halaman ini) untuk membantu agen DI-star berkembang lebih cepat :)
Persyaratan lingkungan:
Catatan: Tidak ada versi retail di Linux, silakan ikuti instruksi di sini
Tambahkan jalur instalasi SC2 ke variabel lingkungan SC2PATH
(lewati ini jika Anda menggunakan jalur instalasi default pada MacOS atau Windows, yaitu C:Program Files (x86)StarCraft II
atau /Applications/StarCraft II
):
Di MacOS atau Linux, masukkan ini di terminal:
export SC2PATH= < sc2/installation/path >
Di Windows:
SC2PATH
sebagai lokasi instalasi sc2.git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
Disarankan Pytorch Versi 1.7.1 dan CUDA, Ikuti instruksi dari situs resmi pytorch
Catatan: GPU diperlukan untuk kinerja yang layak dalam pengujian agen waktu nyata, Anda juga dapat menggunakan pytorch tanpa cuda, tetapi tidak ada jaminan kinerja karena latensi inferensi pada cpu. Pastikan Anda mengatur SC2 pada kualitas gambar terendah sebelum pengujian.
Klik dua kali file data/replays/replay_4.10.0.SC2Replay, StarCraftII versi 4.10.0 akan otomatis terdownload.
Catatan: Kami melatih model kami dengan versi dari 4.8.2 hingga 4.9.3. Patch 5.0.9 telah keluar pada 15 Maret 2022, Beberapa perubahan berdampak besar pada kinerja, jadi kami memperbaiki versi kami di 4.10.0 sebagai evaluasi.
python -m distar.bin.download_model --name rl_model
Catatan: Tentukan rl_model
atau sl_model
setelah --name
untuk mengunduh model pembelajaran penguatan atau model yang diawasi.
Daftar model:
sl_model
: berlatih dengan replay manusia, skill setara dengan pemain berlian.rl_model
: digunakan sebagai default, pelatihan dengan pembelajaran penguatan, keterampilan setara dengan master atau grandmaster.Abathur
: salah satu model pembelajaran penguatan, suka bermain mutalik.Brakk
: salah satu model pembelajaran penguatan, seperti lingbane rush.Dehaka
: salah satu model pembelajaran penguatan, suka bermain kecoa ravager.Zagara
: salah satu model pembelajaran penguatan, seperti roach rush. Dengan model yang diberikan, kami menyediakan beberapa tes dengan agen kami.
python -m distar.bin.play
Ini menjalankan 2 instance StarCraftII. Yang pertama dikendalikan oleh agen RL kami. Pemain manusia dapat memainkan game kedua dengan layar penuh seperti game normal.
Catatan:
--cpu
jika Anda tidak memilikinya.--model1 <model_name>
python -m distar.bin.play --game_type agent_vs_agent
Ini menjalankan 2 instance StarCraftII yang keduanya dikendalikan oleh Agen RL kami, tentukan jalur model lain dengan argumen --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
Agen RL bermain melawan bot elit bawaan.
Penting untuk membangun agen yang berbeda dalam satu basis kode dan tetap dapat membuat mereka bermain melawan satu sama lain. Kami menerapkan ini dengan menjadikan aktor dan lingkungan sebagai komponen umum dan meletakkan segala sesuatu yang berhubungan dengan agen ke dalam satu direktori. Agen yang disebut default di bawah distar/agen adalah contohnya. Setiap skrip secara default menggunakan impor relatif, yang menjadikannya portabel ke mana saja secara keseluruhan.
Jika Anda ingin membuat agen baru dengan/tanpa agen default kami, ikuti petunjuk di sini
Jika Anda ingin melatih agen baru dengan kerangka kerja kami, ikuti petunjuk di bawah dan berikut adalah panduan dengan detail lebih lanjut tentang keseluruhan alur pelatihan.
Klien StarCraftII diperlukan untuk decoding pemutaran ulang, ikuti instruksi di atas.
python -m distar.bin.sl_train --data < path >
jalur dapat berupa direktori dengan pemutaran ulang atau file yang menyertakan jalur pemutaran ulang di setiap baris.
Secara opsional, memisahkan decoding replay dan pelatihan model bisa lebih efisien, jalankan tiga skrip di terminal yang berbeda:
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 >
Untuk pelatihan terdistribusi:
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 >
Berikut contoh pelatihan pada mesin dengan 4 GPU dalam mode jarak jauh:
# 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 >
Pembelajaran penguatan akan menggunakan model terbimbing sebagai model awal, silakan unduh terlebih dahulu, klien StarCraftII juga diperlukan.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
Empat komponen digunakan untuk pelatihan RL, sama seperti pelatihan SL, komponen tersebut dapat dijalankan melalui proses yang berbeda:
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
Pelatihan terdistribusi juga didukung seperti pelatihan SL.
Kendur: tautan
Server perselisihan: tautan
@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 dirilis di bawah lisensi Apache 2.0.