Arcade-learning-environment

Farama-Foundation Farama-Foundation
Dépôt créer le : 15/09/2012
Release du : 01/03/2026 ALE v0.11.2
Forks: 461 Watcher: 0 2396
Choisir une liste...
FR

L'environnement d'apprentissage Arcade Arcade Learning Environment

Python PyPI Version

L'Arcade Learning Environment (ALE) est un cadre simple qui permet aux chercheurs et aux amateurs de développer des agents d'IA pour les jeux Atari 2600.Il est construit sur l'émulateur Atari 2600Stellaet sépare les détails de l'émulation de la conception de l'agent. Cettevideoreprésente plus de 50 jeux actuellement pris en charge dans l'ALE.

Pour un aperçu de nos objectifs pour l'ALE lireThe Arcade Learning Environment: An Evaluation Platform for General Agents. Si vous utilisez ALE dans votre recherche, nous vous demandons de citer ce document en référence à l'environnement. VoirCitingsection pour les entrées BibTeX.

Caractéristiques

  • Cadre orienté objet avec support pour ajouter des agents et des jeux.
  • Noyau d'émulation non couplé des modules de rendu et de génération de sons pour une émulation rapide avec des dépendances de bibliothèque minimales.
  • Extraction automatique du score et du signal de fin de partie pour plus de 100 jeux Atari 2600.
  • Code multiplateforme (compilé et testé sous macOS, Windows et plusieurs distributions Linux).
  • Les liaisons Python à traversnanobind.
  • Aide aux autochtonesGymnasium, une fourche maintenue de Gym OpenAI.
  • Atari roms sont emballés dans l'emballage pip.
  • Vectorisateur à base de C++ pour agir simultanément en plusieurs ROM.
  • Support de l'assemblage Web pour exécuter ALE dans le navigateur

Démarrer rapidement

L'ALE prend actuellement en charge trois interfaces différentes : C++, Python, Gymnasium et WASM.

Python

Vous devez simplement installer leale-pypaquet distribué via PyPI:

pip install ale-py

Remarque : Assurez-vous d'utiliser une version à jour depipou l'installation peut échouer.

Vous pouvez maintenant importer l'ALE dans vos projets Python en fournissant une interface directe à Stella pour interagir avec les jeux

from ale_py import ALEInterface, roms

ale = ALEInterface()
ale.loadROM(roms.get_rom_path("breakout"))
ale.reset_game()

reward = ale.act(0)  # noop
screen_obs = ale.getScreenRGB()

Gymnasium

Pour plus de simplicité pour installer ale-py avec Gymnasium,pip install "gymnasium[atari]"doit installer tous les modules et ROM nécessaires. Voir Gymnasiumintroductory pagepour la description de l'API à l'interface avec l'environnement.

import gymnasium as gym
import ale_py

gym.register_envs(ale_py)  # unnecessary but helpful for IDEs

env = gym.make('ALE/Breakout-v5', render_mode="human")  # remove render_mode in training
obs, info = env.reset()
episode_over = False
while not episode_over:
    action = policy(obs)  # to implement - use `env.action_space.sample()` for a random policy
    obs, reward, terminated, truncated, info = env.step(action)

    episode_over = terminated or truncated
env.close()

Pour exécuter avec des actions continues, vous pouvez simplement modifier l'appel àgym.makeci-dessus avec:

env = gym.make('ALE/Breakout-v5', continuous=True, render_mode="human")

Pour tous les environnements disponibles et leur description, voirgymnasium atari page.

Un environnement vectorisé avec prétraitement, écrit en C++, est également disponible avecgym.make_vec("ALE/Breakout-v5", num_envs=10). Voirvector-environmentpour plus d'informations.

C++

Les instructions suivantes supposent que vous avez un compilateur C++17 valide etvcpkginstallé.

Nous utilisons CMake comme citoyen de première classe, et vous pouvez utiliser l'ALE directement avec n'importe quel projet CMake. Pour compiler et installer l'ALE, vous pouvez exécuter

mkdir build && cd build
cmake ../ -DCMAKE_BUILD_TYPE=Release
cmake --build . --target install

Il y a des drapeaux optionnels-DSDL_SUPPORT=ON/OFFpour basculer le support SDL (c.-à-d,display_screenetsoundsoutien;OFFpar défaut),-DBUILD_CPP_LIB=ON/OFFpour construire desale-libObjectif C++ (ONpar défaut), et-DBUILD_PYTHON_LIB=ON/OFFpour construire l'emballage pybind11 (ONpar défaut).

Enfin, vous pouvez lier contre l'ALE dans votre propre projet CMake comme suit

find_package(ale REQUIRED)
target_link_libraries(YourTarget ale::ale-lib)

Assemblée Web

L'ALE peut être compilé sur WebAssembly pour être utilisé directement dans les navigateurs Web, permettant des démos interactives, des outils éducatifs et des expériences RL basées sur navigateur sans aucune installation.

Ceci doit être utilisé par l'intermédiaire de NPM (> npm install @farama/ale-wasm) ou par un zip compilé autonome (voir les artefacts de sortie).

Exemple d'utilisation de NPM:

import createALEModule from './ale.js';

const ALE = await createALEModule();
const ale = new ALE.ALEInterface();

await ale.loadROM('roms/breakout.bin');
ale.resetGame();

while (!ale.gameOver()) {
    const actions = ale.getMinimalActionSet();
    const action = actions[Math.floor(Math.random() * actions.length)];
    const reward = ale.act(action);
}

Pour plus d'exemples de NPM et d'installation autonome, voirdocs/wasm/.

Citation

Si vous utilisez l'ALE dans votre recherche, nous vous demandons de citer ce qui suit.

M. G. Bellemare, Y. Naddaf, J. Veness et M. Bowling. The Arcade Learning Environment: An Evaluation Platform for General Agents, Journal of Artificial Intelligence Research, Volume 47, pages 253-279, 2013.

Au format BibTeX:

@Article{bellemare13arcade,
    author = {{Bellemare}, M.~G. and {Naddaf}, Y. and {Veness}, J. and {Bowling}, M.},
    title = {The Arcade Learning Environment: An Evaluation Platform for General Agents},
    journal = {Journal of Artificial Intelligence Research},
    year = "2013",
    month = "jun",
    volume = "47",
    pages = "253--279",
}

Si vous utilisez l'ALE avec des actions collantes (flagrepeat_action_probability) ou si vous utilisez les différentes saveurs du jeu (mode et interrupteurs de difficulté), nous vous demandons que vous citez également:

M. C. Machado, M. G. Bellemare, E. Talvitie, J. Veness, M. J. Hausknecht, M. Bowling. Revisiter l'environnement d'apprentissage Arcade : Protocoles d'évaluation et problèmes ouverts pour les agents généraux, Journal of Artificial Intelligence Research, Volume 61, pages 523-562, 2018.

En format BibTex:

@Article{machado18arcade,
    author = {Marlos C. Machado and Marc G. Bellemare and Erik Talvitie and Joel Veness and Matthew J. Hausknecht and Michael Bowling},
    title = {Revisiting the Arcade Learning Environment: Evaluation Protocols and Open Problems for General Agents},
    journal = {Journal of Artificial Intelligence Research},
    volume = {61},
    pages = {523--562},
    year = {2018}
}

Si vous utilisez le CALE (Continuous ALE), nous vous demandons de citer également ce qui suit :

Jesse Farebrother et Pablo Samuel Castro. Cale: Environnement d'apprentissage en arcade continue. Progrès dans les systèmes de traitement de l'information neuronale, 2024.

En format BibTex:

@article{farebrother2024cale,
  title={C{ALE}: Continuous Arcade Learning Environment},
  author={Jesse Farebrother and Pablo Samuel Castro},
  journal={Advances in Neural Information Processing Systems},
  year={2024}
}

Contributeurs GitHub

dependabot[bot]
dependabot[bot]
8 contributions
mgbellemare
mgbellemare
288 contributions
JesseFarebro
JesseFarebro
159 contributions
mcmachado
mcmachado
156 contributions
mhauskn
mhauskn
112 contributions
tkoeppe
tkoeppe
58 contributions
pseudo-rnd-thoughts
pseudo-rnd-thoughts
58 contributions
nowozin
nowozin
24 contributions
jleni
jleni
15 contributions
alcinos
alcinos
15 contributions
nczempin
nczempin
12 contributions
shelhamer
shelhamer
8 contributions
UserAB1236872
UserAB1236872
7 contributions
jeremyfix
jeremyfix
5 contributions
udibr
udibr
4 contributions
skylian
skylian
4 contributions
jjshoots
jjshoots
3 contributions
renattou
renattou
3 contributions
ppwwyyxx
ppwwyyxx
3 contributions
benblack769
benblack769
3 contributions
maichmueller
maichmueller
2 contributions
thelukester92
thelukester92
2 contributions
dohmatob
dohmatob
2 contributions
perimosocordiae
perimosocordiae
2 contributions
branchv
branchv
2 contributions
benallard
benallard
2 contributions
mgorny
mgorny
1 contributions
Nafyaz
Nafyaz
1 contributions
spragunr
spragunr
1 contributions
younik
younik
1 contributions