Skip to main content

HelixFold

HelixFold 以提高训练和推理速度并减少内存消耗,通过算子融合、张量融合和混合并行计算提高了性能,而内存通过重新计算、BFloat16 和内存读/写优化,与原来的 AlphaFold2(用 Jax 实现)和 OpenFold(用 PyTorch 实现)相比,HelixFold 只需 7.5 天即可完成完整的端到端训练,使用混合并行只需 5.3 天,而 AlphaFold2 和 OpenFold 都需要大约 11 天,HelixFold 节省了 1 倍的训练时间,在 CASP14 和 CAMEO 数据集上验证了 HelixFold 的准确性可以与 AlphaFold2 相当。

注意事项

  • 运行HelixFold 作业,只能选择GPU 计算区,V100或者A100 单卡资源进行计算。
  • 输入文件名不能有特殊符号和空格
  • 提交的文件第一行为标题,第二行为序列,序列为大写字母,序列之间不能有空格或换行符
  • 模板提交一次上传多个序列文件,会启动多个计算节点,每个计算节点对应一个序列文件。

单体结构输入文件示例:

>sequence_1
GSDNGFGSSKATSGSDFGGLAIFDGSGSEHFGHSDTHGSFDGLFGVDFZILSQQLKS

一. 模板提交

HelixFold 使用模板提交,会根据上传的输入文件个数,启动对应数量的计算节点。如:上传5个输入文件,硬件配置选择节点数量为1提交作业,默认会启动5个作业节点同时计算,相应的以5个节点的价格进行计费;相比于串行提交,以相同的成本节约了计算的时间。

Step 1. 在应用中心搜索Helixfold 软件,点击提交作业-选择模板提交;

Step 2.选择可视化模板提交;

Step 3. 上传序列文件(.fasta格式

Step 4. 选择GPU硬件配置虎鲸1卡(v100-1)

Step 5. 查看作业内容汇总,并提交作业;

Step 6. 通过作业管理查看运行中的作业;

二. 命令行提交

通过SSH连接创建并连接管理节点

Step 1. 创建作业目录并进入;

mkdir helixfoldJob1
cd helixfoldJob1

Step 2. 通过文件传输上传所需的输入文件test.fasta,详情请查看Linux数据传输

Step 3. 在该文件夹下创建如下执行脚本helixfold.sh

#!/bin/bash
module add Anaconda3
source activate helixfold
export LD_LIBRARY_PATH=/public/software/.local/easybuild/software/Anaconda3/2020.02/envs/helixfold/lib

ROOT_PATH="$(pwd)"
FASTA_FILE="$ROOT_PATH/test.fasta" # path to the target protein
DATA_DIR="/public/software/.local/easybuild/software/alphafold/data" # path to the databases
OUTPUT_DIR="$ROOT_PATH/output" # path to save the outputs
MODELS="model_1,model_2,model_3,model_4,model_5"
HELIXFOLD="/public/software/.local/easybuild/software/helixfold"
PYTHON="/public/software/.local/easybuild/software/Anaconda3/2020.02/envs/helixfold/bin/python3"
export PYTHONPATH=$ROOT_PATH:$PYTHONPATH
export FLAGS_use_cuda_managed_memory=true
export FLAGS_enable_eager_mode=0

USE_DAP=false

if [ $USE_DAP == true ]; then

distributed_args="--run_mode=collective --log_dir=${log_dir}"
$PYTHON -m paddle.distributed.launch ${distributed_args} \
--gpus="0,1,2,3,4,5,6,7" \
${HELIXFOLD}/run_helixfold.py \
--distributed \
--dap_degree 8 \
--fasta_paths=${FASTA_FILE} \
--data_dir=${DATA_DIR} \
--bfd_database_path=${DATA_DIR}/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--small_bfd_database_path=${DATA_DIR}/small_bfd/bfd-first_non_consensus_sequences.fasta \
--uniclust30_database_path=${DATA_DIR}/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
--uniref90_database_path=${DATA_DIR}/uniref90/uniref90.fasta \
--mgnify_database_path=${DATA_DIR}/mgnify/mgy_clusters_2018_12.fa \
--pdb70_database_path=${DATA_DIR}/pdb70/pdb70 \
--template_mmcif_dir=${DATA_DIR}/pdb_mmcif/mmcif_files \
--obsolete_pdbs_path=${DATA_DIR}/pdb_mmcif/obsolete.dat \
--max_template_date=2020-05-14 \
--model_names=${MODELS} \
--output_dir=${OUTPUT_DIR} \
--preset='reduced_dbs' \
--random_seed=0 \
${@:2}
else
CUDA_VISIBLE_DEVICES=0 $PYTHON ${HELIXFOLD}/run_helixfold.py \
--fasta_paths=${FASTA_FILE} \
--data_dir=${DATA_DIR} \
--bfd_database_path=${DATA_DIR}/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--small_bfd_database_path=${DATA_DIR}/small_bfd/bfd-first_non_consensus_sequences.fasta \
--uniclust30_database_path=${DATA_DIR}/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
--uniref90_database_path=${DATA_DIR}/uniref90/uniref90.fasta \
--mgnify_database_path=${DATA_DIR}/mgnify/mgy_clusters_2018_12.fa \
--pdb70_database_path=${DATA_DIR}/pdb70/pdb70 \
--template_mmcif_dir=${DATA_DIR}/pdb_mmcif/mmcif_files \
--obsolete_pdbs_path=${DATA_DIR}/pdb_mmcif/obsolete.dat \
--max_template_date=2020-05-14 \
--model_names=${MODELS} \
--output_dir=${OUTPUT_DIR} \
--preset='reduced_dbs' \
--seed=2022 \
--disable_amber_relax \
--random_seed=0 \
${@:2}
fi

Step 4. 提交作业;

提交任务到带有一张V100卡的GPU节点运行。

sbatch -p g-v100-1 -c 8  helixfold.sh

查看作业运行情况及参数详细介绍请点击查看slurm命令

结果文件下载请查看Linux数据传输

三. HelixFold介绍

PR:https://www.paddlepaddle.org.cn/support/news?action=detail&id=3033

GitHub地址:https://github.com/PaddlePaddle/PaddleHelix/tree/dev/apps/protein_folding/helixfold

论文地址:https://arxiv.org/abs/2207.05477

四. 使用PyMOL对结果进行图形化展示

Step 1. 应用中心搜索PyMOL;

Step 2. 点击提交作业,选择图形界面提交;

Step 3. 启动PyMOL,选择硬件配置并启动;

Step 4. 通过VNC连接启动的linux工作站,使用软件;