DTNN Model是深度张量神经网络,它通过分子的库仑矩阵(Coulomb Matrix)表示获取该分子的距离矩阵和原子的成员信息。然后,它通过考虑每个原子与其邻近原子的相互作用,迭代地优化每个原子的表示。最后,通过将各个原子的能量相加,预测整个分子的能量。该模型在药物发现、材料科学和计算化学等任务中展现出强大能力,本文描述的DTNN Model模型是基于DeepChem套件实现的,后续适配也是基于该套件修改。
| 组件 | 版本 |
|---|---|
| Python | 3.10.19 |
| PyTorch | 2.1.0 |
| torch_npu | 2.1.0.post13 |
| CANN | 8.1.RC1 |
| 设备型号 | NPU 配置 |
|---|---|
| Atlas 800T A2 | 单卡 / 多卡 |
| 镜像环境 | 镜像地址 |
|---|---|
| 公网 | swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_2_1_ascend:pytorch_2.1.0-cann_8.1.rc1-py_3.10-euler_2.10.11-aarch64-snt9b-20250603154214-4e60e43 |
docker run -u root --privileged \
--name {container_name} \
--device /dev/davinci0 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-itd {image_id} /bin/bashdocker exec -it {container_name} bash直接安装deepchem-ascend二进制包,已基于适配代码重新编译成二进制包上传pypi
pip install deepchem-ascend==0.0.1安装运行必要的依赖库
pip install torch-geometric测试代码举例如下:
import os
import tempfile
import numpy as np
from deepchem.data import SDFLoader
from deepchem.feat import CoulombMatrix
try:
import torch_npu
from deepchem.models.torch_models import DTNNModel
except ModuleNotFoundError:
pass
current_dir = os.path.dirname(os.path.abspath(__file__))
dataset_file = os.path.join(current_dir, "assets/qm9_mini.sdf")
TASKS = ["alpha", "homo"]
loader = SDFLoader(tasks=TASKS, featurizer=CoulombMatrix(29), sanitize=True)
data = loader.create_dataset(dataset_file, shard_size=100)
model = DTNNModel(data.y.shape[1],
n_embedding=40,
n_distance=100,
learning_rate=0.8,
mode="regression")
model.fit(data, nb_epoch=1000)
# Eval model on train
pred = model.predict(data)
mean_rel_error = np.mean(np.abs(1 - pred / (data.y)))
device = next(model.model.parameters()).device
print(f"模型所在设备: {device}")测试结果: