暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

开启「云超算」,轻松玩转蛋白质折叠

Microsoft云科技 2021-08-20
2110

跳舞着的流水啊,在你途中的流沙。要求你的歌声,你的流动呢。你肯夹跛足的泥沙而俱下么?她的热切的脸。——《飞鸟集》

跳舞着的流水啊,在你途中的流沙。要求你的歌声,你的流动呢。你肯夹跛足的泥沙而俱下么?她的热切的脸。——《飞鸟集》



超级计算机对科研工作的重要性不言而喻,强大的算力使得超算在几乎每个科研领域都做出了显著贡献。然而传统的超算实在是太!贵!!了!!!前期建设部署和后续使用维护都耗资不菲,周期也很长。

为解决这种问题,科学家们想出了很多方案。其中最有趣的,莫过于各种基于互联网的「分布式计算」,任何人只要下载一个客户端,即可在电脑闲置时自动运行来处理数据。例如斯坦福大学在二十多年前发起的Folding@Home项目,可将闲置算力汇集起来,用于精确模拟蛋白质折叠和错误折叠过程,以便更好地了解阿尔茨海默症、癌症等疾病的研究。类似的项目还有进行基因结构研究的Genome@Home等等。但时效性仍是问题,数据处理的完成时间难于预测。

文末有互动好礼!


近期,ScienceNature期刊同一天分别重磅发布了基于深度学习方法的蛋白质预测工具RoseTTAFoldAlphaFold2,并开源了相关代码,令业界为之一振。新方法将为人类生物学蛋白质折叠的计算问题带来根本性突破。

在云计算迅猛发展的今天,科研工作者们是否有更好的方式,利用蛋白质折叠最新的开源成果,更快速地开展研究,并及时获得研究结果呢?

不妨试试「Folding@Azure」吧


Azure云提供的,即开即用的强大算力无疑是非常好的选择!我们不仅可以采用最新基于Milan CPU的超算机型,还有搭载Nvidia A100V100T4等丰富GPU加速计算的机型可以选择。本文将从详细的实操步骤出发,带领大家在Azure云上搭建RoseTTAFold运行环境。

准备工作
  • 阅读知晓RoseTTAFold及其权重数据许可要求,并遵守条款中关于商业应用的约定;

  • 注册申请PyRoseTTA的许可,通过后可下载应版本的安装包(建议Python3.7 Linux版本);

  • 注册开通Azure云的全球账号;

  • 创建SSHKey并保存Pem私钥;

  • 选定Azure的工作区域(建议Southeast Asia区),创建资源组,并新建一个Vnet

  • 提交并完成Azure T4 GPU机型NCas_T4_v3配额申请,若需更快性能,亦可使用搭载V100NCs_v3系列;

  • 该实验会产生费用,按T4机型一天完成来预估,在Southeast Asia区的计算及存储花费在$50以内,详细定价信息请参考这里,使用过程的账单数据可在控制台的订阅中查询。

确认上述准备事项完成后,让我们开动吧。

启动虚机

登录到Azure控制台,通过Home->Create Resource->Virtual Machine进入虚机创建页面,设置虚拟机基本参数(可参考下图)。

其中:虚机类型选择NC16as_T4_v3,操作系统镜像选择CentOS-based HPC 7.9 Gen2,该镜像已包含GPU驱动、CUDA工具及常用HPC套件,可以简化安装过程;SSH Key设为之前准备好的密钥。

进入下一步,点击Create and attach a new disk来配置添加数据盘,考虑训练数据集的大小,建议至少配置为4096GB。点击Review + Create检查确认后点击Create创建。

启动成功后还需执行一下系统盘扩容,操作顺序为:先停止虚机(操作时勾选「保留Public IP地址」),待虚拟机变成Stopped状态后,进入虚机的Disk->点选上面一栏系统盘->Size + Performance菜单配置系统盘大小为64G、性能为P6或更高,点击Resize待右上角状态提示成功后,回到虚机属性页Start操作,并等待几分钟待虚拟机状态变为Running就绪。

通过SSH登录到服务器,执行数据盘挂载操作如下。挂载成功后可通过lsblk命令检查/dev/sdc1磁盘状态:

    sudo parted dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
    sudo mkfs.xfs dev/sdc1
    sudo partprobe dev/sdc1
    sudo mkdir data
    sudo mount dev/sdc1 data
    sudo chown azureuser:azureuser data/
    uuidstr=$(blkid | grep /dev/sdc1 | awk -F " " '{print $2}' | awk -F= '{print $2}' | sed 's/"//g')
    cat <<EOF | sudo tee -a etc/fstab
    UUID=$uuidstr data xfs defaults, nofail 1 2
    EOF
    lsblk -o NAME,HCTL,SIZE,MOUNTPOINT | grep -i "sd"

    安装应用并准备数据

    虚机配置就绪后,在SSH登录中继续执行以下安装指令,这些指令包含:

    • 安装Anaconda3,安装步骤中阅读License空格翻页,安装路径指定为/opt/anaconda3,询问是否Conda初始化时选Yes;

    • 下载RoseTTAFold Github资源;

    • 配置Conda env环境

    • 在Folding环境中安装核心的PyRosetta4组件。

      ## Install anaconda 
      wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
      chmod +x Anaconda3-2021.05-Linux-x86_64.sh
      sudo bash ./Anaconda3-2021.05-Linux-x86_64.sh
      cat <<EOF | sudo tee -a etc/profile
      export PATH=\$PATH:/opt/anaconda3/bin
      EOF
      source /etc/profile

      ## Get repo and build
      cd /data
      git clone https://github.com/RosettaCommons/RoseTTAFold.git
      cd RoseTTAFold
      conda env create -f RoseTTAFold-linux.yml
      conda env create -f folding-linux.yml
      conda env list
      ./install_dependencies.sh

      conda init bash
      source /home/azureuser/.bashrc
      conda activate folding
      wget https://asiahpcgbb.blob.core.windows.net/rosettaonazure/PyRosetta4.Release.python37.linux.release-289.tar.bz2
      tar -vjxf PyRosetta4.Release.python37.linux.release-289.tar.bz2
      cd PyRosetta4.Release.python37.linux.release-289/setup
      python setup.py install
      python #To verify the pyrosetta lib in python commandline
      #then input two commands: <<<import pyrosetta; <<<pyrosetta.init()
      conda deactivate #back to conda (base)
      conda deactivate    #back to VM shell 
      上述步骤中PyRosetta4安装好后,启动Python并执行导入和初始化,检查确认PyRosetta4安装后的状态正常,提示信息无报错如下,这点很重要。
        (folding) [azureuser@vmRoseTTAFold RoseTTAFold]$ python
        Python 3.7.10 (default, Jun 4 2021, 14:48:32)
        [GCC 7.5.0] :: Anaconda, Inc. on linux
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import pyrosetta;
        >>> pyrosetta.init()
        PyRosetta-4 2021 [Rosetta PyRosetta4.Release.python37.linux 2021.27+release.7ce64884a77d606b7b667c363527acc846541030 2021-07-09T18:10:05] retrieved from: http://www.pyrosetta.org
        (C) Copyright Rosetta Commons Member Institutions. Created in JHU by Sergey Lyskov and PyRosetta Team.
        core.init: Checking for fconfig files in pwd and ./rosetta/flags
        core.init: Rosetta version: PyRosetta4.Release.python37.linux r289 2021.27+release.7ce6488 7ce64884a77d606b7b667c363527acc846541030 http://www.pyrosetta.org 2021-07-09T18:10:05
        core.init: command: PyRosetta -ex1 -ex2aro -database /home/azureuser/.conda/envs/folding/lib/python3.7/site-packages/pyrosetta-2021.27+release.7ce6488-py3.7-linux-x86_64.egg/pyrosetta/database
        basic.random.init_random_generator: 'RNG device' seed mode, using '/dev/urandom', seed=-2055557650 seed_offset=0 real_seed=-2055557650
        basic.random.init_random_generator: RandomGenerator:init: Normal mode, seed=-2055557650 RG_type=mt19937
        >>>

        按Ctrl+D退出,并执行conda deactivate返回至虚拟机环境。

        紧接着是数据准备,包含权重数据和参考蛋白质样本库。数据量较大,我们在Azure Blob上存放了这些数据的副本,建议通过这些链接下载速度更快。由于有些单体数据大,下载后解压会比较慢(小时级),可以打开登陆多个SSH进程分别执行且勿中断保证数据完整。

        解压完成后可用du -sh <dirname>命令检查bfdpdb100UniRef30三个目录的数据量分别应为1.8TB、667GB和181GB。

          cd /data/RoseTTAFold/
          ## wget https://files.ipd.uw.edu/pub/RoseTTAFold/weights.tar.gz
          wget https://asiahpcgbb.blob.core.windows.net/rosettaonazure/weights.tar.gz
          tar -zxvf weights.tar.gz

          ## uniref30 [46G]
          ## wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz
          wget https://asiahpcgbb.blob.core.windows.net/rosettaonazure/UniRef30_2020_06_hhsuite.tar.gz
          mkdir -p UniRef30_2020_06
          tar -zxvf UniRef30_2020_06_hhsuite.tar.gz -C ./UniRef30_2020_06

          ## BFD [272G]
          ## wget https://bfd.mmseqs.com/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz
          wget https://asiahpcgbb.blob.core.windows.net/rosettaonazure/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz
          mkdir -p bfd
          tar -zxvf bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz -C ./bfd

          ## structure templates (including *_a3m.ffdata, *_a3m.ffindex) [over 100G]
          ## wget https://files.ipd.uw.edu/pub/RoseTTAFold/pdb100_2021Mar03.tar.gz
          wget https://asiahpcgbb.blob.core.windows.net/rosettaonazure/pdb100_2021Mar03.tar.gz
          tar -zxvf pdb100_2021Mar03.tar.gz

          运行及性能

          接下来即可运行RoseTTAFold应用了:(注意脚本第二个参数勿遗漏,它代表当前工作路径)。

            cd example
            ../run_pyrosetta_ver.sh input.fa .

            首次运行需构建MSA参数及执行HHsearch搜索,时间较长,建模及预测约需30分钟,执行成功的输出如下,example/model/路径下会生成优选的5个pdb蛋白质模型结果命名为model_x.pdb,AI模型训练的过程日志可在./log/folding.stdout文件查看。

              [azureuser@vmRoseTTAFold example]$ ../run_pyrosetta_ver.sh input.fa .
              Running HHblits
              Running PSIPRED
              Running hhsearch
              Predicting distance and orientations
              Running parallel RosettaTR.py
              Running DeepAccNet-msa
              Picking final models
              Final models saved in: ./model
              Done 

              执行如下命令运行端到端预测分析,运行10分钟内即可完成,会在example路径下生成t000_.e2e.pdb蛋白质结果文件。
                mv t000_.3track.npz t000_.3track.npz.origin
                ../run_e2e_ver.sh input.fa .

                在预测步骤时可观察到GPU利用率接近满载,截图如下所示。另外,run_pyrosetta_ver.shrun_e2e_ver.sh中(代码第18行)的CPU和内存都默认设为8 vCPU及64G RAM,如需更多的CPU资源加入或使用Azure更高配置机型时,运行前可手动修改这一配置以充分利用计算资源。

                计算完成后,PyMOL工具中查看分别用pyrosetta和end2end生成的两个pdb蛋白质结构如下图所示。接下来就是把输入换成您的fasta文件了,还可以根据这两个脚本的示范来编写您自己的运行脚本。


                总结



                以上就是单个虚机上搭建蛋白质折叠分析环境的过程,虚机在不使用的情况可将其停止以节约费用,数据盘建议生成快照进行备份,后续可随时重建。蛋白质样本库还可用AZcopy工具上传存入您账号下的Blob存储中以备后用。在确认不再使用计算和存储时,控制台中删除资源组即可清除对应资源。

                有问题可通过GitHub反馈或讨论。对于大规模的并行分析,我们亦有构建HPC版RoseTTAFold高性能集群的解决方案,欢迎与我们联系对接。

                希望Azure云计算助力加速您星辰大海的征途!

                # 有奖问答#


                动手实验中用到的VM镜像名称是?


                评论区分享您的观点,我们将抽取一位幸运用户,送出Azure 定制礼品。快来留下您的观点吧!


                1





                点击“在看”,分享Azure 云资讯

                文章转载自Microsoft云科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论