利用可能なレイアウトのうち 5 つ。新しいレイアウトは、ハードコーディングしたり、プログラムで生成したりするのが簡単です。
Overcooked-AI は、非常に人気のあるビデオ ゲーム Overcooked をベースにした、人間と AI の完全に協調的なタスク パフォーマンスを実現するベンチマーク環境です。
ゲームの目標は、できるだけ早くスープを提供することです。各スープでは、最大 3 つの材料を鍋に入れ、スープが調理されるのを待ってから、エージェントにスープを受け取って配達してもらう必要があります。エージェントは、高い報酬を達成するために、その場でタスクを分割し、効果的に調整する必要があります。
ここでゲームを試すことができます (以前にトレーニングを受けた DRL エージェントとプレイします)。このインターフェイスを使用して独自のトレーニングを受けたエージェントを操作したり、人間と AI または人間と人間のデータをさらに収集するには、ここでコードを使用できます。ここでは、既に収集されている人間対人間および人間対 AI のゲームプレイ データの一部を見つけることができます。
環境と互換性のある DRL 実装は、src/human_aware_rl の下のサブモジュールとしてリポジトリに含まれています。
古い human_aware_rl は廃止される予定であり、2019 年の論文「人間と AI の調整のための人間についての学習の有用性について」の結果を再現するためにのみ使用する必要があります (ブログ投稿も参照してください)。
環境を簡単に使用する場合は、この環境ラッパーの使用を検討する価値があります。
pip を使用して、コンパイル済みのホイール ファイルをインストールできます。
pip install overcooked-ai
PyPI リリースは安定していますが、頻度は低いことに注意してください。最新の開発機能については、 pip install -e .
。
Python 3.7 で conda 環境をセットアップすると便利です (virtualenv も機能します)。
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
リポジトリのクローンを作成する
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
最後に、Python setup-tools を使用してローカルにインストールします
環境を使用したいだけの場合:
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 をチェックアウトできます。これは任意のディレクトリから開始できます。
計画コードを広範囲に使用することを考えている場合は、Overcooked アクセサリ ツールをすべて検証する完全なテスト スイートを実行する必要があります (これには 5 ~ 10 分かかる場合があります)。
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
には次のものが含まれます。
mdp/
:
overcooked_mdp.py
: メインの Overcooked ゲーム ロジックovercooked_env.py
: Overcooked mdp 上に構築された環境クラスlayout_generator.py
: ランダムなレイアウトをプログラムで生成する関数agents/
:
agent.py
: エージェント クラスの場所benchmarking.py
: エージェント (トレーニング済みとプランナーの両方) の軌跡をサンプルし、さまざまなモデルをロードしますplanning/
:
planners.py
: ほぼ最適なエージェント計画ロジックsearch.py
: A* 検索と最短パスのロジックhuman_aware_rl
には以下が含まれます。
ppo/
:
ppo_rllib.py
: PPO エージェントをトレーニングするためのコードが存在するプライマリ モジュール。これには、 OvercookedEnv
の rllib 互換ラッパー、rllib Policy
クラスを Overcooked Agent
に変換するユーティリティ、ユーティリティ関数とコールバックが含まれます。ppo_rllib_client.py
エージェントのトレーニングを構成および起動するためのドライバー コード。使用方法の詳細については以下をご覧くださいppo_rllib_from_params_client.py
: 変数 MDP を使用したオーバークックで PPO を使用して 1 つのエージェントをトレーニングしますppo_rllib_test.py
ローカル健全性チェックの再現性テストrun_experiments.sh
5 つの古典的なレイアウトでエージェントをトレーニングするためのスクリプトtrained_example/
テスト目的の事前トレーニング済みモデルrllib/
:
rllib.py
: Overcooked API を利用する rllib エージェントとトレーニング ユーティリティutils.py
: 上記のユーティリティtests.py
: 上記の予備テストimitation/
:
behavior_cloning_tf2.py
: BC モデルをトレーニング、保存、ロードするためのモジュールbehavior_cloning_tf2_test.py
: bc モジュールのさまざまなコンポーネントの単体テストだけでなく、基本的な再現性テストが含まれています。 human/
:
process_data.py
スクリプトdata_processing_utils.py
上記のユーティリティutils.py
: リポジトリのユーティリティ
overcooked_demo
には次のものが含まれます。
server/
:
app.py
: Flask アプリgame.py
: ゲームのメインロジック。状態遷移は、ゲーム環境に埋め込まれた overcooked.Gridworld オブジェクトによって処理されます。move_agents.py
: エージェント ディレクトリへのチェックポイントのコピーを簡素化するスクリプト。使用方法の説明は、ファイル内、またはpython move_agents.py -h
を実行することで見つかります。 up.sh
: ゲームをホストする Docker サーバーを起動するシェル スクリプト
Python で軌跡を視覚化するためのサンプル コードについては、この Google Colab を参照してください。
エージェントのトレーニング、ロード、評価のプロセスについてユーザーをガイドするノートブックを組み込みました。理想的には、ユーザーが Google Colab でノートブックを実行できるようにしたいと考えています。ただし、Colab のデフォルトのカーネルは Python 3.10 であり、リポジトリは Python 3.7 用に最適化されているため、現在一部の関数は Colab と互換性がありません。シームレスなエクスペリエンスを提供するために、ノートブック内のすべてのセルが事前に実行されており、適切な設定に従ってローカルで実行すると、予想される出力を表示できるようになります。
Overcooked_demo は、視覚化のためにブラウザーでインタラクティブなゲームを開始することもできます。詳細は README を参照してください。
トレーニングで使用される生データは 100 MB を超えるため、git 経由で配布するのは不便です。このコードはトレーニングとテストにピクルド データフレームを使用しますが、オリジナルのデータが必要な場合はここで見つけることができます。
問題や質問がある場合は、Micah Carroll ([email protected]) までご連絡ください。