百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

基于昇腾适配DeepMind团队发布的蛋白质结构预测模型OpenFold-2

ztj100 2025-07-03 02:32 7 浏览 0 评论

4.4 安装OpenMM

直接pip install openmm会报错

报错原因:当前服务器架构是aarch64,而通过pypi下载的openmm,没有aarch64架构的whl离线包,所以会安装失败。

pypi.org上面仅有8.1.1版本以上且没有aarch64架构的包

通过源码编译的方式安装失败

解决办法

在conda-forge的package中搜索openmm

选择要安装的版本和机器架构

下载openmm的预编译的二进制包(非源码包)

注: 如果是conda环境,直接在当前环境执行

conda install --use-local openmm-7.7.0-py39h127581e_1.tar.bz2

若是docker环境还需以下操作

解压

tar -xjf openmm-7.7.0-py39h127581e_1.tar.bz2

将openmm的python模块复制到容器中python的site-packages中

cp -r ./lib/python3.9/site-packages/openmm   /usr/local/python3.9.2/lib/python3.9/site-packages/

将openmm的共享库(.so 文件)复制到 Python 的 lib 目录并更新动态链接器缓存

cp libOpenMM*  /usr/local/python3.9.2/lib/
ldconfig

验证容器的python环境中openmm的安装情况

4.5 安装pdbfixer

直接pip install pdbfixer会报错

pip install pdbfixer

下载源码使用pip install .安装

git clone https://github.com/openmm/pdbfixer.git
pip install .

但此时默认安装的是最新版的pdbfixer,提示需要8.2版本以上的openmm

查看所有版本信息

git ls-remote --tags origin

从源码中看到1.8.1版本的pdbfixer,要求openmm的版本大于7.2即可,所以安装1.8.1版本

切换至1.8.1版本

git checkout tags/v1.8.1
pip install . 

安装成功

pip list | grep pdb

查看

5. 实验

5.1 下载openfold权重

bash scripts/download_openfold_params.sh openfold/resources

报错,需要安装aws

安装好之后重新执行

报错

原因:在Python 3环境中运行了为Python 2编写的代码。print语句缺少括号。

解决办法:卸载aws,重新安装。

curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip"
./aws/install
aws –version

重新执行脚本下载权重

bash scripts/download_openfold_params.sh openfold/resources

5.2 下载数据集

bash scripts/download_alphafold_dbs.sh data/

报错Error: aria2c could not be found. Please install aria2c (sudo apt install aria2).

apt update && apt install aria2 -y

开始下载

但原始数据集太大,手动创建蛋白质序列测试

5.3创建蛋白质序列测试文件

新建data目录,在data目录新建test.fasta

vi test.fasta

内容为

>test_sequence|PDBID|1AKI

GIVEQCCTSICSLYQLENYCN

保存退出

注:上述为简化胰岛素类似物(PDB ID: 1AKI)蛋白质序列

5.4 下载蛋白质模板文件

mkdir -p template_mmcif_dir/pdb_mmcif/mmcif_files/

下载蛋白质模板文件

https://files.wwpdb.org/pub/pdb/data/structures/divided/mmCIF/ak/1aki.cif.gz

解压之后放至
template_mmcif_dir/pdb_mmcif/mmcif_files/

5.5 推理

vi run_pretrained_openfold.py

导入torch-npu

执行推理

python3 run_pretrained_openfold.py  /home/910_tools/data/  /home/910_tools/template_mmcif_dir/pdb_mmcif/mmcif_files/  --output_dir /home/910_tools/output/ --model_device "npu:0" --config_preset "model_1_ptm"  --openfold_checkpoint_path /home/openfold/openfold/resources/openfold_params/finetuning_ptm_2.pt

报错

原因:openfold中使用了np.object的方式,而新版本numpy已不使用此写法

解决办法:

  1. 在代码中搜索所有np.object和np.bool,将其替换为object、bool
grep -rn "np\.object" openfold/
grep -rn "np\.bool" openfold/

2. 降低numpy版本,但要考虑更多的版本冲突(不建议)

执行推理

python3 run_pretrained_openfold.py  /home/910_tools/data/  /home/910_tools/template_mmcif_dir/pdb_mmcif/mmcif_files/  --output_dir /home/910_tools/output/ --model_device "npu:0" --config_preset "model_1_ptm"  --openfold_checkpoint_path /home/openfold/openfold/resources/openfold_params/finetuning_ptm_2.pt

报错

报错原因:deepspeed属性不在utils模块

解决办法:将涉及到
deepspeed.utils.is_initialized()的地方都修改为
deepspeed.comm.is_initialized()

执行推理

报错

报错原因:openfold自定义了一个注意力机制,底层会调用cuda核心进行加速

解决办法:使用原生的torch操作代替cuda操作

vi /home/910_tools/openfold/openfold/utils/kernel/attention_core.py

删除原始代码

将下面代码复制到attention_core.py保存退出

import torch
import torch.nn.functional as F
from functools import reduce
from operator import mul
class AttentionCoreFunction(torch.autograd.Function):
    @staticmethod
    def forward(ctx, q, k, v, bias_1=None, bias_2=None):
        if bias_1 is None and bias_2 is not None:
            raise ValueError("bias_1 must be specified before bias_2")
        q = q.contiguous()
        k = k.contiguous()
        v = v.contiguous()
        attention_logits = torch.matmul(q, k.transpose(-1, -2))
        if bias_1 is not None:
            attention_logits += bias_1
        if bias_2 is not None:
            attention_logits += bias_2
        attention_probs = F.softmax(attention_logits, dim=-1)
        o = torch.matmul(attention_probs, v)
        ctx.save_for_backward(q, k, v, attention_probs)
        ctx.bias_1_shape = bias_1.shape if bias_1 is not None else None
        ctx.bias_2_shape = bias_2.shape if bias_2 is not None else None
        return o
    @staticmethod
    def backward(ctx, grad_output):
        q, k, v, attention_probs = ctx.saved_tensors
        grad_q = grad_k = grad_v = grad_bias_1 = grad_bias_2 = None
        grad_v = torch.matmul(attention_probs.transpose(-1, -2), grad_output)
        grad_attn = torch.matmul(grad_output, v.transpose(-1, -2))
        grad_attn_logits = attention_probs * (grad_attn - (grad_attn * attention_probs).sum(dim=-1, keepdim=True))
        grad_q = torch.matmul(grad_attn_logits, k)
        grad_k = torch.matmul(q.transpose(-1, -2), grad_attn_logits).transpose(-1, -2)
        if ctx.bias_1_shape is not None:
            grad_bias_1 = grad_attn_logits.sum(
                dim=tuple(i for i, d in enumerate(ctx.bias_1_shape) if d == 1),
                keepdim=True
            )
        if ctx.bias_2_shape is not None:
            grad_bias_2 = grad_attn_logits.sum(
                dim=tuple(i for i, d in enumerate(ctx.bias_2_shape) if d == 1),
                keepdim=True
            )
        return grad_q, grad_k, grad_v, grad_bias_1, grad_bias_2
attention_core = AttentionCoreFunction.apply

执行推理

报错,和上述报错一本质一样

vi /home/910_tools/openfold/openfold/model/structure_module.py

注销45行attn_core_inplace_cuda = importlib.import_module("attn_core_inplace_cuda")

添加from
openfold.utils.kernel.attention_core import AttentionCoreFunction

删除435行调用
attn_core_inplace_cuda.forward_代码,使用原生softmax实现

执行推理

报错ModuleNotFoundError: No module named 'simtk.openmm'

原因:openmm或相关依赖中使用比较老的openmm导入方式

解决办法:将openfold、openmm、pdbfixer中所有涉及到simtk.openmm的地方都修改为openmm

重新执行推理

推理成功

输出文件

相关推荐

人生苦短,我要在VSCode里面用Python

轻沉发自浅度寺量子位出品|公众号QbitAI在程序员圈子里,VisualStudioCode(以下简称VSCode)可以说是目前最火的代码编辑器之一了。它是微软出品的一款可扩展的轻量...

亲测可用:Pycharm2019.3专业版永久激活教程

概述随着2020年的到来,又有一批Pycharm的激活码到期了,各位同仁估计也是在到处搜索激活方案,在这里,笔者为大家收录了一个永久激活的方案,亲测可用,欢迎下载尝试:免责声明本项目只做个人学习研究之...

Python新手入门很简单(python教程入门)

我之前学习python走过很多的歧途,自学永远都是瞎猫碰死耗子一样,毫无头绪。后来心里一直都有一个做头条知识分享的梦,希望自己能够帮助曾经类似自己的人,于是我来了,每天更新5篇Python文章,喜欢的...

Pycharm的设置和基本使用(pycharm运行设置)

这篇文章,主要是针对刚开始学习python语言,不怎么会使用pycharm的童鞋们;我来带领大家详细了解下pycharm页面及常用的一些功能,让大家能通过此篇文章能快速的开始编写python代码。一...

依旧是25年最拔尖的PyTorch实用教程!堪比付费级内容!

我真的想知道作者到底咋把PyTorch教程整得这么牛的啊?明明在内容上已经足以成为付费教材了,但作者偏要免费开源给大家学习!...

手把手教你 在Pytorch框架上部署和测试关键点人脸检测项目DBFace

这期教向大家介绍仅仅1.3M的轻量级高精度的关键点人脸检测模型DBFace,并手把手教你如何在自己的电脑端进行部署和测试运行,运行时bug解决。01.前言前段时间DBFace人脸检测库横空出世,...

进入Python的世界02外篇-Pycharm配置Pyqt6

为什么这样配置,要开发带UI的python也只能这样了,安装过程如下:一安装工具打开终端:pipinstallPyQt6PyQt6-tools二打开设置并汉化点击plugin,安装汉化插件,...

vs code如何配置使用Anaconda(vscode调用anaconda库)

上一篇文章中(Anaconda使用完全指南),我们能介绍了Anaconda的安装和使用,以及如何在pycharm中配置Anaconda。本篇,将继续介绍在vscode中配置conda...

pycharm中conda解释器无法配置(pycharm配置anaconda解释器)

之前用的好好的pycharm正常配置解释器突然不能用了?可以显示有这个环境然后确认后可以conda正在配置解释器,但是进度条结束后还是不成功!!试过了pycharm重启,pycharm重装,anaco...

Volta:跨平台开发者的福音,统一前端js工具链从未如此简单!

我们都知道现在已经进入了Rust时代,不仅很多终端常用的工具都被rust重写了,而且现在很多前端工具也开始被Rust接手了,这不,现在就出现了一款JS工具管理工具,有了它,你可以管理多版本的js工具,...

开发者的福音,ElectronEgg: 新一代桌面应用开发框架

今天给大家介绍一个开源项目electron-egg。如果你是一个JS的前端开发人员,以前面对这项任务桌面应用开发在时,可能会感到无从下手,甚至觉得这是一项困难的挑战。ElectronEgg的出现,它能...

超强经得起考验的低代码开发平台Frappe

#挑战30天在头条写日记#开始进行管理软件的开发来讲,如果从头做起不是不可以,但选择一款免费的且经得起时间考验的低代码开发平台是非常有必要的,将大幅提升代码的质量、加快开发的效率、以及提高程序的扩展性...

一文带你搞懂Vue3 底层源码(vue3核心源码解析)

作者:妹红大大转发链接:https://mp.weixin.qq.com/s/D_PRIMAD6i225Pn-a_lzPA前言vue3出来有一段时间了。今天正式开始记录一下梗vue3.0.0-be...

Windows 11 + WSL2 打造轻量级 Linux 本地开发环境实战教程

一、前言...

基于小程序 DSL(微信、支付宝)的,可扩展的多端研发框架

Mor(发音为/mr/,类似more),是饿了么开发的一款基于小程序DSL的,可扩展的多端研发框架,使用小程序原生DSL构建,使用者只需书写一套(微信或支付宝)小程序,就可以通过Mor...

取消回复欢迎 发表评论: