本周阅读了文章DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs,这篇文章介绍了一种名为DrugChat的系统,旨在将ChatGPT类似的功能应用于药物分子图,从而革新我们与这些复杂实体互动和理解的方式。通过将这些分子图转化为适合AI分析的形式,我们可以实现化学空间的动态探索,有效预测化合物性质,并为药物设计和优化提供智能建议。DrugChat系统由图神经网络(GNN)、大型语言模型(LLM)和适配器组成,用户可以上传化合物分子图并询问有关该化合物的各种问题,系统将以多轮互动方式回答这些问题。该系统的训练数据集包含10,834种药物化合物和143,517个问答对,使得模型能够进行端到端的训练。文章还介绍了与药物性质分析相关的其他研究工作,以及DrugChat系统在药物分子图上的应用和未来发展方向。
部署模型
1.准备代码和环境
git克隆DrugChat的存储库,创建python环境并进行验证。该项目中已经有environment.yml文件,包含所有需要的环境及其版本,可以直接使用。
git clone https://github.com/UCSD-AI4H/drugchat
cd drugchat
conda env create -f environment.yml
conda activate drugchat
2.安装pyg
运行安装PyTorch Geometric.
conda install pyg=2.3.0 pytorch-scatter=2.1.0 -c pyg
3.准备语言模型Vicuna的weight权重(包含delta权重和真正的权重的差值)
Vicuna是一个基于LLAMA的开源LLM,性能接近ChatGPT。本次我们使用的轻量级的v0版本的Vicuna-7b(本来想用13b的,但是目前还没有找到可以用的13b的weight权重)
首先需要准备Vicuna 的权重,从抱抱脸网站上下载Vicuna的增量weight
git clone https://huggingface.co/lmsys/vicuna-7b-delta-v0 #注意 这里需要安装git-lfs
接下来需要从HuggingFace上获取原始的LLAMA-7B权重,可以通过填写问卷获得,实测不可以,填了问卷以后就没有后文了,建议从网上找一些别人提供的磁力链接里面的权重,收到版权限制这里就不放了。我也只是找到了7b的权重。同时找到的权重不是hf的,可以利用convert_llama_weights_to_hf.py文件转化一下。
两个weight准后好了以后,可以使用Vicuna团队的工具来创建真正的weight。首先,通过以下方式安装与 v0 Vicuna兼容的库。
pip install git+http://github.com/lm-sys/FastChat.git@v0.1.10
然后运行以下命令创建最终权重(ps:如果命令失败了,检查以下路径是否写对了,文件是否正常更新,以及文件内容是否都正常上传到服务器了)
python -m fastchat.model.apply_delta --base /path/to/llama-7b-hf/ --target /path/to/save/working/vicuna/weight/ -- delta /path/to/vicuna-7b-delta/v0
最终我们得到了一个类似这个架构的权重
vicuna_weights
├── config.json
├── generation_config.json
├── pytorch_model.bin.index.json
├── pytorch_model-00001-of-00003.bin
...
然后在 项目/pipeline/configs/models/drugchat.yaml 中的第16行,把生成权重的位置加上