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

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

DrugChat

论文: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/cloudmsys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: 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

化学分子如下:

Molecule

效果如下:

DrugGPT

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

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 {}
...

参考:

  • 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

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

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

相关文章

两句话就搞死chatgpt

事情是这样的,我在看一本书--思维风暴,看到一篇发散思维的内容,就想考考chatgpt,结果第一句话发过去,chatGPT就直接报错,刷新了下页面,接着继续问,等了不多见,chatgpt慢慢吐字&#…

人人都是ChatGPT prompt 工程师

关于 Prompt ​ 解释这个词之前,首先需要解释 prompt 这个词: 简单的理解它是给 AI 模型的指令。 它可以是一个问题、一段文字描述,甚至可以是带有一堆参数的文字描述。AI 模型会基于 prompt 所提供的信息,生成对应的文本&…

ChatGPT总结的“商汤日日新大模型”,亮点在文末!!!

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G “我们正处于临界点。”在商汤科技董事长兼首席执行官徐立说出这句话后一个月,商汤科技…

装X型学习动机体系:我对成就目标定向理论(装逼)的研究,怎么让自己充满动力,这个我期待太久了

装X型学习动机体系:我对成就目标定向理论(装逼)的研究,怎么让自己充满动力,这个我期待太久了 本质篇:生命的本质是,渴望被看见动力篇:积极响应挑战,自恋克服惰性费曼学习…

40岁,刚被裁,想说点啥。

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇:ChatGPT研究框架(80页PPT,附下载)…

Go是一门面向对象编程语言吗

Go语言已经开源13年了[1],在近期TIOBE[2]发布的2023年3月份的编程语言排行榜中,Go再次冲入前十,相较于Go在2022年底的排名[3]提升了2个位次: 《Go语言第一课》专栏[4]中关于Go在这两年开始飞起的“预言”也正在逐步成为现实^_^&am…

如何写出高质量的文章:从战略到战术

作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

原力计划来了【协作共赢 成就未来】

catalogue 🌟 写在前面🌟 新星计划持续上新🌟 原力计划方向🌟 原力计划拥抱优质🌟 AIGC🌟 参加新星计划还是原力计划🌟 创作成就未来🌟 写在最后 🌟 写在前面 哈喽&…

博弈论——选举/投票(voting)

文章目录 前言一、相对多数投票法(Plurality Voting)二、孔多塞准则(The Condorcet Criterion)三, 谷轮法(Copeland method四,波达计数法(Borda Count)五,选举…

Java 设计模式(java design patterns)

什么是设计模式? 前辈们,在长期开发中为了解决某种重复出现的问题,经过长期的总结,代码结构优化,最终确定一套解决办法。 为什么学习设计模式? 对程序设是有帮助的,提高代码额可重用性&#…

叫ChatGPT用html+css+js写一个圣诞节代码,看看什么样子?

最近ChatGPT这么火,那就让他给我写点代码吧。 如何注册一个账号,参考:注册ChatGPT详细指南 注册不了的小伙伴们,咱们评论区见,问一个最想问的问题,看到就给你回复! 我已经注册好了,…

前端实现六一儿童节祝福语分享,烟花特效助您表心意

部分数据来源&#xff1a;ChatGPT <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>六一儿童节祝福</title><style>body {background-image: url(https://picsum.photos/1920/1080);backgr…

chatgpt赋能python:10个好玩的Python代码-让编程更有趣!

10个好玩的Python代码- 让编程更有趣&#xff01; 作为一名有10年Python编程经验的工程师&#xff0c;我深刻理解到编程可以是一件令人兴奋和有趣的事情。Python是流行且多才多艺的编程语言&#xff0c;具有简洁易懂的语法和丰富的库&#xff0c;可以帮助开发人员快速轻松地实…

大型语言模型与文本摘要

大型语言模型与文本摘要 基于大型语言模型的抽取式摘要基于大型语言模型的零样本跨语言摘要基于大型语言模型的问答式摘要通过摘要任务评估大型语言模型的事实一致性基于大型语言模型的摘要事实一致性评估器未来方向大型语言模型的自我偏好基于大型语言模型生成提示基于大型语言…

ChatGPT玩起来真是上头,AI广泛应用元年体验AI之美

概述 ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型&#xff0c;一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xf…

推荐一款idea神级代码插件【Bito-ChatGPT】而且免费!- 第9篇

历史文章&#xff08;文章累计460&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 文…

ChatGPT - 获取简短的书籍摘要的Prompt

文章目录 Prompt例子 Prompt “总结[书籍名称]&#xff0c;并给我列出最重要的学习和观点。”例子

小米AX6000开启SSH后的高级用法

买的是RA72版本的AX6000,售价599,高通的CPU。 看看高颜值和唬人的外观,图示如下: 关于AX6000开启SSH的方法有很多介绍的,这里关键讲几点: 先升级RA72对应的固件,降级到41版本。 附上:miwifi_ra72_firmware_59812_1.0.41.bin 版本固件地址: http://cdn.cnbj1.fds.a…

为什么我觉得这次的chatGPT是真的智能AI

写在前面 openAI在2022年11月推出了chatGPT&#xff08;全称Chat Generative Pre-trained Transformer【聊天生成型預訓練變換模型】维基百科&#xff09;说的直白一点就是一个目前为止&#xff0c;这个星球上可以见到的最智能的机器人&#xff0c;他可以完成一些人类认知范围内…

第四届中国计算机教育大会“人工智能与大模型论坛”将于4月22日厦门召开

2023 年 ChatGPT 全球爆红&#xff0c;瞬间在国内引起了对大语言模型的热议。全球头部科技大厂再次站上了同一个赛道&#xff0c;很多 AI 领域的创业者、创投机构行动了起来&#xff0c;开启了大语言模型“军备竞赛”。人工智能与大模型技术的发展&#xff0c;离不开高校与产业…