跳到主要内容

使用Chai-1 预测分子结构

应用概述

Chai-1 是由 Chai Discovery 开发的,旨在为生命科学和药物发现提供强大的计算支持。Chai-1专注于分子结构预测,能够准确、快速、高效地预测分子结构,特别是在蛋白质、短链小分子、DNA、RNA、糖基化等领域具有出色的表现。它在多种基准测试中达到了最先进的性能,能够统一地进行各种分子结构的预测。

使用场景

Chai-1 作为一个分子结构预测的开源框架,支持:

  1. 多序列比对(MSA):Chai-1 推荐使用多序列比对(MSA)来提高折叠预测的准确性。
  2. 约束条件(Restraints):Chai-1 允许用户输入特定的约束条件来指导折叠过程。例如,你可以指定不同的链间接触或共价键,帮助模型在有特定约束的情况下进行预测。
  3. 实验性约束:Chai-1 还提供了使用用户指定的实验性约束(如分子间的接触点和共价键)的功能。这对于分子复合物的结构预测尤其重要。

操作步骤

部署前准备工作

本次部署使用到Docker和Kubernetes,请准备好Docker环境,并确保本地有可用的Kubernestes客户端工具kubectl。
Docker环境安装请参考: 安装Docker
kubectl安装请参考:快速开始

开通集群

资源最低要求

资源类型数量说明
GPU1个起gpu-h800
CPU8 core起
内存64G 起
存储100G 起
Harbor存储100G用于保存镜像

申请开通

集群请参考:开通弹性容器集群
集群开通后,需要将集群配置信息保存到合适的位置,以便后续使用。

脚本准备

请下载模板脚本文件,并解压到本地目录。
在前面下载并解压的模板脚本文件中,对所有文件进行变量替换。

用户名密码:查看开通镜像仓库时的通知短信
镜像仓库地址:参考镜像仓库的使用
镜像仓库地址是由 镜像仓库域名/项目 组成

需要替换的变量有:

变量名所在文件例子
镜像仓库地址deploy-protenix.yaml, image.sh, image.batregistry.hd-01.alayanew.com:8443/alayanew-******-5cfd029439a8
GPU_resource_namedeploy-protenix.yamlgpu-h800
镜像仓库域名harbor-config.json, image.sh, image.batregistry.hd-01.alayanew.com:8443
用户名harbor-config.json, image.sh, image.bathb_abc123
密码harbor-config.json, image.sh, image.bat123456

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编码后的内容>

镜像准备

本教程使用到的镜像为:

  1. 初始化镜像:由于应用在运行中需要下载来自Huggingface的模型及数据,本镜像已经包含了这些文件,无需额外下载。初始化镜像已经放到Alaya NeW的公共镜像仓库。
  2. 应用镜像:Chai-1的应用镜像。

Chai-1的应用镜像准备包括以下步骤:

  1. 执行刚才下载并解压的scripts目录下的Dockerfile文件,生成镜像。
  2. 登录镜像仓库,推送镜像

在scripts目录下, 请执行image.sh(linux)或者image.bat(windows)脚本,完成镜像的构建和推送。 当执行完毕后,请检查镜像仓库中是有镜像文件chai-lab/chai-1-dc:v0.5.1存在。
关于如何查看镜像仓库,请参考:使用Harbor管理镜像资源

部署应用

包含以下步骤:

  1. 执行k8s配置文件,部署应用
  2. 检查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