将 HuggingFace 模型 Addaoud/DeepPlant-EAP 适配并部署到 华为昇腾(Ascend)NPU 上,实现非自回归 DNA 序列回归的服务化推理与离线批量推理。
| 项目 | 内容 |
|---|---|
| 模型来源 | Addaoud/DeepPlant-EAP / hf_mirrors 镜像 |
| 上游镜仓 | https://atomgit.com/hf_mirrors/Addaoud/DeepPlant-EAP.git(约 947MB safetensors) |
| 模型类型 | 植物调控基因组学(plant / regulatory genomics)序列回归 |
| 任务 | task=EAP,输出 n_features=2 个 logits |
| 精度 | FP32(默认) |
| 部署方式 | torch_npu 原生推理 + HTTP 服务化(/predict,OpenAI 兼容) |
| NPU设备 | Ascend 910B4 |
该模型通过
PyTorchModelHubMixin发布,只包含config.json+model.safetensors(无源码),因此本项目采用逐层对齐官方权重的方式从零重建网络结构(见下),并严格通过load_state_dict(..., strict=True)校验。
DeepPlant-EAP 是一个非自回归 Encoder 类序列回归模型,输入为 one-hot 编码的 DNA 序列 [B, 4, 500],经卷积骨干网络提取局部 motif 特征,再经 6 层 Transformer Encoder 聚合远端相互作用,最终通过注意注意力池化与全连接得到 2 维输出(对应 EAP 任务的两个目标类别)。
输入 onehot [B, 4, 500]
├─ backbone.conv_features:RCConv(4→512, k11) ‑> BN ‑> ReLU ‑> MaxPool1d(5) → [B,512,100]
├─ backbone.conv_network.0:ConvRes(512‑>512‑>2048, 跳跃k=9) → [B,2048,100]
├─ backbone.conv_network.1:Identity
├─ backbone.conv_network.2:ConvRes(2048‑>1024‑>2048, 跳跃k=5) → [B,2048,100]
├─ transpose(1,2) → [B,100,2048]
├─ transformer.encoder:6×Pre‑LN Encoder 层(emb=2048,头=8, FF=2048) → [B,100,2048]
│ └─ 位置编码 pos_encoder.pe([1,100,2048])在进入 encoder 前置加
├─ attention_pool:可学习注意力池化(to_attn_logits∈R^(2048×2048)) → [B,2048]
└─ fc:Linear(2048→4096)+ReLU+Dropout+Linear(4096→4096) → [B,4096]
└─ fc.prediction_head:Linear(4096→2) → [B,2]注:官方权重包含 143 个张量(
backbone.conv_features.*、backbone.conv_network.0/2.*、transformer.encoder.encoder_layers.0‑5.*、attention_pool.to_attn_logits、fc.linear.*、fc.prediction_head.*)。本项目inference.py逐名称严格对齐。
| 组件 | 版本 |
|---|---|
| OS / Arch | Linux / aarch64 |
| Python | 3.11 |
| PyTorch | 2.9.0 |
| torch‑npu | 2.9.0.post1(gitee7ba04) |
| CANN | 8.5.1 |
| NPU | Ascend 910B4(HBM 64GB, 实例 0) |
| safetensors | ≥0.4 |
安装 vllm-ascend 为可选的(本产品不使用 vLLM 推理,仅依赖 torch_npu)。可直接:
pip install -r requirements.txtgit lfs install
git clone --depth 1 https://atomgit.com/hf_mirrors/Addaoud/DeepPlant-EAP.git
# 或用已缓存的完整权重:
cp /data/.cache/models/Addaoud/DeepPlant-EAP/model.safetensors ./DeepPlant-EAP/model.safetensorspip install modelscope
modelscope download --model Addaoud/DeepPlant-EAP --local_dir ./DeepPlant-EAPpython3 inference.py --weights model.safetensors --device npu:0 \
--seq GATCGTACGTAGCTACCCGAACGTTACGTAGCTAGC --output result.json输出 result.json:
{
"logits": [-182.62, 237.27],
"predicted_class": 1,
"probabilities": [0.0, 1.0]
}/predict)python3 inference.py --serve --port 8000 --device npu:0 --weights model.safetensors请求示例:
curl -X POST http://127.0.0.1:8000/predict \
-H "Content-Type: application/json" \
-d '{"sequence": "GGTACGTACGTTACCCCTAGCTAGCGTAC"}'健康检查:
curl http://127.0.0.1:8000/healthvLLM-Ascend 是为自回归生成模型(GPT/Qwen 等)设计的高性能推理后端。DeepPlant-EAP
是 Encoder 非自回归回归网络,vLLM 无法加载此类结构(报 GitModel not supported)。
因此本项目不依赖 vLLM-Ascend,而是使用 torch_npu 原生的 PyTorch 计算图在 NPU 上直接执行,
并自行包装成 OpenAI‑风格 HTTP 接口,效果与 vLLM 一致但可覆盖任意 Encoder 模型。
DeepPlant-EAP/
├── inference.py # 推理脚本(NPU 离线 + HTTP 服务化)
├── README.md # 本说明
├── requirements.txt # 依赖清单
├── model.safetensors # 权重(约 947MB, 可选包含)
└── assets/
├── agent_workflow.png # Agent 推理流程截图(手动补充)
├── npu_device_call.png # NPU 设备调用截图(手动补充)
└── model_result.png # 推理结果截图(手动补充)load_state_dict(strict=True))✅[1,2] ✅