使用Chai-1 预测分子结构
应用概述
Chai-1 是由 Chai Discovery 开发的,旨在为生命科学和药物发现提供强大的计算支持。Chai-1专注于分子结构预测,能够准确、快速、高效地预测分子结构,特别是在蛋白质、短链小分子、DNA、RNA、糖基化等领域具有出色的表现。它在多种基准测试中达到了最先进的性能,能够统一地进行各种分子结构的预测。
使用场景
Chai-1 作为一个分子结构预测的开源框架,支持:
- 多序列比对(MSA):Chai-1 推荐 使用多序列比对(MSA)来提高折叠预测的准确性。
- 约束条件(Restraints):Chai-1 允许用户输入特定的约束条件来指导折叠过程。例如,你可以指定不同的链间接触或共价键,帮助模型在有特定约束的情况下进行预测。
- 实验性约束:Chai-1 还提供了使用用户指定的实验性约束(如分子间的接触点和共价键)的功能。这对于分子复合物的结构预测尤其重要。
操作步骤
部署前准备工作
本次部署使用到Docker和Kubernetes,请准备好Docker环境,并确保本地有可用的Kubernestes客户端工具kubectl。
Docker环境安装请参考: 安装Docker
kubectl安装请参考:快速开始
开通集群
资源最低要求
资源类型 | 数量 | 说明 |
---|---|---|
GPU | 1个起 | gpu-h800 |
CPU | 8 core起 | |
内存 | 64G 起 | |
存储 | 100G 起 | |
Harbor存储 | 100G | 用于保存镜像 |
申请开通
集群请参考:开通弹性容器集群
集群开通后,需要将集群配置信息保存到合适的位置,以便后续使用。
脚本准备
请下载模板脚本文件,并解压到本地目录。
在前面下载并解压的模板脚本文件中,对所有文件进行变量替换。
用户名密码:查看开通镜像仓库时的通知短信
镜像仓库地址:参考镜像仓库的使用
镜像仓库地址是由 镜像仓库域名/项目 组成
需要替换的变量有:
变量名 | 所在文件 | 例子 |
---|---|---|
镜像仓库地址 | deploy-protenix.yaml, image.sh, image.bat | registry.hd-01.alayanew.com:8443/alayanew-******-5cfd029439a8 |
GPU_resource_name | deploy-protenix.yaml | gpu-h800 |
镜像仓库域名 | harbor-config.json, image.sh, image.bat | registry.hd-01.alayanew.com:8443 |
用户名 | harbor-config.json, image.sh, image.bat | hb_abc123 |
密码 | harbor-config.json, image.sh, image.bat | 123456 |
secret准备
secret文件是用于保存敏感信息的,如对象存储的密钥等。本次部署中需要对harbor registry的用户名和密码进行加密,并保存到secret文件中。
- 当执行过前面的步骤后,请将harbor-config.json中的内容做base64编码。linux中可以使用base64命令进行编码。或者在线网站也可以进行编码。可以参考:https://tool.lu/encdec/
- 将编码后的内容保存到harbor-secret.yaml的.dockerconfigjson字段。 例子:
apiVersion: v1
kind: Secret
metadata:
name: alaya-harbor-secret
type: kubernetes.io/dockerconfigjson
data:
.dockerconfigjson: <base64编码后的内容>
镜像准备
本教程使用到的镜像为:
- 初始化镜像:由于应用在运行中需要下载来自Huggingface的模型及数据,本镜像已经包含了这些文件,无需额外下载。初始化镜像已经放到Alaya NeW的公共镜像仓库。
- 应用镜像:Chai-1的应用镜像。
Chai-1的应用镜像准备包括以下步骤:
- 执行刚才下载并解压的scripts目录下的Dockerfile文件,生成镜像。
- 登录镜像仓库,推送镜像
在scripts目录下, 请执行image.sh(linux)或者image.bat(windows)脚本,完成镜像的构建和推送。
当执行完毕后,请检查镜像仓库中是有镜像文件chai-lab/chai-1-dc:v0.5.1存在。
关于如何查看镜像仓库,请参考:使用Harbor管理镜像资源
部署应用
包含以下步骤:
- 执行k8s配置文件,部署应用
- 检查k8s部署结果
执行部署脚本
请在脚本目录下执行以下命令:
kubectl apply -k .
确保执行过程中没有错误。
检查部署结果
请执行以下命令:
kubectl get pods -n chai-lab
当执行这个命令后,将会看到类 似以下的输出:
NAME READY STATUS RESTARTS AGE
deploy-chai-lab-7f9f65cbb-72nv8 0/1 Init:0/1 0 27s
这时正在执行初始化容器。可以继续执行上面的命令,查看状态的变化。
如果出现以下输出,说明成功部署完成:
NAME READY STATUS RESTARTS AGE
deploy-chai-lab-7f9f65cbb-72nv8 1/1 Running 0 3m34s
注意: 其中deploy-chai-lab-7f9f65cbb-72nv8是pod的名字,每次部署都会产生一个新的pod名字,后面的命令都需要使用这个名字。
进入pod
请执行以下命令:
kubectl exec -it deploy-chai-lab-7f9f65cbb-72nv8 -n chai-lab -- /bin/bash
注意: 请使用实际的pod名字替换上面的deploy-protenix-7bfc98c86d-ls67t。
最后请做以下检查:
- /app中存在目录chai-lab,里面包含了Chai-1的应用。
- /workspace目录中包含模型文件和数据文件。
开始使用
预测
这里演示官方提供的预测示范例子。
进入/app/chai-lab目录,执行以下命令
python ./examples/predict_structure.py
注意: 模型和数据都存放在/workspace/downloads目录中,在执行命令的时候需要使用这个目录下的模型和数据。在创建镜像的时候,已经将模型和数据所在的/workspace/downloads目录中加到环境变量CHAI_DOWNLOADS_DIR中,所以不需要额外设置。 当结束的时候,你将看到像下面这样的输出,具体的预测结果会保存在/tmp/outputs目录中。
Score=0.9157, writing output to /tmp/outputs/pred.model_idx_0.cif
Score=0.9151, writing output to /tmp/outputs/pred.model_idx_1.cif
Score=0.9150, writing output to /tmp/outputs/pred.model_idx_2.cif
Score=0.9153, writing output to /tmp/outputs/pred.model_idx_3.cif
Score=0.9153, writing output to /tmp/outputs/pred.model_idx_4.cif
容器中的主要目录说明
- /workspace/downloads:模型和数据目录。
- /app/chai-lab:Chai-1的应用目录。
- /tmp/outputs:输出结果目录。
关于license
请按照Chai-1的版权要求使用,请参考:https://github.com/chaidiscovery/chai-lab?tab=Apache-2.0-1-ov-file#readme