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.rhkb.cn/news/7755.html

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

相关文章

ChatGPT最新高校排名出炉:中国最好的十大高校

ChatGPT大家想必已经知道是什么了,那么在ChatGPT眼中中国最好的十大高校是那些呢?它列出来的榜单吓了我一跳,以下是ChatGPT所列出的学校名单和上榜原因。 清华大学 清华大学(Tsinghua University),简称“清…

AI 旅行工具大盘点!31 款 AI 旅行行程规划工具,一键规划旅行路线!

0. 未来百科 未来百科(https://nav.6aiq.com),是一个知名的AI产品导航网站 —— 为发现全球优质AI工具而生 。目前已 聚集全球3000优质AI工具产品 ,旨在帮助用户发现全球最好的AI工具,同时为研发AI垂直应用的创业公司提供展示窗口&#xff0c…

ChatGPT有长期记忆了/ “微信版知乎”推出在即/ 高盛预测全球3亿岗位被AI取代…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是3月29日,周三。 量子位主办的中国AIGC产业峰会,圆满结束。 今天的日报君,来晚了一些,不过内容依然精彩。 孟晚舟4月1日起当值华为轮值董事长 经济观察网获悉&a…

从密码学了解如何确定物联网信息安全

一.物联网安全概述 1.信息安全的主要内容 2.密码学 编码学和分析学的关系:相互对立、相互依存、相互促进 3.密码学历史 1.第一阶段:几千年前到1949年,此时还没有形成一门科学,靠密码分析者的直觉和经验来进行 代表:C…

ChatGPT时代,Python编程还是人工智能

在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。在如天上繁星般的编程语言中,Python是独领风骚的超级巨星,凭借简洁易懂的语法和强大的功能,Python不光是专业开发者必备语言,也是职场精英简历中不可…

ChatGPT 与人工智能发展史:从起源到未来

🌟 引言 近年来,人工智能(AI)取得了引人注目的进步,深刻地改变了我们的生活和工作方式。其中,ChatGPT 作为一款强大的语言模型,展现了自然语言处理领域的最新成果。 本文将回顾人工智能的发展…

ChatGPT:通用人工智能设计范式方法

通用人工智能设计范式未来发展方向 https://openai.com/ https://riscv.org/ 一、ChatGPT(AIGC)开启通用人工智能AGI新纪元时代 二、通用人工智能设计范式现状和方法 目前随着ChatGPT在国际人工领域的开放体验,一举重新点燃人工发展过程…

uniapp+springboot搭建一个简单的ChatGpt项目

1.项目介绍 本项目是新手程序员在工作闲暇之余写的一个项目, 先放效果图,比较简陋 前端 前端使用UNIAPP,优点是可以根据需要打包成APP,或者小程序。 后端 后端主要使用的是spring,java版本是17,这里本…

ChatGPT与BimAnt的1小时对话实录【数字孪生】

本文为BimAnt和ChatGPT对数字孪生相关问题的解答,感觉这个AI真的已经“懂”了很多东西,让人恍惚间忘了是在和bot对话。 BimAnt:hello ChatGPT:Hello! How can I help you today? BimAnt:can you speak chinese&am…

【AIGC】3、Visual ChatGPT | 支持图像/文本双输入的对话系统开源啦

文章目录 一、背景二、Visual ChatGPT2.1 对系统规则的提示管理2.2 基础模型的提示管理2.3 . 用户提问的提示管理2.4 基础模型输出的提示管理 三、实验3.1 实验设置3.2 多轮对话的完整案例3.3 Case Study of Prompt Manager 四、当前的局限性五、总结 论文:Visual C…

Chat GPT太强,多种玩法曝光

1、模拟面试、考试,备考等,以面试为例,让它扮演一个角色 先让它扮演互联网行业的商业分析师 2、写各种发言稿、文章、报告,给它你的明确要求和目标,以发言稿为例,输入继续,可以持续优化 3、…

ChatGPT实现仪表盘生成

仪表盘生成 Grafana是开源社区最流行的数据可视化软件,一定程度上也和 superset 一起被视为 tableau 等商业 BI 的开源替代品,很多IT 团队、科研团队,都会使用 Grafana 来做数据监控、挖掘分析。Grafana社区也有很多贡献者,在 gi…

让 ChatGPT 如虎添翼的几个工具

我又发现了许多基于ChatGPT的应用,只推最好用的,强烈建议大家都感受一下。 极简搭建 ChatGPT 演示网页 项目地址:https://github.com/Chanzhaoyu/chatgpt-web 该项目是用Express和Vue3搭建的ChatGPT演示网页,支持双模型,提供了两种…

玩转ChatGPT:Code interpreter (vol. 1)

一、写在前面 喜大普奔,GPT-4传说中的Code interpreter插件已经可以用了!!! 二、什么是Code interpreter 代码解释器(Code Interpreter)是一个工具,它能够读取和执行编程代码。这里有几个主要…

当我和ChatGPT聊Everything as Code

以下是我和ChatGPT的聊天原文。一开始还有点惊喜,震惊。 越到后面,越感到失望。网络上大肆宣传ChatGPT要代替人类的文章,我怕是专门炒流量赚钱的吧? 我个人觉得,它离代替人类,还远着呢。 Everything as Cod…

使用chatGPT写一个java程序,发布http服务并用json格式解析

2015年12月,OpenAI公司于美国旧金山成立。OpenAI最初成立旨在实现DeepMind 和Google无法做到的一切。它将作为一个非营利组织运营,致力于使先进人工智能的好处民主化,并承诺发布其研究成果,并开源其所有技术。 具体来说&#xff…

学习笔记之软件设计——使用starUML画用例图和类图

重点1. 1.理解面向对象方法的4个要点: 1)客观世界是由各种对象组成,任何事务都是对象。 2)把所有对象都划分成各种对象类。 3)按照子类与父类的关系,把若干个对象类组成一个有层次结构的系统。…

chatGPT的一个不足及解决思路,抽象认知的实现思路

来源:CreateAMind 作者:ALLInCreateAmind 说明抽象之前,我们先看几幅抽象的图片,感受一下抽象 第二部分的实现方法我们再回到这些图片的讨论。 简介: 语言作为一个抽象符号,人是可以理解每个语言单词的意义…

Android 使用CardView轻松实现卡片式设计

Material design中有一种很个性的设计概念:卡片式设计(Cards),这种设计与传统的List Item有所区别,Cards包含更多的内容元素和拥有自己的UI特征,关于Cards的设计规范可以参考官网介绍: https://…

设计干货:8种卡片设计的技巧

卡片是我们随处可见的小UI组件,原因很简单,它们占用的空间非常小,并且可以显示足够的信息,通常还有1-2种选项。 为什么使用卡片: 卡片能够存在和流行,因为它们本身拥有简约的设计和良好的可用性&#xff0…