LLM - 搭建 ProteinGPT 结合蛋白质结构 PDB 知识的行业 ChatGPT 系统

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/131403263

ProteinChat

论文:ProteinChat: Towards Enabling ChatGPT-Like Capabilities on Protein 3D Structures

工程:https://github.com/UCSD-AI4H/proteinchat

ProteinChat 是基于大型语言模型(LLM)的原型系统,能够根据蛋白质的三维结构进行问答和文本解释。ProteinChat 利用一个复合编码器块和一个 LLM 解码器块,协同工作,提供蛋白质相关的洞察。复合编码器块结合了一个图神经网络(GNN)编码器块和一个 Transformer 编码器块,有效地从蛋白质结构中提取重要特征。LLM 解码器利用编码器块生成的蛋白质嵌入和用户的问题,生成信息丰富的答案。为了训练 ProteinChat,构建了RCSB-PDB蛋白质描述数据集,包含了143,508个来自公开可用资源的蛋白质-描述对。ProteinChat 是第一个利用LLM来研究蛋白质的工作,为进一步探索和利用ChatGPT-like系统在蛋白质研究中的应用奠定了基础。

参考:LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统


1. 配置环境

下载工程与配置 conda 环境:

# 文件较多,下载需要一段时间
# git clone https://github.com/UCSD-AI4H/proteinchat
git clone git@github.com:UCSD-AI4H/proteinchat.git  # 建议使用git模式下载cd proteinchat
conda env create -f environment.yml
conda activate proteinchat
pip install einops

建议参考 DrugGPT 的配置方案。

安装 pytorch 相关的包:

nvidia-smi
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge

验证 PyTorch 通过:

python -c "import torchvision; print(torchvision.__version__)"
0.13.1
python -c "import torch; print(torch.__version__)"
1.12.1

准备数据集:

# 链接
https://drive.google.com/u/0/uc?id=1xdiBP-FPMfwpMGBUPAKd0FyRrqQtxAEK&export=download   # qa_all.json (499M)
https://drive.google.com/u/0/uc?id=1iMgPyiIzpvXdKiNsXnRKn2YpmP92Xyub&export=download   # abstract.json (182M) 
https://drive.google.com/u/0/uc?id=1AeJW5BY5C-d8mKJjAULTax6WA4hzWS0N&export=download   # 暂时无法访问pip install gdown
gdown https://drive.google.com/uc?id=1xdiBP-FPMfwpMGBUPAKd0FyRrqQtxAEK  # 已下载完成
gdown https://drive.google.com/uc?id=1iMgPyiIzpvXdKiNsXnRKn2YpmP92Xyub  # 已下载完成

下载 Google云盘使用 gdown 软件,参考:GitHub gdown,注意本地可以使用,服务器需要连接外网。

ESM-IF1 数据问题,等待解决,暂时使用临时数据。


2. 训练模型

准备辅助模型:

  • bert-base-uncased:参考 CSDN - Hugging Face 工程 BERT base model (uncased) 配置
  • vicuna-13b-weight:参考 CSDN - 基于 Vicuna-13B 参数计算搭建私有 ChatGPT 在线聊天

准备训练数据:

  • pt:已经从 ESM-IF1 提取的 PDB 特征。
  • ann.json:PDB的描述信息

其中,ann.json 的数据如下:

[{"pdb_id": "6nk3","caption": "Mxra8 is a receptor for multiple arthritogenic alphaviruses that cause debilitating acute and chronic musculoskeletal disease in humans. Herein, we present a 2.2\u00a0\u00c5 resolution X-ray crystal structure of Mxra8 and 4 to 5\u00a0\u00c5 resolution cryo-electron microscopy reconstructions of Mxra8 bound to chikungunya (CHIKV) virus-like particles and infectious virus. The Mxra8 ectodomain contains two strand-swapped Ig-like domains oriented in a unique disulfide-linked head-to-head arrangement. Mxra8 binds by wedging into a cleft created by two adjacent CHIKV E2-E1 heterodimers in one trimeric spike and engaging a neighboring spike. Two binding modes are observed with the fully mature VLP, with one Mxra8 binding with unique contacts. Only the high-affinity binding mode was observed in the complex with infectious CHIKV, as viral maturation and E3 occupancy appear to influence receptor binding-site usage. Our studies provide insight into how Mxra8 binds CHIKV and creates a path for developing alphavirus entry inhibitors."},{"pdb_id": "6dbp","caption": "The MUSASHI (MSI) family of RNA binding proteins (MSI1 and MSI2) contribute to a wide spectrum of cancers including acute myeloid leukemia. We find that the small molecule Ro 08-2750 (Ro) binds directly and selectively to MSI2 and competes for its RNA binding in biochemical assays. Ro treatment in mouse and human myeloid leukemia cells results in an increase in differentiation and apoptosis, inhibition of known MSI-targets, and a shared global gene expression signature similar to shRNA depletion of MSI2. Ro demonstrates in vivo inhibition of c-MYC and reduces disease burden in a murine AML leukemia model. Thus, we identify a small molecule that targets MSI's oncogenic activity. Our study provides a framework for targeting RNA binding proteins in cancer."},
...
]

修改训练脚本train_esm.py,支持使用 mini 训练集 或 全量数据集:

datasets_raw = ESMDataset(pdb_root="data/esm_subset/pt",ann_paths="data/esm_subset/ann.json",chain="A")

修改配置文件 minigpt4/configs/models/minigpt4.yaml

llama_model: "workspace/vicuna-13b-weight"

修改模型文件 minigpt4/models/blip2.py,即辅助模型 bert-base-uncased 的路径,即:

class Blip2Base(BaseModel):@classmethoddef init_tokenizer(cls):# tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")tokenizer = BertTokenizer.from_pretrained("workspace_v2/bert-base-uncased")tokenizer.add_special_tokens({"bos_token": "[DEC]"})return tokenizer

运行训练脚本:

nvidia-smi
CUDA_VISIBLE_DEVICES=2 bash finetune.sh

运行异常,请参考 LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统

训练日志,如下:

2023-06-26 17:37:16,309 [INFO] Start training
2023-06-26 17:37:16,317 [INFO] Start training epoch 15, 762 iters per inner epoch.
Train: data epoch: [15]  [  0/762]  eta: 0:33:20  lr: 0.000010  loss: 1.3494  time: 2.6249  data: 0.0000  max mem: 35719
Train: data epoch: [15]  [ 50/762]  eta: 0:03:14  lr: 0.000010  loss: 1.3266  time: 0.2184  data: 0.0000  max mem: 35719
...
Train: data epoch: [99]  [750/762]  eta: 0:00:02  lr: 0.000001  loss: 0.5560  time: 0.1983  data: 0.0000  max mem: 35720
Train: data epoch: [99]  [761/762]  eta: 0:00:00  lr: 0.000001  loss: 0.2065  time: 0.2299  data: 0.0000  max mem: 35720
Train: data epoch: [99] Total time: 0:02:52 (0.2260 s / it)
2023-06-26 21:41:19,045 [INFO] Averaged stats: lr: 0.0000  loss: 0.4527
2023-06-26 21:41:19,132 [INFO] No validation splits found.
2023-06-26 21:41:19,139 [INFO] Saving checkpoint at epoch 99 to proteinchat/minigpt4/output/minigpt4_stage2_esm/20230626164/checkpoint_99.pth.
2023-06-26 21:41:19,377 [INFO] No validation splits found.
2023-06-26 21:41:19,377 [INFO] Training time 4:47:07

Bug: RuntimeError: The server socket has failed to listen on any local network address. The server socket has failed to bind to [::]:29500 (errno: 98 - Address already in use). The server socket has failed to bind to 0.0.0.0:29500 (errno: 98 - Address already in use).

参考:CSDN - Pytorch中DDP :The server socket has failed to bind to [::]:29500

具体而言,修改 finetune.sh 文件,torchrun 增加参数 --master_port,将默认的29500修改为29501,即可:

torchrun --master_port=29501 train_esm.py --cfg-path train_configs/minigpt4_stage2_esm.yaml

3. 推理模型

已训练完成,复制模型:

cp minigpt4/output/minigpt4_stage2_esm/20230626164/checkpoint_99.pth ckpt/checkpoint_99.pth

模型位于 ckpt/checkpoint_99.pth

修改推理配置 eval_configs/proteinchat_eval.yaml

ckpt: 'ckpt/checkpoint_99.pth'

修改网页脚本 demo_esm.py,增加端口和链接:

# 默认是 127.0.0.1 无法访问
demo.launch(share=True, enable_queue=True, server_name="0.0.0.0", server_port=9300)

运行程序:

CUDA_VISIBLE_DEVICES=2 bash demo.sh

运行成功,推理特征速度较慢。

ProteinChat

参考

  • CSDN - 在服务器上下载google云端硬盘文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/766.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库监控与调优【十七】—— 表结构设计优化

表结构设计优化 第一范式(1NF) 字段具有原子性,即数据库的每一个字段都是不可分割的原子数据项,不能是集合、数组、记录等非原子数据项 当实体中的某个属性有多个值时,必须拆分为不同的属性 例子: 如图…

【广州华锐互动】机械设备事故VR模拟体验系统

随着虚拟现实技术的不断发展,越来越多的行业开始尝试将VR技术应用到实际场景中,以提供更加真实的体验。其中,机械伤害事故VR警示教育系统的出现,为机械工程师、安全培训人员等行业提供了一种全新的培训方式。在实现上,…

Linux基础

Linux root用户,cd ~ 相当于 cd /root 普通用户,cd ~ 相当于cd /home/当前用户名 注:cd - 返回进入此目录之前所在目录 rm --> remove mv --> move cp --> copy !! 执行最近的一次命令 echo $USER 展现当前用户名字 echo $PATH 展…

Linux:安装tomcat

注意:1.安装tomcat时最好用非root用户安装 2.可以选择新建一个用户,用户安装部署tomcat,本文将继续用fovace账户进行tomcat安装 一、前置条件 安装tomcat需要先安装jdk,所以先确定系统中是否已经有jdk,如下&#xff1a…

Docker的run流程

底层原理 Docker怎么工作? Docker为什么比VM虚拟机块? 1.Docker有比虚拟机更少的抽象层 2.docker利用的是宿主机的内核,vm需要是Guest OS 所以说,新建一个容器的时候,docker不需要像虚拟机一样加载一个系统内核&am…

消息中间件中常见问题

如何保证消息不丢失 MQ的用途 异步发送(验证码,短信,邮件)MySQL,ES,Redis之间的数据同步分布式事务削峰填谷 消息可能丢失的环境 消息在产生端时候生产端挂掉,消息未到达交换机&#xff0c…

VS里拉取时候,变成变基中,变成分离分支状态,git 头指针分离于 baf67ff

分离头指针(detached HEAD) 通常,我们工作在某一个分支上,比如 master 分支。这个时候 master 指针和 HEAD 指针是一起前进的,每做一次提交,这两个指针就会一起向前挪一步。但是在某种情况下(例…

Revit中怎么画阶梯式旋转楼梯及生成桩

一、Revit中如何绘制阶梯式旋转楼梯 在楼梯的绘制过程中,如果采用(草图)楼梯的绘制方式,是没有办法将绘制的楼梯设置为阶梯式楼梯的,那么接下来我将采用构件的方式绘制阶梯式楼梯。 我们首先来看看阶梯式旋转楼梯和普通的旋转楼梯的区别&…

【C++】一些关于visual stdio,vscode,Mingw的思考 |bug

文章目录 今天在做YOLOV8的C部署时遇到的一些问题: 在进行一系列的操作之后会生成解决方案文件sln: 当然按道理到这一步之后,应该使用make命令进行下一步操作(但是我确实不会make命令,所以准备进sln来生成解决方案)&…

(0018) H5-VS Code保存后自动格式化Vue代码

安装插件Vetur 配置自动格式化,具体路径【文件】-【首选项】-【设置】,打开设置(json) 将以下内容复制到settings.json {// vscode默认启用了根据文件类型自动设置tabsize的选项"editor.detectIndentation": fals…

最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇教程

详情点击链接:最新导则下生态环评报告编制技术暨报告篇、制图篇、指数篇、综合应用篇 一,生态环评报告编制规范 结合生态环境影响评价最新导则,详述不同类型项目生态环评报告编制要求与规范 二,土地利用图 1、土地利用分类体系…

免费可用的GPU

这里介绍两个可以免费使用GPU的地方。 百度飞桨AI Studio 百度飞桨AI Studio提供的BML Codelab环境可以免费使用GPU。并且百度飞桨AI Studio中也开源了很多项目。只需要运行感兴趣的项目就会自动将该项目fork到自己的项目列表中。后面可在个人中心“我的项目”中查看。每天运…