diff --git a/GET_STARTED.md b/GET_STARTED.md new file mode 100644 index 00000000..8ba37d83 --- /dev/null +++ b/GET_STARTED.md @@ -0,0 +1,286 @@ +````md +# Getting Started with DeepMind Research + +Welcome. This repository contains implementations and example code that accompany DeepMind publications. Whether you are a student, researcher, or AI enthusiast, this guide will help you explore and run projects in this repository. + +## What is in this repository + +This repository hosts more than 70 research projects from DeepMind publications. These projects cover areas such as: + +- Machine Learning: graph networks, transformers, generative models +- Reinforcement Learning: Deep Q Networks, offline reinforcement learning, multi agent systems +- Computer Vision: object detection, image generation, video prediction +- Computational Biology: AlphaFold, protein structure prediction, genomics +- Physics Simulation: graph neural networks for physics, mesh-based simulation +- Scientific Computing: quantum chemistry, climate modeling, fusion control + +Each directory in this repository represents a self-contained project. Every project includes its own README, code, and sometimes datasets. + +## Prerequisites + +Before you begin, make sure you have: + +- Python 3.7 or above (most projects use Python 3.8 or 3.9) +- Git for cloning the repository +- Basic command line knowledge +- Familiarity with Python and ML libraries such as NumPy, TensorFlow, PyTorch, or JAX +- Optional: a GPU for computationally intensive projects + +Recommended tools: + +- Virtual environment manager: venv, conda, or virtualenv +- Code editor: VS Code, PyCharm, or Jupyter Notebook +- Package manager: pip or conda + +## Quick start + +### Step 1. Clone the repository + +```bash +git clone https://github.com/google-deepmind/deepmind-research.git +cd deepmind-research + +### Step 2. Choose a project + +Browse the repository folders and pick a project that interests you. Each project has its own directory with a dedicated README. + +### Step 3. Set up the environment + +Each project can have different dependencies. Go into the project directory and follow the setup steps in its README. + +Example: running the Graph Matching Networks project + +```bash +cd graph_matching_networks + +python3 -m venv gmn_env +source gmn_env/bin/activate + +# On Windows: +# gmn_env\Scripts\activate + +pip install -r requirements.txt +``` + +After installing dependencies, follow the project README instructions to run scripts or notebooks. + +### Step 4. Run your first example + +Most projects include example scripts or Jupyter notebooks. Look for files such as: + +* demo.py +* example.ipynb +* train.py +* eval.py + +Check the project README for the exact command to run. + +## Recommended projects for beginners + +Start with these well-documented, beginner-friendly projects. + +### Easiest to get started + +1. PrediNet (PrediNet folder) + + * Why: simple Colab notebook, no local setup required + * Topics: neural networks, relational reasoning + * How to run: open the Colab link in the README + +2. Bootstrap Your Own Latent (BYOL) (byol folder) + + * Why: clear documentation and visual results + * Topics: self-supervised learning, computer vision + * Prerequisites: JAX and Haiku + +3. Graph Matching Networks (graph_matching_networks folder) + + * Why: well structured code and example scripts + * Topics: graph neural networks, similarity learning + * Prerequisites: TensorFlow and Sonnet + +### Intermediate projects + +4. Learning to Simulate (learning_to_simulate folder) + + * Why: comprehensive examples and interesting applications + * Topics: physics simulation, graph networks + * Prerequisites: TensorFlow, and a basic understanding of particle systems + +5. MeshGraphNets (meshgraphnets folder) + + * Why: real-world applications in engineering + * Topics: graph networks, physics simulation + * Prerequisites: JAX, and understanding of mesh-based methods + +6. Adversarial Robustness (adversarial_robustness folder) + + * Why: practical ML security applications + * Topics: adversarial training, robustness + * Prerequisites: JAX or PyTorch + +### Advanced projects + +7. AlphaFold CASP13 (alphafold_casp13 folder) + + * Why: groundbreaking research, complex but rewarding + * Topics: structural biology, deep learning + * Prerequisites: TensorFlow, domain knowledge helps + +8. Enformer (enformer folder) + + * Why: state-of-the-art genomics model + * Topics: genomics, transformers + * Prerequisites: TensorFlow, genomics background helps + +## Learning paths + +Path 1. Computer vision and deep learning + +1. Start with BYOL for self supervised learning +2. Explore BigBiGAN for generative models +3. Try Hierarchical Probabilistic U Net for medical imaging + +Path 2. Graph neural networks + +1. Begin with Graph Matching Networks +2. Move to Learning to Simulate +3. Advance to MeshGraphNets + +Path 3. Reinforcement learning + +1. Learn from Side Effects Penalties +2. Try Option Keyboard for hierarchical reinforcement learning +3. Experiment with RL Unplugged for offline reinforcement learning + +Path 4. Scientific computing + +1. Start with Learning to Simulate for physics +2. Explore Fusion TCV for plasma control +3. Dive into AlphaFold for biology + +## Common dependencies + +Many projects use these frameworks: + +* JAX: [https://github.com/google/jax](https://github.com/google/jax) +* Haiku: [https://github.com/deepmind/dm-haiku](https://github.com/deepmind/dm-haiku) +* Sonnet: [https://github.com/deepmind/sonnet](https://github.com/deepmind/sonnet) +* TensorFlow: [https://www.tensorflow.org/](https://www.tensorflow.org/) +* PyTorch: [https://pytorch.org/](https://pytorch.org/) + +Install them as needed: + +```bash +pip install jax jaxlib +pip install dm-haiku +pip install dm-sonnet +pip install tensorflow +pip install torch torchvision +``` + +## Useful resources + +DeepMind resources: + +* DeepMind Publications: [https://deepmind.com/research/publications/](https://deepmind.com/research/publications/) +* DeepMind Blog: [https://deepmind.com/blog](https://deepmind.com/blog) +* DeepMind GitHub: [https://github.com/deepmind](https://github.com/deepmind) + +Learning resources: + +* JAX Documentation: [https://jax.readthedocs.io/](https://jax.readthedocs.io/) +* TensorFlow Tutorials: [https://www.tensorflow.org/tutorials](https://www.tensorflow.org/tutorials) +* PyTorch Tutorials: [https://pytorch.org/tutorials/](https://pytorch.org/tutorials/) +* Distill: [https://distill.pub/](https://distill.pub/) +* Papers with Code: [https://paperswithcode.com/](https://paperswithcode.com/) + +Community: + +* GitHub Discussions: [https://github.com/google-deepmind/deepmind-research/discussions](https://github.com/google-deepmind/deepmind-research/discussions) +* GitHub Issues: [https://github.com/google-deepmind/deepmind-research/issues](https://github.com/google-deepmind/deepmind-research/issues) + +## Troubleshooting + +ModuleNotFoundError + +* Make sure you installed the project dependencies: + +```bash +pip install -r requirements.txt +``` + +CUDA or GPU errors + +* Install GPU enabled versions of JAX, TensorFlow, or PyTorch, or run on CPU. + +Python version mismatch + +* Check the project README for the required Python version and use a matching environment. + +Out of memory errors + +* Reduce batch size, use a smaller model, or use a machine with more RAM or VRAM. + +Getting help: + +1. Check the project README +2. Search existing issues +3. Open a new issue and include environment details and error logs +4. Ask in Discussions for general questions + +## Contributing + +Interested in contributing? Check CONTRIBUTING.md. + +Ways to contribute: + +* Report bugs by opening an issue +* Improve documentation by fixing typos or clarifying instructions +* Share results by discussing experiments and findings +* Add examples by sharing working code + +Note: You may need to sign a Contributor License Agreement for code contributions. + +## Repository structure + +```text +deepmind-research/ +README.md +CONTRIBUTING.md +GET_STARTED.md +LICENSE +alphafold_casp13/ +learning_to_simulate/ +meshgraphnets/ +70 plus other projects/ +``` + +Each project directory is self contained with its own README, code, and dependencies. + +## Tips for success + +1. Start simple, do not jump into the most complex project first +2. Read the paper, understanding the research helps you understand the code +3. Use virtual environments, keep dependencies isolated per project +4. Take notes, document what you learn as you explore +5. Experiment, modify parameters and see what happens +6. Ask questions, use Discussions and Issues + +## Next steps + +1. Pick a beginner project +2. Read the project README +3. Set up your environment +4. Run the example scripts or notebooks +5. Experiment with parameters and datasets +6. Share your findings with the community + +## Feedback + +Found this guide helpful? Have suggestions for improvement? Please open an issue or contribute via a pull request. + +This is not an official Google product. + +``` +```