将 HuggingFace 模型 Addaoud/DeepPlant-GEP 适配并部署到 华为昇腾(Ascend)NPU 上,实现非自回归 DNA 序列回归的服务化推理与离线批量推理。
| 项目 | 内容 |
|---|---|
| 模型来源 | Addaoud/DeepPlant-GEP / hf_mirrors 镜像 |
| 上游镜仓 | https://atomgit.com/hf_mirrors/Addaoud/DeepPlant-GEP.git(约 950MB safetensors) |
| 模型类型 | 植物调控基因组学(plant / regulatory genomics)序列回归 |
| 任务 | task=GEP,输出 n_features=2935 个 logits |
| 精度 | FP32(默认) |
| 部署方式 | torch_npu 原生推理 + HTTP 服务化(/predict,OpenAI 兼容) |
| NPU设备 | Ascend 910B4 |
该模型通过
PyTorchModelHubMixin发布,只包含config.json+model.safetensors(无源码),因此本项目采用 逐层对齐官方权重的方式从零重建网络结构(见下),并严格通过load_state_dict(..., strict=True)校验。
DeepPlant-GEP 是一个非自回归 Encoder 序列回归模型,输入为 one-hot 编码的 DNA 序列 [B, 4, 500],
经卷积骨干网络提取局部 motif 特征,再经 6 层 Transformer Encoder 聚合远端相互作用,最终通过注意力池化与
全连接层输出 2935 维向量(对应 GEP 任务输出的基因表达目标维度)。
输入 onehot [B, 4, 500]
├─ backbone.conv_features.RCConv(4→512, k=11) + BN + ReLU + MaxPool1d(5) → [B,512,100]
├─ backbone.conv_network.0: ConvRes(512→512→2048, sk_k=9) → [B,2048,100]
├─ backbone.conv_network.1: Identity → [B,2048,100]
├─ backbone.conv_network.2: ConvRes(2048→1024→2048, sk_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→2935) → [B,2935]官方权重与 DeepPlant-EAP 相同结构、不同任务头(
task="GEP",n_features=2935)。本项目inference.py逐名称严格对齐,load_state_dict(strict=True)校验通过。
| 组件 | 版本 |
|---|---|
| OS / Arch | Linux / aarch64 |
| Python | 3.11 |
| PyTorch | 2.9.0 |
| torch-npu | 2.9.0.post1(gitee7ba04) |
| CANN | 8.5.1 |
| NPU | Ascend 910(HBM 64GB) |
| 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-GEP.git也可以使用 ModelScope:
pip install modelscope
modelscope download --model Addaoud/DeepPlant-GEP --local_dir ./DeepPlant-GEPpython3 inference.py --weights model.safetensors --device npu:0 \
--seq GATCGTACGTAGCTACCCGAACGTTACGTAGCTAGC --output result.json输出 result.json:
{
"logits": [ ... 2935 个浮点值 ... ],
"predicted_class": 123,
"max_logit": 12.34,
"probabilities": [ ... 2935 个浮点值 ... ]
}/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/health
vLLM-Ascend 是为自回归生成模型(GPT/Qwen 等)设计的高性能推理后端。DeepPlant-GEP 是
Encoder 非自回归回归网络,vLLM 无法加载此类结构(报 GitModel not supported)。因此本项目不依赖
vLLM-Ascend,而是使用 torch_npu 原生的 PyTorch 计算图在 NPU 上直接执行,并自行包装成
OpenAI‑风格 HTTP 接口,效果与 vLLM 一致但可覆盖任意 Encoder 模型。
DeepPlant-GEP/
├── inference.py # 推理脚本(NPU 离线 + HTTP 服务化)
├── README.md # 本说明
├── requirements.txt # 依赖清单
├── model.safetensors # 权重(约 950MB, 可选包含)
└── assets/
├── agent_workflow.png # Agent 推理流程截图(手动补充)
├── npu_device_call.png # NPU 设备调用截图(手动补充)
└── model_result.png # 推理结果截图(手动补充)load_state_dict(strict=True))