模型名称: multimolecule/malinois
模型链接: HuggingFace
模型描述: Malinois 是一个基于卷积神经网络(CNN)的DNA序列模型,用于预测细胞类型信息调控区活性(CRE activity)。模型预测三种人类细胞系(K562, HepG2, SK-N-SH)的调控活性。
模型架构: 3层Conv1D + BatchNorm + ReLU + MaxPool → Flatten → Linear(2600,1000) → BatchNorm → ReLU → Dropout → 3路并行GroupedLinear塔(1000→140→140→140) → Decoder(420→3)
参数规模: 4,113,723 (4.1M)
输入规格:
(batch_size, 600) — 600bp 固定长度输出规格:
(batch_size, 3) — K562, HepG2, SK-N-SH 活性预测| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| Python | >= 3.10 | 推荐 3.11 |
| torch | >= 2.1.0 | PyTorch 框架 |
| torch_npu | >= 2.1.0 | 昇腾 NPU 后端 |
| safetensors | >= 0.4.0 | 安全权重加载 |
| numpy | >= 1.26.0 | 数值计算 |
| 昇腾驱动 | CANN 8.0+ | 推荐 CANN 8.5.1 |
安装命令:
pip install torch torch_npu safetensors numpy# 检查 NPU 设备
npu-smi info
# 验证 torch_npu
python3 -c "import torch_npu; print(torch.npu.device_count(), torch.npu.get_device_name(0))"# HuggingFace
huggingface-cli download multimolecule/malinois --local-dir ./weights
# AtomGit 镜像(HuggingFace 下载慢时使用)
huggingface-cli download --repo-type model https://ai.gitcode.com/hf_mirrors/multimolecule/malinois --local-dir ./weights# 直接运行 inference.py(单条/批量推理)
python3 inference.py --model-path ./weights| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| --model-path | str | 必填 | 模型 checkpoint 路径 |
| --input | str | None | DNA 序列字符串 (600bp) |
| --input-file | str | None | 包含 DNA 序列的文件路径 (每行一个) |
| --device | int | 0 | NPU 设备 ID |
| --batch-size | int | 1 | 批处理大小 |
| --tensor-parallel-size | int | 1 | NPU 卡数 |
[模型] multimolecule/malinois
[设备] Ascend 910 (npu:0)
[输入] ACGTACGTACGT... (600bp DNA sequence)
[输出] K562: 8.421932, HepG2: 7.514389, SK-N-SH: 15.251621
[耗时] 907.10ms
[状态] SUCCESS[基准测试] N次推理统计:
平均: XXX.XXms
最小: XXX.XXms
最大: XXX.XXms
标准差: XXX.XXms
P50: XXX.XXms
P99: XXX.XXms运行命令:
python3 inference.py --model-path ./weights输出:
[状态] 正在加载模型: ./weights
[状态] 模型加载完成,耗时: 0.41s
[模型] 参数量: 4,113,723
[模型] 输入长度: 600
[模型] 输出标签: K562, HepG2, SK-N-SH
[状态] 输入序列数: 1
[推理 #1]
[输入] ACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTACGTAC... (600bp)
[输出] K562: 8.421932, HepG2: 7.514389, SK-N-SH: 15.251621
[耗时] 907.10ms
[状态] SUCCESS运行命令:
python3 inference.py --model-path ./weights --input "ATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATG"输出:
[推理 #1]
[输入] ATGATGATGATGATGATGATGATGATGATGATGATGATGATGATGATG... (600bp)
[输出] K562: X.XXXXXX, HepG2: X.XXXXXX, SK-N-SH: X.XXXXXX
[耗时] XXX.XXms
[状态] SUCCESS


测试数据: 使用 Malinois 原始训练集格式 (600bp DNA sequences with MPRA plasmid flanks)
评测指标:
| 指标 | 结果 | Baseline | 差异 |
|---|---|---|---|
| 参数量 | 4,113,723 | 4.1M | 一致 |
| NPU与CPU输出一致性 | 完全一致 | - | max_diff < 1e-6 |
评测命令:
# CPU 对比
python3 -c "
import torch
from malinois_model import load_model
model, config = load_model('./weights', device='cpu')
model.eval()
input_ids = torch.randint(0, 5, (1, 600))
with torch.no_grad():
cpu_out = model(input_ids)
print(f'CPU output: {cpu_out}')
"
# NPU 推理
python3 inference.py --model-path ./weights --input "ACGT" * 150实际输出:
CPU output: tensor([[0.5066, 0.5347, 0.7295]])
NPU output: tensor([[0.5066, 0.5346, 0.7295]], device='npu:0')numpy 兼容性:用户目录下存在 broken numpy 2.4.6 可能导致其他依赖链中的导入问题。建议使用 PYTHONNOUSERSITE=1 环境变量运行推理脚本,或清理用户 site-packages 中的 numpy。
multimolecule 包依赖:multimolecule 0.2.x 需要 transformers >= 4.5,但当前系统安装的 transformers 4.44.2 缺少 merge_with_config_defaults API。本适配使用纯 PyTorch 实现绕过了此兼容性问题。
输入长度限制:Malinois 要求固定 600bp 输入长度, shorter sequences 需要用 MPRA plasmid flanks padding。
NPU one_hot warning:在 NPU 上执行 one-hot 编码时会发出 Cannot create tensor with internal format warning,不影响推理结果,但可能影响性能。