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

这篇具有很好参考价值的文章主要介绍了LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

论文:DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs

DrugChat,基于图神经网络和大型语言模型的原型系统,能够实现类似ChatGPT的功能,对药物分子图进行交互式问答和文本描述。本文收集了两个包含药物分子图和问题答案配对的数据集,用于训练 DrugChat。DrugChat 的目标是革新与药物分子图的交互方式,加速药物发现,预测药物性质,提供药物设计和优化的建议等。这是第一个将图数据与大型语言模型结合的系统,可以扩展到其他类型的图数据分析。

系统的工作流程如下:

  1. 用户输入一个药物分子图或一个问题。
  2. 系统将药物分子图转换为一个图向量,然后将其与问题拼接起来,形成一个输入序列。
  3. 系统将输入序列输入到一个预训练的大型语言模型中,得到一个输出序列。
  4. 系统将输出序列解码为一个答案或一个文本描述,返回给用户。

部署的模型需要重新训练。


1. 配置环境

1.1 配置基础 Docker 环境

启动 Docker 环境:

nvidia-docker run -it --privileged --network bridge --shm-size 32G --name gpt-[your name] -p 9300:9300 -v /nfs:/nfs glm:nvidia-pytorch-1.11.0-cu116-py3

安装 conda 环境:

cd files/
bash Miniconda3-py38_23.3.1-0-Linux-x86_64.sh

配置 pip 环境:

rm /opt/conda/pip.conf
rm /root/.config/pip/pip.conf
rm /root/.pip/pip.conf
mkdir ~/.pip
vim ~/.pip/pip.conf

pip.conf中配置如下:

[global]
no-cache-dir = true
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
extra-index-url = https://pypi.ngc.nvidia.com
trusted-host = pypi.ngc.nvidia.com, pypi.tuna.tsinghua.edu.cn

配置 conda 环境:

cp .condarc ~/.conda/.condarc

.condarc中配置如下:

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
channel_priority: disabled
allow_conda_downgrades: true

完成全部配置:

source ~/.bashrc
nvidia-smi

2.2 配置专属 Docker 环境

构建 PyTorch 环境:

git clone https://github.com/UCSD-AI4H/drugchat
cd drugchat
cat environment.yml
conda env create -f environment.yml
conda activate drugchat

安装时间较长,请耐心等待。

检查 PyTorch 是否可用:

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

如果不可用,卸载 PyTorch,并重新安装:

conda list | grep "torch"
conda uninstall torch pytorch torchvision torchaudio cudatoolkit

检查 CUDA 环境,选择安装命令:

nvidia-smi
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.[6 or 4 by your version] -c pytorch -c conda-forge

构建 PyTorch Geometric 环境:

conda install pyg=2.3.0 pytorch-scatter=2.1.0 -c pyg

准备 vicuna_weights,由LLaMA-13B-hfVicuna-13B的参数合成:

# 参数位置
workspace/vicuna-13b-weight

参数地址,位于 pipeline/configs/models/drugchat.yaml,修改路径:

# Vicuna
llama_model: "/home/h5guo/shared/Mini-GPT4/vicuna_weights"

2. 训练模型

运行训练命令,确保没有任何错误:

nvidia-smi
CUDA_VISIBLE_DEVICES=1 bash finetune_gnn.sh
CUDA_VISIBLE_DEVICES=1 nohup bash finetune_gnn.sh > nohup.finetune_gnn.out &

等待运行完成,运行较慢 Loading LLAMA ,如遇问题,请参考 Bugfix 部分。

训练日志,大约需要4~5h * 10 = 40~50h,即3天,如下:

2023-06-25 15:47:38,120 [INFO] Start training epoch 0, 130458 iters per inner epoch.
Train: data epoch: [0]  [     0/130458]  eta: 2 days, 21:47:19  lr: 0.000001  loss: 2.5360  time: 1.9258  data: 0.0000  max mem: 27346
2023-06-25 15:47:40,048 [INFO] Reducer buckets have been rebuilt in this iteration.
Train: data epoch: [0]  [    50/130458]  eta: 5:54:04  lr: 0.000001  loss: 2.1791  time: 0.1299  data: 0.0000  max mem: 28622
...

输出的模型文件位于:

drugchat/pipeline/output/pipeline_stage2_finetune/20230625163

3. 推理模型

复制已训练的模型,例如:

# 第2个epoch
cp pipeline/output/pipeline_stage2_finetune/20230625163/checkpoint_2.pth ckpt/with_gnn_node_feat.pth

运行 SMILES 服务以及 Chat 服务:

pip install rdkit omegaconf
python dataset/smiles2graph_demo.py  # 启动SMILES解析服务

CUDA_VISIBLE_DEVICES=2 bash demo.sh  # 启动Chat服务

注意,需要修改 demo.pygradio服务的映射IP与端口,才能从Docker之外访问,即:

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

测试数据:

N=C(N)c1ccc(OCCCOc2ccc(C3=NCCN3)cc2)cc1
# CCN1C2=C(C(=O)N(C1=O)CC)N(C(=N2)C=CC3=CC(=C(C=C3)OC)OC)C
what masks this compound unique?
what diseases can this compound potentially treat?

SMILES 转换 PDB 的在线服务:https://novoprolabs.com/tools/smiles2pdb

化学分子如下:

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

效果如下:

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

下载开源数据的测试模型,参考

Bugfix

Bug1: ImportError: libGL.so.1: cannot open shared object file: No such file or directory

OpenCV 异常,安装相应的包即可

sudo apt-get update 
sudo apt-get install ffmpeg libsm6 libxext6  -y

安装时遇到时间选项:选择 6 (Asia) 和 70 (Shanghai)

Bug2: FileNotFoundError: [Errno 2] No such file or directory: ‘ckpt/with_gnn_node_feat.pth’

修改源码 pipeline/models/mini_gpt4.py

...
ckpt_path = cfg.get("ckpt", "")  # load weights of MiniGPT-4
import os
if ckpt_path and os.path.exists(ckpt_path):
    ckpt = torch.load(ckpt_path, map_location="cpu")
...

Bug3: RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling cublasCreate(handle)

CUDA缓存过低,使用 CUDA_VISIBLE_DEVICES 选择不同的卡:

nvidia-smi
CUDA_VISIBLE_DEVICES=1,2,3,5 bash finetune_gnn.sh

Bug4: SMILES 转换服务无法启动

修改 dataset/smiles2graph_demo.py 中的循环调用即可:

...
def smiles2graph(smiles_string):
    """
    Converts SMILES string to graph Data object
    :input: SMILES string (str)
    :return: graph object
    """

    mol = Chem.MolFromSmiles(smiles_string)
    if not mol:  # 避免异常
        return {}
...

参考:文章来源地址https://www.toymoban.com/news/detail-509063.html

  • CSDN - Docker的常用命令(Image、Container、Jupiter)
  • CSDN - 高性能的 PyTorch 训练环境配置 (PyTorch3D 和 FairScale)
  • CSDN - 基于 Vicuna-13B 参数计算搭建私有 ChatGPT 在线聊天
  • CSDN - ModuleNotFoundError: No module named torch_geometric
  • 基于Gradio可视化部署机器学习应用
  • StackOverflow - Docker app server ip address 127.0.0.1 difference of 0.0.0.0 ip

到了这里,关于LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【人工智能搜索引擎】AI 和 搜索引擎的结合,会产生怎样的奇妙的化学反应?

    a robot is surfing the web / By Stable Diffusion禅与计算机程序设计艺术 目录 文心一言 ChatGPT ChatGLM 一、背景 二、AI 搜索引擎们

    2023年04月09日
    浏览(57)
  • 给LLM装上知识:从LangChain+LLM的本地知识库问答到LLM与知识图谱的结合

    过去半年,随着ChatGPT的火爆,直接带火了整个LLM这个方向,然LLM毕竟更多是基于过去的经验数据预训练而来,没法获取最新的知识,以及各企业私有的知识 为了获取最新的知识,ChatGPT plus版集成了bing搜索的功能,有的模型则会调用一个定位于 “链接各种AI模型、工具”的

    2024年02月12日
    浏览(63)
  • 从LangChain+LLM的本地知识库问答到LLM与知识图谱、数据库的结合

    过去半年,随着ChatGPT的火爆,直接带火了整个LLM这个方向,然LLM毕竟更多是基于过去的经验数据预训练而来,没法获取最新的知识,以及各企业私有的知识 为了获取最新的知识,ChatGPT plus版集成了bing搜索的功能,有的模型则会调用一个定位于 “链接各种AI模型、工具”的

    2024年02月12日
    浏览(63)
  • LLM 技术图谱(LLM Tech Map)& Kubernetes (K8s) 与AIGC的结合应用

    LLM 技术图谱(LLM Tech Map)是将 LLM 相关技术进行系统化和图形化的呈现,此图谱主要特点是“专注于技术人视角”,不求从 LLM 产业角度汇聚信息,而是希望让从事相关工作或是想了解 LLM 的技术人有一个快速感知。 LLM 技术图谱(LLM Tech Map)从基础设施、大模型、Agent、AI 编

    2024年04月14日
    浏览(41)
  • AI和软件测试结合-使用LLM将自然语言生成TestCase

    曾在工作之余,设想过一个能提升测试流程左侧效率的点子,结合人工智能,将自然语言自动转化为通用的功能用例、接口用例、代码单元测试用例等一系列用例,碰上这2年LLM模型大爆发,遂有自己炼一个用例生成的专用模型的想法。 用户需求: 用户能够以自然语言形式描

    2024年02月02日
    浏览(51)
  • 加利福尼亚大学|3D-LLM:将3D世界于大规模语言模型结合

    来自加利福尼亚大学的3D-LLM项目团队提到:大型语言模型 (LLM) 和视觉语言模型 (VLM) 已被证明在多项任务上表现出色,例如常识推理。尽管这些模型非常强大,但它们并不以 3D 物理世界为基础,而 3D 物理世界涉及更丰富的概念,例如空间关系、可供性、物理、布局等。 在这

    2024年02月15日
    浏览(44)
  • LLM搭建金融系统

    这篇文章主要给大家介绍如何基于LLM模型配合各种pluging工具(这边主要是跟数据连接、检索的工具相关:知识图谱、向量库...)。在开始文章前先讲讲我的观点: 大模型的颠覆性应用应该不在于AIGC,而在于数据驱动技术的一次迭代,由稀疏数据驱动的数据到稠密数据驱动。

    2024年02月13日
    浏览(25)
  • LLM探索:环境搭建与模型本地部署

    最近一直在炼丹(搞AIGC这块),突然发现业务代码都索然无味了… 上次发了篇AI画图的文章,ChatGPT虽然没法自己部署,但现在开源的LLM还是不少的,只要有一块差不多的显卡,要搞个LLM本地部署还是没问题的。 本文将介绍这以下两个国产开源LLM的本地部署 ChatGLM-6B MOSS 本文

    2024年02月05日
    浏览(58)
  • LangChain+LLM大模型问答能力搭建与思考

    最近,大模型(LLMs,Large Language Models)可谓是NLP领域,甚至整个科技领域最火热的技术了。凑巧的是,我本人恰好就是NLP算法工程师,面临着被LLMs浪潮淘汰的窘境,决定在焦虑之余,试着用新家伙,去解决解决老问题(缓解一下焦虑…) 所以是什么老问题呢?——那就是

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包