Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/aporia-ai/TrainInvaders

👾 Jupyter Notebook + Space Invaders!?
https://github.com/aporia-ai/TrainInvaders

ai jupyter-notebook machine-learning neural-network python space-invaders webassembly

Last synced: about 2 months ago
JSON representation

👾 Jupyter Notebook + Space Invaders!?

Awesome Lists containing this project

README

        




TrainInvaders


Train Invaders



Jupyter Notebook + Space Invaders!?


Python version
Python version
License


Why?
Getting started
How it works
FAQ
Drawbacks
Contribute
Thanks to
You may also like...

![Demo](https://raw.githubusercontent.com/aporia-ai/TrainInvaders/main/src/assets/demo.gif)

## Why❓
*Training a model can be a long long process!*

In the meantime, have a bit of fun with a **competitive space invaders game**.

See if you can get your name to the top of the *leaderboard*.

## Getting started 🏁
1. Install the game:
`!pip3 install train_invaders --upgrade`
2. Import the game in your notebook:
`import train_invaders.start`
3. Start training your model. The game will automatically pop up when the process begins.
4. **Play the game!** *You'll get notified when your training is finished*.
5. Want to stop the game from popping up when the model is being trained?
`import train_invaders.stop` will do the work.

## How it works ⚙️
**Tons of magic**... Just kidding :)

When importing the `start` module, its code will be executed.

The code utilizes python's `settrace` function which follows the functions' call stack.

When a function named `fit` `train` or `train_on_batch` is called - using Jupyter notebook's kernel, aka, `IPython`, a javascript view code will be injected inside the output block as an `iframe` to keep it completely **isolated from your code**.

When importing the `stop` module, the `settrace` function will be canceled and the function hooks will be removed.

## FAQ 🙋
### Will it interfere with the training process somehow?

NO. The game will start and be played **in parallel to the training** and will even *let you know when the training is finished*.

## Drawbacks 🥺
* Training stop indication is only in Jupyter Notebook. Want to get notified by email or text? Try [MLNotify](https://mlnotify.aporia.com/?utm_source=train-invaders&utm_medium=docs&utm_campaign=train-invaders)
* Authentication, and therefore, saving your score can only be done from `localhost` and port `8888 - 8891 / 8080 / 8081`

## Contribute 🤝
Have an awesome idea for a new feature? PRs are more than welcome!

1. Clone the project
2. Run `make build-game` to get a local and compiled copy of the game (if not exists)
2. Enter `src/view` directory and run `npm run serve` to run the local environment
2. Implement your ideas
3. Made changes in the game (C files)? Re-run `make build-game` from root dir and check them out
5. Enter root directory, run `make build`, `pip install . --upgrade` and test the changes in your notebook
6. PR us!

## Thanks to 🙏
[JanSiebert](https://github.com/JanSiebert/wasm-space-invaders) for the WebAssembly game.

[Cody Boisclair](https://github.com/codeman38) for the PressStart2P font.

[Vue](https://github.com/vuejs/vue) for the awesome FE framework.

## You may also ❤️
[Aporia](https://www.aporia.com?utm_source=github&utm_medium=github&utm_campaign=train-invaders) - Customized monitoring for your ML models.

[MLNotify](https://www.mlnotify.aporia.com?utm_source=github&utm_medium=github&utm_campaign=train-invaders) - Get notified when training is complete.

[MLOps Toys](https://www.mlops.toys?utm_source=github&utm_medium=github&utm_campaign=train-invaders) - A curated list of useful MLOps tools.