5 รูปแบบที่มีอยู่ เลย์เอาต์ใหม่นั้นง่ายต่อการฮาร์ดโค้ดหรือสร้างโดยทางโปรแกรม
Overcooked-AI เป็นสภาพแวดล้อมมาตรฐานสำหรับการปฏิบัติงานของมนุษย์และ AI ที่ให้ความร่วมมืออย่างเต็มที่ โดยอิงจากวิดีโอเกม Overcooked ที่ได้รับความนิยมอย่างล้นหลาม
เป้าหมายของเกมคือการส่งซุปให้เร็วที่สุด ซุปแต่ละชนิดต้องใส่ส่วนผสมถึง 3 อย่างในหม้อ รอให้ซุปสุก จากนั้นให้เจ้าหน้าที่หยิบซุปและส่งไป เจ้าหน้าที่ควรแบ่งงานทันทีและประสานงานอย่างมีประสิทธิภาพเพื่อให้ได้รับรางวัลสูง
คุณสามารถ ลองเล่นเกมได้ที่นี่ (เล่นกับตัวแทน DRL ที่ผ่านการฝึกอบรมมาก่อนหน้านี้) หากต้องการเล่นกับตัวแทนที่ได้รับการฝึกอบรมของคุณเองโดยใช้อินเทอร์เฟซนี้ หรือเพื่อรวบรวมข้อมูลของมนุษย์-AI หรือมนุษย์-มนุษย์เพิ่มเติม คุณสามารถใช้โค้ดได้ที่นี่ คุณสามารถค้นหาข้อมูลการเล่นเกมของมนุษย์และมนุษย์และ AI ที่รวบรวมไว้แล้วได้ที่นี่
การใช้งาน DRL ที่เข้ากันได้กับสภาพแวดล้อมจะรวมอยู่ใน repo ในรูปแบบโมดูลย่อยภายใต้ src/human_aware_rl
human_aware_rl แบบเก่ากำลังเลิกใช้งานแล้ว และควรใช้เพื่อสร้างผลลัพธ์ซ้ำในรายงานปี 2019: On the Utility of Learning about Humans for Human-AI Coordination (โปรดดูบล็อกโพสต์ของเราด้วย)
สำหรับการใช้งานสภาพแวดล้อมอย่างง่าย การพิจารณาใช้ Wrapper สภาพแวดล้อมนี้ถือว่าคุ้มค่า
คุณสามารถติดตั้งไฟล์ล้อที่คอมไพล์ไว้ล่วงหน้าได้โดยใช้ pip
pip install overcooked-ai
โปรดทราบว่าการเผยแพร่ PyPI นั้นเสถียรแต่ไม่บ่อยนัก สำหรับคุณสมบัติการพัฒนาที่ทันสมัยที่สุด ให้สร้างจากแหล่งที่มาด้วย pip install -e .
-
มีประโยชน์ในการตั้งค่าสภาพแวดล้อม conda ด้วย Python 3.7 (virtualenv ก็ใช้งานได้เช่นกัน):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
โคลน repo
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
สุดท้าย ใช้เครื่องมือตั้งค่าหลามเพื่อติดตั้งในเครื่อง
หากคุณเพียงต้องการใช้สภาพแวดล้อม:
pip install -e .
หากคุณต้องการการใช้งาน DRL ด้วย (คุณอาจต้องป้อนข้อมูลนี้ในเทอร์มินัลของคุณเป็น pip install -e '.[harl]'
):
pip install -e .[harl]
เมื่อสร้างจากแหล่งที่มา คุณสามารถตรวจสอบการติดตั้งได้โดยการรันชุดทดสอบหน่วย Overcooked คำสั่งต่อไปนี้ควรรันจากไดเร็กทอรีรากของโปรเจ็กต์ overcooked_ai
:
python testing/overcooked_test.py
หากต้องการตรวจสอบว่าติดตั้ง humam_aware_rl
อย่างถูกต้องหรือไม่ คุณสามารถรันคำสั่งต่อไปนี้จากไดเร็กทอรี src/human_aware_rl
:
$ ./run_tests.sh
สิ่งนี้จะทำการทดสอบทั้งหมดที่เป็นของโมดูล human_aware_rl คุณสามารถตรวจสอบ README ในโมดูลย่อยเพื่อดูคำแนะนำในการรันการทดสอบเฉพาะเป้าหมาย ซึ่งสามารถเริ่มต้นได้จากไดเร็กทอรีใดก็ได้
หากคุณกำลังคิดที่จะใช้โค้ดการวางแผนอย่างกว้างขวาง คุณควรเรียกใช้ชุดการทดสอบเต็มรูปแบบที่จะตรวจสอบเครื่องมือเสริมที่ปรุงสุกทั้งหมด (อาจใช้เวลา 5-10 นาที):
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
ประกอบด้วย:
mdp/
:
overcooked_mdp.py
: ตรรกะของเกม Overcooked หลักovercooked_env.py
: คลาสสภาพแวดล้อมที่สร้างขึ้นบน Overcooked mdplayout_generator.py
: ฟังก์ชั่นเพื่อสร้างเลย์เอาต์แบบสุ่มโดยทางโปรแกรม agents/
:
agent.py
: ตำแหน่งของคลาสตัวแทนbenchmarking.py
: วิถีตัวอย่างของตัวแทน (ทั้งที่ผ่านการฝึกอบรมและนักวางแผน) และโหลดโมเดลต่างๆ planning/
:
planners.py
: ตรรกะการวางแผนตัวแทนที่เกือบจะเหมาะสมที่สุดsearch.py
: การค้นหา A* และตรรกะเส้นทางที่สั้นที่สุด human_aware_rl
ประกอบด้วย:
ppo/
:
ppo_rllib.py
: โมดูลหลักที่มีโค้ดสำหรับการฝึกอบรมตัวแทน PPO อยู่ ซึ่งรวมถึง wrapper ที่เข้ากันได้กับ rllib บน OvercookedEnv
ยูทิลิตี้สำหรับการแปลงคลาส rllib Policy
เป็น Overcooked Agent
รวมถึงฟังก์ชันยูทิลิตี้และการเรียกกลับppo_rllib_client.py
สำหรับการกำหนดค่าและการเปิดใช้งานการฝึกอบรมตัวแทน รายละเอียดเพิ่มเติมเกี่ยวกับการใช้งานด้านล่างppo_rllib_from_params_client.py
: ฝึกเอเจนต์หนึ่งตัวด้วย PPO ใน Overcooked ด้วยตัวแปร MDPppo_rllib_test.py
การทดสอบความสามารถในการทำซ้ำสำหรับการตรวจสอบสุขภาพในพื้นที่run_experiments.sh
สำหรับการฝึกอบรมตัวแทนใน 5 เค้าโครงคลาสสิกtrained_example/
โมเดลที่ได้รับการฝึกไว้ล่วงหน้าเพื่อการทดสอบ rllib/
:
rllib.py
: เอเจนต์ rllib และเครื่องมือการฝึกอบรมที่ใช้ Overcooked APIutils.py
: utils สำหรับข้างต้นtests.py
: การทดสอบเบื้องต้นสำหรับข้างต้น imitation/
:
behavior_cloning_tf2.py
: โมดูลสำหรับการฝึก บันทึก และการโหลดโมเดล BCbehavior_cloning_tf2_test.py
: ประกอบด้วยการทดสอบความสามารถในการทำซ้ำขั้นพื้นฐาน รวมถึงการทดสอบหน่วยสำหรับส่วนประกอบต่างๆ ของโมดูล bc human/
:
process_data.py
เพื่อประมวลผลข้อมูลมนุษย์ในรูปแบบเฉพาะที่จะใช้โดยอัลกอริทึม DRLdata_processing_utils.py
utils สำหรับข้างต้น utils.py
: utils สำหรับ repo
overcooked_demo
ประกอบด้วย:
server/
:
app.py
: แอป Flaskgame.py
: ตรรกะหลักของเกม การเปลี่ยนสถานะได้รับการจัดการโดยวัตถุ Overcooked.Gridworld ที่ฝังอยู่ในสภาพแวดล้อมของเกมmove_agents.py
: สคริปต์ที่ทำให้การคัดลอกจุดตรวจสอบไปยังไดเร็กทอรีตัวแทนง่ายขึ้น คำแนะนำวิธีใช้สามารถพบได้ในไฟล์หรือโดยการรัน python move_agents.py -h
up.sh
: เชลล์สคริปต์เพื่อหมุนเซิร์ฟเวอร์ Docker ที่โฮสต์เกม
ดู Google Colab นี้สำหรับโค้ดตัวอย่างสำหรับการแสดงภาพวิถีในหลาม
เราได้รวมสมุดบันทึกที่จะแนะนำผู้ใช้เกี่ยวกับกระบวนการฝึกอบรม การบรรทุก และการประเมินตัวแทน ตามหลักการแล้ว เราต้องการให้ผู้ใช้สามารถรันโน้ตบุ๊กใน Google Colab ได้ อย่างไรก็ตาม เนื่องจากเคอร์เนลเริ่มต้นของ Colab คือ Python 3.10 และที่เก็บของเราได้รับการปรับให้เหมาะกับ Python 3.7 ฟังก์ชันบางอย่างจึงเข้ากันไม่ได้กับ Colab ในปัจจุบัน เพื่อมอบประสบการณ์ที่ราบรื่น เราได้ดำเนินการเซลล์ทั้งหมดในสมุดบันทึกไว้ล่วงหน้า เพื่อให้คุณสามารถดูผลลัพธ์ที่คาดหวังได้เมื่อเรียกใช้งานในเครื่องตามการตั้งค่าที่เหมาะสม
Overcooked_demo ยังสามารถเริ่มเกมแบบโต้ตอบในเบราว์เซอร์เพื่อแสดงภาพได้ รายละเอียดสามารถพบได้ใน README
ข้อมูลดิบที่ใช้ในการฝึกอบรมคือ >100 MB ซึ่งทำให้ไม่สะดวกในการเผยแพร่ผ่าน git โค้ดนี้ใช้ดาต้าเฟรมแบบดองสำหรับการฝึกอบรมและการทดสอบ แต่ในกรณีที่จำเป็นต้องใช้ข้อมูลต้นฉบับ คุณสามารถดูได้ที่นี่
หากคุณมีปัญหาหรือคำถาม คุณสามารถติดต่อ Micah Carroll ได้ที่ [email protected]