AlphaFold 3 sur Jean Zay
DeepMind a ouvert le code d'AlphaFold 3 et l'a rendu disponible sur GitHub. Cependant les poids du modèle sont eux soumis à une licence qui fait qu'il ne sera pas possible de les rendre disponibles à tous les utilisateurs de l'IDRIS.
https://github.com/google-deepmind/alphafold3/blob/main/WEIGHTS_TERMS_OF_USE.md
En effet, un certain nombre personnes utilisant les ressources de l'IDRIS ne font pas partie du monde académique.
La procédure pour utiliser AlphaFold 3 est :
- L'IDRIS fait l'installation du code de façon à ce qu'il soit accessible à tous les utilisateurs.
- Chaque personne souhaitant utiliser AlphaFold 3 devra obtenir l'autorisation auprès de DeepMind via le formulaire suivant : https://forms.gle/svvpY4u2jsHEwWYS6 . Il est à noter que la réponse peut prendre jusque 2 semaines.
- Les poids devront être installés localement sur le compte de chaque personne souhaitant utiliser AlphaFold 3.
Les outils d'alignement de séquences ne sont pas portés sur GPU. Cette phase pouvant être assez longue, il est recommandé de ne pas utiliser de partition GPU pour éviter de gâcher des ressources. Vous pouvez cependant demander une allocation sur la partition CPU ou bien utiliser la partition prepost.
Liens utiles
- 🌐 Site officiel : https://www.deepmind.com
- 📘 Documentation : https://github.com/google-deepmind/alphafold3
- 🧬 Dépôt Git : https://github.com/google-deepmind/alphafold3
Exemples de scripts de soumission
- Partition V100
- Partition A100
- Partition H100
#!/usr/bin/env bash
#SBATCH --account=<project_id>@v100
#SBATCH --job-name=AlphaFold3
#SBATCH --output=%x.%j
#SBATCH --error=%x.%j
## For inference
#SBATCH --nodes=1 # Number of nodes
#SBATCH --ntasks-per-node=1 # Number of tasks per node
#SBATCH --cpus-per-task=10 # Number of cores per Task
#SBATCH --gpus-per-node=1 # Number of GPUs per node
#SBATCH --constraint=v100-32g # We recommend using the 32GB V100 GPUs
# Load the modules
module purge
module load alphafold/3.0.1
# Define the path needed to run
## where are stored the weights of AlphaFold3 (directory containing af3.bin)
weight_dir=${WORK}/AlphaFold3/weights
python $(which run_alphafold.py) \
--json_path=msa_data.json \
--model_dir=${weight_dir} \
--output_dir=<output_dir> \
--db_dir=${DB_DIR} \ # DBDIR is defined when the module is loaded
--flash_attention_implementation=xla \ # Needed for V100 GPUs
--run_data_pipeline=false \
--run_inference=true
#!/usr/bin/env bash
#SBATCH --account=<project_id>@a100
#SBATCH --job-name=AlphaFold3
#SBATCH --output=%x.%j
#SBATCH --error=%x.%j
## For inference
#SBATCH --nodes=1 # Number of nodes
#SBATCH --ntasks-per-node=1 # Number of tasks per node
#SBATCH --cpus-per-task=8 # Number of cores per Task
#SBATCH --gpus-per-node=1 # Number of GPUs per node
#SBATCH --constraint=a100 # To access the A100 partition
# Load the modules
module purge
module load arch/a100
module load alphafold/3.0.1
# Define the path needed to run
## where are stored the weights of AlphaFold3 (directory containing af3.bin)
weight_dir=${WORK}/AlphaFold3/weights
python $(which run_alphafold.py) \
--json_path=msa_data.json \
--model_dir=${weight_dir} \
--output_dir=<output_dir> \
--db_dir=${DB_DIR} \ # DBDIR is defined when the module is loaded
--run_data_pipeline=false \
--run_inference=true
#!/usr/bin/env bash
#SBATCH --account=<project_id>@h100
#SBATCH --job-name=AlphaFold3
#SBATCH --output=%x.%j
#SBATCH --error=%x.%j
## For inference
#SBATCH --nodes=1 # Number of nodes
#SBATCH --ntasks-per-node=1 # Number of tasks per node
#SBATCH --cpus-per-task=24 # Number of cores per Task
#SBATCH --gpus-per-node=1 # Number of GPUs per node
#SBATCH --constraint=h100 # To access the H100 partition
# Load the modules
module purge
module load arch/h100
module load alphafold/3.0.1
# Define the path needed to run
## where are stored the weights of AlphaFold3 (directory containing af3.bin)
weight_dir=${WORK}/AlphaFold3/weights
python $(which run_alphafold.py) \
--json_path=msa_data.json \
--model_dir=${weight_dir} \
--output_dir=<output_dir> \
--db_dir=${DB_DIR} \ # DBDIR is defined when the module is loaded
--run_data_pipeline=false \
--run_inference=true