Nous décrivons ici l'utilisation d'AlphaFold v3.0.
Le code source et la documentation se trouvent sur leur page GitHub.
Toute publication qui divulgue des résultats découlant de l'utilisation de ce code source ou des paramètres du modèle doit citer le document AlphaFold3.
séparer le pipeline de données (pour CPU seulement) et le modèle d'inférence (qui demande un GPU) pour optimiser les coûts et l'utilisation des ressources;
cacher les résultats de la recherche de MSA/modèle, pour ensuite réutiliser le JSON augmenté pour plusieurs inférences différentes ou pour des variations d'autres fonctionnalités (par exemple un ligand).
#!/bin/bash#SBATCH --job-name=alphafold3-data#SBATCH --account=def-someprof # ajustez ceci pour correspondre au groupe de comptabilité que vous utilisez pour soumettre les tâches#SBATCH --time=08:00:00 # ajustez ceci pour correspondre au temps d'exécution de votre tâche#SBATCH --cpus-per-task=8 # UN MAXIMUM de 8 cœurs, AlphaFold ne tire aucun avantage à en utiliser plus#SBATCH --mem=64G # ajustez ceci en fonction de la mémoire dont vous avez besoin# Chargez les dépendances des modules.moduleloadStdEnv/2023hmmer/3.4rdkit/2024.03.5python/3.12
DOWNLOAD_DIR=$SCRATCH/alphafold/dbs# définissez le chemin approprié vers vos données téléchargéesINPUT_DIR=$SCRATCH/alphafold/input# définissez le chemin approprié vers vos données d'entréeOUTPUT_DIR=$SLURM_TMPDIR/alphafold/output# définissez le chemin approprié vers vos données de sortie# Générez votre environnement virtuel dans $SLURM_TMPDIR.virtualenv--no-download$SLURM_TMPDIR/env
source$SLURM_TMPDIR/env/bin/activate
# Installez AlphaFold et ses dépendances.pipinstall--no-index--upgradepip
pipinstall--no-index--requirement~/alphafold3-requirements.txt
# compilez les données dans $VIRTUAL_ENVbuild_data
# https://github.com/google-deepmind/alphafold3/blob/main/docs/performance.md#compilation-time-workaround-with-xla-flagsexportXLA_FLAGS="--xla_gpu_enable_triton_gemm=false"# Modifiez avec les arguments appropriés et exécutez vos commandes.# run_alphafold.py --helppythonrun_alphafold.py\--db_dir=$DOWNLOAD_DIR\--input_dir=$INPUT_DIR\--output_dir=$OUTPUT_DIR\--jax_compilation_cache_dir=$HOME/.cache\--nhmmer_n_cpu=$SLURM_CPUS_PER_TASK\--jackhmmer_n_cpu=$SLURM_CPUS_PER_TASK\--norun_inference# Exécutez l'étape des données# copiez les données de retourmkdir$SCRATCH/alphafold/output
cp-vr$OUTPUT_DIR$SCRATCH/alphafold/output
#!/bin/bash#SBATCH --job-name=alphafold3-inference#SBATCH --account=def-someprof # ajustez ceci pour correspondre au groupe de comptabilité que vous utilisez pour soumettre les tâches#SBATCH --time=08:00:00 # ajustez ceci pour correspondre au temps d'exécution de votre tâche#SBATCH --cpus-per-task=1 # AlphaFold ne tire aucun avantage à en utiliser plus pour l'étape d'inférence#SBATCH --gpus=a100:1 # L'inférence d'AlphaFold3 ne s'exécute que sur UN A100 ou un GPU plus performant.#SBATCH --mem=20G # ajustez ceci en fonction de la mémoire dont vous avez besoin# Chargez les dépendances des modules.moduleloadStdEnv/2023hmmer/3.4rdkit/2024.03.5python/3.12cuda/12.2cudnn/9.2
DOWNLOAD_DIR=$SCRATCH/alphafold/dbs# définissez le chemin approprié vers vos données téléchargéesINPUT_DIR=$SCRATCH/alphafold/input# définissez le chemin approprié vers vos données d'entrée, après l'étape des données.OUTPUT_DIR=$SCRATCH/alphafold/output# définissez le chemin approprié vers vos données de sortie# Générez votre environnement virtuel dans $SLURM_TMPDIR.virtualenv--no-download$SLURM_TMPDIR/env
source$SLURM_TMPDIR/env/bin/activate
# Installez AlphaFold et ses dépendances.pipinstall--no-index--upgradepip
pipinstall--no-index--requirement~/alphafold3-requirements.txt
# compilez les données dans $VIRTUAL_ENVbuild_data
# https://github.com/google-deepmind/alphafold3/blob/main/docs/performance.md#compilation-time-workaround-with-xla-flagsexportXLA_FLAGS="--xla_gpu_enable_triton_gemm=false"# https://github.com/google-deepmind/alphafold3/blob/main/docs/performance.md#gpu-memoryexportXLA_PYTHON_CLIENT_PREALLOCATE=trueexportXLA_CLIENT_MEM_FRACTION=0.95
# Modifiez avec les arguments appropriés et exécutez vos commandes.# run_alphafold.py --helppythonrun_alphafold.py\--db_dir=$DOWNLOAD_DIR\--input_dir=$INPUT_DIR\--output_dir=$OUTPUT_DIR\--jax_compilation_cache_dir=$HOME/.cache\--norun_data_pipeline# Exécutez l'étape d'inférence
Si vous voulez exécuter AlphaFold3 avec plus de 5120 jetons ou sur un GPU de mémoire moindre (par exemple sur un A100 avec 40 Go de mémoire), vous pouvez activer la fonctionnalité de mémoire unifiée.
Dans le script de soumission à l'étape d'inférence, ajoutez les variables d'environnement suivantes :
exportXLA_PYTHON_CLIENT_PREALLOCATE=falseexportTF_FORCE_UNIFIED_MEMORY=trueexportXLA_CLIENT_MEM_FRACTION=2.0# 2 x 40GB = 80 GB
et ajustez en conséquence la quantité de mémoire allouée à la tâche, par exemple #SBATCH --mem=80G.