APARENT2(Lavi et al., 2022,遗传算法 + 神经网络,扩展自 APARENT / Bogard et al.,
Cell 2019)是一个多聚腺苷酸化(alternative polyadenylation, APA)切割位点预测
模型。输入为一段固定 205 nt 的 polyA 信号窗口(模型约定核心 hexamer,如
AAUAAA,应位于窗口第 70 位,0-indexed),输出为 206 维的切割分布:
205 个逐核苷酸位置的切割概率 + 1 个 "no_cleavage"(窗口内不发生切割)桶。
切割通常发生在核心 hexamer 下游 10-30 nt。该模型可评估任意 polyA 位点的使用度
(usage = 1 - P(no_cleavage)),并可比较参考/替代序列量化变异对 polyadenylation
的影响(如 HBB 基因 polyA 信号突变导致的 β-地中海贫血)。
APARENT2 为膨胀残差卷积 CNN(非自回归 LLM),vLLM / vllm-ascend 无法加载服务。 正确路径是 multimolecule + torch_npu 直推 + FastAPI 提供服务化推理:
multimolecule.Aparent2ForSequencePrediction 加载(官方检查点
model.safetensors,0.189M 参数),计算在昇腾 NPU(torch_npu 注册的 npu
后端)上进行;RnaTokenizer 编码(T 自动转 U、未知碱基映射为 N,N 在 one-hot 嵌入
中为全零向量等效掩码;不加特殊 token),嵌入层强校验定长 205 nt,不符即
ValueError;postprocess 一致,勿再套其他激活);polyA_usage = 1 - P(no_cleavage)
即该位点作为 polyA 切割位点的使用度;| 项目 | 值 |
|---|---|
| NPU | Ascend 910B(Ascend910_9362,torch_npu npu:0,2 卡) |
| 昇腾 CANN | 8.5.1 |
| Python | 3.11.14 |
| PyTorch / torch_npu | 2.9.0 / 2.9.0.post1 |
| transformers / multimolecule | 5.9.0 / 0.2.1 |
| 服务化推理 | FastAPI + Uvicorn |
# 方式一:git clone 镜像仓库(AtomGit hf_mirrors)
git clone https://ai.atomgit.com/hf_mirrors/multimolecule/aparent2.git /opt/atomgit/models/aparent2
# 方式二:HuggingFace Hub 镜像(hf-mirror.com,需禁用 xet 后端)
HF_ENDPOINT=https://hf-mirror.com HF_HUB_DISABLE_XET=1 \
python3 -c "from huggingface_hub import hf_hub_download; \
hf_hub_download(repo_id='multimolecule/aparent2', filename='model.safetensors', \
local_dir='/opt/atomgit/models/aparent2')"注:克隆后若
model.safetensors仅为 131 字节的 LFS 指针,需用 LFS batch API 下载实际权重(oid298ccf5a...ba25a2cf,815,564 字节),或将git-lfs加入 PATH 后git lfs pull。
aparent2-npu/
├── inference.py # 推理脚本:CLI 单次推理 + FastAPI 服务化推理(必选)
├── README.md # 部署说明文档(必选)
├── requirements.txt # 环境依赖清单(推荐)
└── assets/ # 截图素材文件夹(必选)
├── agent_workflow.png # 部署工作流截图
├── npu_device_call.png # NPU 设备/推理调用截图
└── model_result.png # 模型推理结果截图pip install -r requirements.txtcd /opt/atomgit/aparent2-npu
# 演示序列(真实 HBB 3' UTR polyA 窗口,205 nt,AAUAAA@70 + 变异效应示例)
python3 inference.py --model-path /opt/atomgit/models/aparent2 --device npu:0
# 指定序列(定长 205 nt 效果最佳;短序列自动补 N、长序列中心裁剪)
python3 inference.py --sequence "UAGCUUAUCAGACUGAUGUUGA" --device npu:0
# 变异效应(参考 vs 替代,必须等长,逐位比较切割分布 + polyA 使用度)
python3 inference.py \
--reference "...AAUAAA..." --alternative "...AAUAAG..." --device npu:0python3 inference.py --serve --model-path /opt/atomgit/models/aparent2 \
--port 8000 --device npu:0服务化推理暴露的 HTTP 端点:
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /health | 健康检查(返回 NPU 设备信息与模型状态) |
| GET | /v1/models | 模型信息(模型 ID、任务、参数量、输入长度、pipeline_tag) |
| POST | /v1/predict | 205 nt 窗口切割位点分布预测 |
| POST | /v1/variant-effect | 变异效应(参考/替代切割分布差 + 使用度差) |
请求/响应示例:
# 切割分布预测(sequence 缺省时用 HBB 3' UTR 演示窗口)
curl -X POST http://127.0.0.1:8000/v1/predict \
-H "Content-Type: application/json" \
-d '{"sequence": "...", "top_k": 5}'
# 变异效应(参考/替代等长)
curl -X POST http://127.0.0.1:8000/v1/variant-effect \
-H "Content-Type: application/json" \
-d '{"reference": "...AAUAAA...", "alternative": "...AAUAAG...", "top_k": 5}'/v1/predict 返回:polyA_usage(使用度)、no_cleavage_prob、
dominant_cleavage_site(主导切割位点及其相对 hexamer 偏移)、
top_cleavage_sites、完整 cleavage_profile(206 维 softmax 切割分布)。
演示输入为真实 beta-globin(HBB)基因 3' UTR polyA 窗口(hg38
chr11:5,225,300-5,225,700;经典 polyA 信号 AATAAA 位于 chr11:5,225,474-5,225,479,
已对齐为窗口内 AAUAAA@70):
| 指标 | 值 |
|---|---|
| polyA 使用度(usage) | 0.2105 |
| no_cleavage 概率 | 0.7895 |
| 主导切割位点 | pos 91(hexamer+21),P=0.0830 |
| 次主导切割位点 | pos 93(hexamer+23),P=0.0527 |
预测切割峰位于核心 hexamer 下游 21-23 nt,符合多聚腺苷酸化经典几何(切割通常 发生在 AAUAAA 下游 10-30 nt),结果有明确生物学意义。
该突变(hexamer 第 6 位 A→G,位于窗口 pos 75)是已知 β-地中海贫血(β-thalassemia) 致病变异,预期降低 polyadenylation:
| 指标 | 参考 AAUAAA | 替代 AAUAAG | delta |
|---|---|---|---|
| polyA 使用度 | 0.2105 | 0.1826 | -0.0279 |
| 主导切割位点 pos 91 | P=0.0830 | P=0.0016 | -0.0814 |
| 次主导切割位点 pos 93 | P=0.0527 | P=0.0010 | -0.0517 |
模型正确识别出 polyA 信号突变显著削弱主切割位点的切割概率,与临床已知致病机制一致。
| 指标 | 值 |
|---|---|
| CPU vs NPU logits 余弦相似度 | 1.000000(max abs diff ~8e-3) |
| 模型加载 | ~0.15 s |
| 首次推理 | ~7.0 ms(含算子编译) |
| 预热后推理 | ~6.2 ms/次(p50 6.3 ms) |
| 进程内存 | ~200 MB(0.189M 参数小模型) |
postprocess 即 softmax);polyA_usage = 1 - P(no_cleavage)。截图素材由人工补充,占位说明如下:
assets/agent_workflow.png:模型部署工作流截图(Agent 工作流)assets/npu_device_call.png:NPU 设备调用/推理日志截图(torch.npu.get_device_name 等)assets/model_result.png:模型推理结果截图(/v1/predict 与 /v1/variant-effect 响应)