multimolecule 的
multimolecule/deepcpgdna-hou2016-hepg2 是一个基于 DeepCpG-DNA 架构的
DNA 甲基化(CpG 位点)预测模型:输入固定长度 1001 bp 的 DNA 序列,输出
每个细胞(cell label)的甲基化二分类 logits。本仓库完成其在华为 Ascend 910
NPU 上的推理适配,并与 CPU 结果做 6 项指标对比验证。
CnnL2h128 —— 1D 卷积栈(128/256/512,kernel 11/3/3,
pool 4/2/2)+ Dense bottleneck(128)+ 每细胞分类头(6 个 cell label,
problem_type: binary)DnaTokenizer(A/C/G/T/N 字母表)[batch, 6],经 sigmoid 得到各 cell 的甲基化概率AutoModelForSequencePrediction + DnaTokenizer(multimolecule
包);权重为原生 safetensors,无需转换mm_compat.py 提供 4.57.6 兼容 shim
(transformers.initialization、merge_with_config_defaults、
capture_outputs、masking_utils、tokenizer extra_special_tokens 等),
模型代码零改动即可在 NPU 上运行。| 组件 | 版本 |
|---|---|
| Python | 3.11.14 |
| PyTorch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| CANN | 8.5.1 |
| 硬件 | Ascend 910 x2(本适配使用 npu:0) |
pip install -r requirements.txt
pip install multimolecule==0.2.1权重目录 /data/dl/cpg-hepg2/(含 config.json、tokenizer_config.json、
vocab.txt、model.safetensors)。
# NPU 推理
python inference.py --device npu --seed 42
# CPU 推理(对比基线)
python inference.py --device cpu --seed 42
# 6 项指标对比
python compare.pyinference.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]=[-1.498915 -1.621832 -1.419862 -1.514351 -1.414582]
argmax label index=4 label=HepG25
NPU peak memory: 45.2 MB
mean forward time over 3 runs: 0.069 s输出产物:{device}_output.txt、{device}_run.log、{device}_logits.npy、
{device}_times.npy。
同输入(seed=42,1001 bp 随机 AGCT)、同 fp32 精度,NPU 与 CPU 各前向 3 次取平均:
| 指标 | 数值 | 说明 |
|---|---|---|
| cos_sim(logits flatten,6 元素) | 1.000000 | 极强对齐 |
| max_abs(logits 最大绝对差) | 0.000147 | fp32 舍入级差异 |
| mean_abs(logits 平均绝对差) | 0.000140 | 平均误差极低 |
| argmax 一致率 | 1.00 | 两设备均预测 label HepG25(idx=4) |
| label argmax 一致率(任务特化) | 1.00 | 6 个 cell label 的 sigmoid>0.5 判定全部一致 |
| label logit cos_sim(任务特化) | 1.000000 | 逐 label logits 余弦相似度均值 |
| 耗时比(NPU/CPU,3 次平均) | 5.9145 | NPU 0.069s / CPU 0.012s(小模型,NPU 均值含 warmup 轮) |
详细结果见 assets/compare_result.txt,图示见 assets/model_result.png。
注:该模型极小(单卡峰值仅 45.2 MB),绝对耗时两设备都很短;NPU 均值包含首次 算子编译的 warmup 轮,稳态单次约 2 ms。数值指标(cos_sim=1.0、argmax 一致率 100%)证明 NPU 与 CPU 输出完全一致。