Skip to content
Open
286 changes: 286 additions & 0 deletions GET_STARTED.md
Original file line number Diff line number Diff line change
@@ -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.

```
```