K
KevinLi11/deepcpgdna-hou2016-mesc
模型介绍
文件和版本
Pull Requests
讨论
分析

DeepCpG-DNA (hou2016-mesc) — Ascend NPU 适配

multimolecule 的 multimolecule/deepcpgdna-hou2016-mesc 是一个基于 DeepCpG-DNA 架构的 DNA 甲基化(CpG 位点)预测模型:输入固定长度 1001 bp 的 DNA 序列,输出 每个细胞(cell label)的甲基化二分类 logits。本仓库完成其在华为 Ascend 910 NPU 上的推理适配,并与 CPU 结果做 6 项指标对比验证。

1. 模型简介

  • 模型:multimolecule/deepcpgdna-hou2016-mesc(Hou2016 mESC 数据集)
  • 架构:DeepCpG-DNA CnnL2h128 —— 1D 卷积栈(128/256/512,kernel 11/3/3, pool 4/2/2)+ Dense bottleneck(128)+ 每细胞分类头(6 个 cell label, problem_type: binary)
  • 输入:1001 bp DNA 序列(固定长度),DnaTokenizer(A/C/G/T/N 字母表)
  • 输出:logits shape [batch, 6],经 sigmoid 得到各 cell 的甲基化概率
  • 加载方式:AutoModelForSequencePrediction + DnaTokenizer(multimolecule 包);权重为原生 safetensors,无需转换
  • 适配说明:multimolecule 0.2.1 面向 transformers 5.x,本环境为 transformers 4.57.6。mm_compat.py 提供 4.57.6 兼容 shim (transformers.initialization、merge_with_config_defaults、 capture_outputs、masking_utils、tokenizer extra_special_tokens 等), 模型代码零改动即可在 NPU 上运行。

2. 部署步骤

2.1 环境

组件版本
Python3.11.14
PyTorch2.9.0+cpu
torch_npu2.9.0.post1
transformers4.57.6
CANN8.5.1
硬件Ascend 910 x2(本适配使用 npu:0)

2.2 安装

pip install -r requirements.txt
pip install multimolecule==0.2.1

权重目录 /data/dl/cpg-mesc/(含 config.json、tokenizer_config.json、 vocab.txt、model.safetensors)。

2.3 运行

# NPU 推理
python inference.py --device npu --seed 42

# CPU 推理(对比基线)
python inference.py --device cpu --seed 42

# 6 项指标对比
python compare.py

3. 推理示例

inference.py 生成确定性随机 AGCT 序列(1001 bp,seed=42,同输入),经 DnaTokenizer 编码后调用 AutoModelForSequencePrediction 前向一次打印 logits, 再补跑 2 次计时(共 3 次取平均),并记录峰值显存(NPU)或峰值 RSS(CPU)。

NPU 实测输出(seed=42):

inputs: input_ids shape=(1, 1001) attention_mask shape=(1, 1001)
model=DeepCpgDnaForSequencePrediction dtype=torch.float32 device=npu:0
logits shape=(1, 6)
logits[0,:5]=[0.672341 0.490799 0.684704 0.691816 0.778046]
argmax label index=4 label=mESC5
NPU peak memory: 44.7 MB
mean forward time over 3 runs: 0.068 s

输出产物:{device}_output.txt、{device}_run.log、{device}_logits.npy、 {device}_times.npy。

4. 实测 6 指标对比表

同输入(seed=42,1001 bp 随机 AGCT)、同 fp32 精度,NPU 与 CPU 各前向 3 次取平均:

指标数值说明
cos_sim(logits flatten,6 元素)1.000000极强对齐
max_abs(logits 最大绝对差)0.000219fp32 舍入级差异
mean_abs(logits 平均绝对差)0.000160平均误差极低
argmax 一致率1.00两设备均预测 label mESC5(idx=4)
label argmax 一致率(任务特化)1.006 个 cell label 的 sigmoid>0.5 判定全部一致
label logit cos_sim(任务特化)1.000000逐 label logits 余弦相似度均值
耗时比(NPU/CPU,3 次平均)7.1976NPU 0.068s / CPU 0.009s(小模型,NPU 均值含 warmup 轮)

详细结果见 assets/compare_result.txt,图示见 assets/model_result.png。

注:该模型极小(单卡峰值仅 44.7 MB),绝对耗时两设备都很短;NPU 均值包含首次 算子编译的 warmup 轮,稳态单次约 2 ms。数值指标(cos_sim=1.0、argmax 一致率 100%)证明 NPU 与 CPU 输出完全一致。