OpenFold2.0 基于NPU的推理适配与测试

简介: 本教程详细介绍了 OpenFold 的环境搭建、代码部署、依赖安装、数据集准备及推理测试全流程。首先通过 Anaconda 创建 Python3.9 环境并配置相关库,接着克隆 OpenFold 代码仓库并安装必要依赖(如 PyTorch、dllogger、hhsuite 等)。随后准备 PDB 数据集与模型参数,调整脚本路径以适配运行环境。最后执行推理脚本完成测试,并针对常见报错提供了解决方案,例如更新 NumPy、SciPy 或调整 GPU 配置等,确保流程顺利运行。

环境搭建

#下载安装包
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-aarch64.sh
chmod +x Anaconda3-2024.10-1-Linux-aarch64.sh #安装
bash Anaconda3-2024.10-1-Linux-aarch64.sh #设置环境变量
vim ~/.bashrc
export PATH=/home/openfold/anaconda3/bin:$PATH :wq
source ~/.bashrc
#创建 python3.9 环境,并激活环境
conda init
conda create -n openfold_env python=3.9
conda activate openfold_env
#配置 conda 的 lib 库
vim ~/.bashrc
export LD_LIBRARY_PATH=/home/openfold/anaconda3/lib:$LD_LIBRARY_PATH :wq
source ~/.bashrc

下载代码及安装依赖

#下载代码
cd /home/openfold
git clone https://gitee.com/ascend/ModelZoo-PyTorch.git
#安装依赖
cd /home/openfold/ModelZoo-PyTorch/PyTorch/built-in/others/OpenFold_for_PyTorch
pip3 install -r 2.1_requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install git+https://github.com/NVIDIA/dllogger.git
pip install torch==2.1.0 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple #下载安装 torch_npu
wget https://gitee.com/ascend/pytorch/releases/download/v6.0.0.1-pytorch2.1.0/torch_npu- 2.1.0.post11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
pip3 install torch_npu-2.1.0.post11-cp39-cp39- manylinux_2_17_aarch64.manylinux2014_aarch64.whl
#安装其它依赖
conda install -c bioconda -c conda-forge hhsuite
conda install -c bioconda kalign2
conda install -c bioconda -c conda-forge mmseqs2
conda install -c conda-forge openmm=7.7.0
conda install -c conda-forge pdbfixer
#构建安装 openfold
bash scripts/install_third_party_dependencies.sh python setup.py install

数据集准备

#安装 aws
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
unzip awscliv2.zip sudo ./aws/install #获取 pdb_mmcif 数据集 mkdir pdb_data
aws s3 cp s3://openfold/pdb_mmcif.zip pdb_data/ --no-sign-request #获取 duplicate_pdb_chains.txt
aws s3 cp s3://openfold/duplicate_pdb_chains.txt . --no-sign-request 解压 pdb_data
cd pdb_data
unzip pdb_mmcif.zip -d pdb_data
#下载参数
bash scripts/download_alphafold_params.sh openfold/resources
#修改 param 路径
vim /home/openfold/ModelZoo-PyTorch/PyTorch/built- in/others/OpenFold_for_PyTorch/examples/monomer/../../run_pretrained_openfold.py
line 490 改为:
"/home/openfold/ModelZoo-PyTorch/PyTorch/built-in/others/OpenFold_for_PyTorch/openfold", "resources", "params",
#修改 inference.sh
#修改数据集路径和 device
cd examples/monome
vim inference.sh
export MMCIF_DIR=../../pdb_data/mmcif_files/ --model_device "npu:0"

推理测试

#执行推理脚本 
bash inference.sh

v2-eec544ae7fb1a329944dbb62c7f5e988_1440w.png

报错与解决方法

1、报错 ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/openfold/anaconda3/envs/openfold_env/lib/python3.9/site- packages/numpy/fft/_pocketfft_umath.cpython-39-aarch64-linux-gnu.so)

#更新 numpy 版本
pip3 uninstall numpy
pip3 install numpy==1.24.0

2、报错 ImportError: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/openfold/anaconda3/envs/openfold_env/lib/python3.9/site- packages/scipy/spatial/_ckdtree.cpython-39-aarch64-linux-gnu.so)

pip3 uninstall scipy
pip install --no-binary :all: scipy

3、报错 aria2c: /home/openfold/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /home/openfold/anaconda3/envs/openfold_env/bin/../lib/././libicuuc.so.75)

conda install -c conda-forge libstdcxx-ng=12.2.0

4、报错:There is no registered Platform called “CUDA” ValueError:Minimization failed after 100 attempts.

vim ../../openfold/np/relax/amber_minimize.py # 修改 use_gpu 为 False
相关文章
|
10月前
|
并行计算 PyTorch 开发工具
基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold
OpenFold是一种基于深度学习的蛋白质结构预测模型,广泛应用于蛋白质从头预测、功能位点解析、突变效应模拟等领域。该模型的核心目标是通过大规模预训练和多阶段优化,从氨基酸序列中高效、准确地推断蛋白质的三维结构。
基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold
|
10月前
鸿蒙开发:实现一个标题栏吸顶
本身并不难,处理好滑动位置和手势即可,当然了,里面也有两个注意的点,一个是解决手势冲突的nestedScroll,这个之前的文章中讲过,还有一个就是拦截瀑布流组件的滑动事件,在某些状态下禁止它的滑动。
320 49
鸿蒙开发:实现一个标题栏吸顶
|
12月前
|
机器学习/深度学习 人工智能 算法
PeptideBERT:基于Transformer用于肽性质预测的语言模型
本文介绍了PeptideBERT模型及其在昇腾设备上的部署方法。PeptideBERT是一种基于Transformer架构的蛋白质语言模型,通过微调预训练模型ProtBERT,可预测肽的溶血性、溶解性和抗非特异性吸附性等关键性质。其输入表示包括词嵌入、物理化学属性编码和位置编码,并采用多头自注意力机制捕捉序列依赖关系。
|
10月前
|
机器学习/深度学习 人工智能 并行计算
基于昇腾适配蛋白质序列模型ProteinMPNN
ProteinMPNN是一种基于深度学习的蛋白质序列设计模型,核心目标是解决“逆向折叠问题”(inverse folding problem),即根据给定的蛋白质三维结构,设计出能够折叠成该结构的氨基酸序列。ProteinMPNN在计算和实验测试中都有出色的性能表现,不同位置的氨基酸序列可以在单链或多链之间偶联,从而广泛的应用于当前蛋白质设计上。ProteinMPNN不仅在天然蛋白质序列恢复率上面性能要高于传统的Rosetta方法,并且可以恢复先前设计失败的蛋白质。通过前沿AI技术突破科学研究的效率瓶颈,对于蛋白质工程、药物设计、酶设计等领域有极其重要的意义。
基于昇腾适配蛋白质序列模型ProteinMPNN
|
10月前
|
机器学习/深度学习 数据采集 算法
基于昇腾适配基因表达预测模型Geneformer
Geneformer被广泛应用于疾病建模、治疗靶点发掘、基因网络预测与调控分析、基因功能预测与剂量敏感性分析、单细胞转录组数据集成与标准化、遗传变异解释与GWAS靶点优先排序。该案例既有算法原理,也有手把手的昇腾部署教学,包含细胞分类、基因分类、提取细胞嵌入图、细胞多分类的微调任务
基于昇腾适配基因表达预测模型Geneformer
|
10月前
|
机器学习/深度学习 PyTorch API
昇腾AI4S图机器学习:DGL图构建接口的PyG替换
本文探讨了在图神经网络中将DGL接口替换为PyG实现的方法,重点以RFdiffusion蛋白质设计模型中的SE3Transformer为例。SE3Transformer通过SE(3)等变性提取三维几何特征,其图构建部分依赖DGL接口。文章详细介绍了两个关键函数的替换:`make_full_graph` 和 `make_topk_graph`。前者构建完全连接图,后者生成k近邻图。通过PyG的高效实现(如`knn_graph`),我们简化了图结构创建过程,并调整边特征处理逻辑以兼容不同框架,从而更好地支持昇腾NPU等硬件环境。此方法为跨库迁移提供了实用参考。
|
10月前
|
机器学习/深度学习 人工智能 API
基于昇腾适配Meta AI在Science正刊发表的蛋白质结构预测模型ESMFold
ESMFold是由Meta AI团队开发的一种基于深度学习的高效蛋白质结构预测模型,其核心目标是利用大规模蛋白质语言模型(ESM)直接从氨基酸序列快速推断蛋白质的三维结构。ESMFold通过预训练的语言模型捕捉序列中的进化与结构关联性,结合几何优化模块生成高精度原子坐标,显著降低了传统方法对多重序列比对(MSA)和模板依赖的计算成本。该模型在蛋白质从头预测(de novo prediction)、功能位点解析、突变效应模拟等领域具有重要价值,以高效的推理性能,推动结构预测技术的普惠化应用。
|
10月前
|
机器学习/深度学习 编解码 人工智能
基于昇腾适配数据驱动的全球天气预报模型Fuxi
Fuxi是由复旦大学的研究人员开发的一个基于数据驱动的全球天气预报模型,主要由Cube Embedding、U-Transformer和全连接层构成。Fuxi摒弃了传统复杂的微分方程,转而通过多阶段机器学习架构,可提供15天的全球预报。时间分辨率为6小时,空间分辨率为0.25°。
|
10月前
|
机器学习/深度学习 数据采集 API
|
人工智能 移动开发 自然语言处理
什么是MaaS
MaaS(模型即服务)是一种以AI模型为核心的服务模式,提供从预训练、调优到部署的全生命周期支持。用户能低成本访问和集成先进AI模型,提升业务智能化。其核心特点包括模型为中心、灵活部署、成本优化及开放生态。应用场景涵盖智能客服、交通管理和移动应用开发等,助力企业快速实现智能化转型。
7543 2