z
zzstudio/optimus5prime-NPU
模型介绍
文件和版本
Pull Requests
讨论
分析

Optimus 5-Prime(multimolecule/optimus5prime)昇腾 NPU 部署

在昇腾 NPU(Ascend 910B)上部署 MultiMolecule 提供的 Optimus 5-Prime 预训练模型 (面向人类 5'UTR 的平均核糖体装载量 MRL 回归模型,1D 卷积网络)。该方案通过 torch_npu 推理引擎 将模型部署至 Ascend 910B 进行前向推理,针对固定 50 nt 的 5'UTR RNA 序列预测标准化 平均核糖体装载量(MRL)分数。部署过程已完成 114 组测试用例,并附上全部真实输出结果。

1. 模型简介

  • 适配状态: SUCCESS
  • 适配时间: 2026-08-22

Optimus 5-Prime(Human 5' UTR design and variant effect prediction from a massively parallel translation assay, Nature Biotechnology 2019)是由 Paul J. Sample 等人提出的 5'UTR 平均核糖体装载量预测模型。 它以固定 50 nt 的人类 5'UTR RNA 序列作为输入,预测对应序列的标准化平均核糖体装载量 (MRL)标量,即用于表征核糖体装载水平(翻译效率)的代理指标。该模型为纯前馈 1D 卷积网络, 不含 attention,也不采用自回归解码:

属性值
输入固定 50 nt 的 5'UTR RNA 序列(one-hot 编码为 5 个通道)
编码A/C/G/U 四通道 one-hot;N 为全零通道(卷积第 5 个通道权重为 0)
主干3 层 Conv1d(120 个通道,kernel=8,padding="same",ReLU,conv_dropout=0.0)
展平按 Keras Flatten 顺序(length, channels)展平 → 50×120=6000
全连接Linear 6000→40(ReLU,dense_dropout=0.2)
回归头Linear 40→1(无激活函数,用于回归任务)
参数量0.48M
输出标准化 MRL 分数 (batch, 1);ΔMRL = 变异序列 MRL − 参考序列 MRL
权重文件model.safetensors / pytorch_model.bin(约 1.9MB)
许可证AGPL-3.0

变异效应:该模型为单序列回归模型。分别对参考 5'UTR 和变异 5'UTR 执行推理后, 计算二者 MRL 的差值(ΔMRL),即可评估变异对翻译效率的影响(ΔMRL > 0 表示提升,ΔMRL < 0 表示降低)。

⚠️ Optimus 5-Prime 属于非自回归回归模型(无 token 生成,无 attention), vLLM-Ascend / sglang 无法托管,故采用 torch_npu 推理引擎完成 NPU 前向推理。

2. 目录结构

optimus5prime-NPU/
├── inference.py          # 推理脚本(env / predict / batch / pooler / variant /
│                         #   loss / padding / benchmark / compare / dtype / device 共 11 种模式)
├── optimus5prime_model.py # 模型代码(multimolecule 移植,兼容 transformers 4.57.6)
├── generate_tests.py      # 114 组测试用例生成器(命令 + 真实输出 → docs_test_cases.md)
├── docs_test_cases.md     # 114 组完整测试用例及输出结果(第 9 节)
├── build_readme.py        # 部署文档生成器(本文档)
├── README.md              # 本文档
├── requirements.txt       # 环境依赖清单
├── venv/                  # 运行环境(python3 -m venv --system-site-packages venv)
└── assets/                # 素材目录
    └── .placeholder       # 空占位文件

3. 环境依赖

组件版本
操作系统Linux aarch64(openEuler / HCE)
昇腾 NPUAscend 910B × 2(Ascend910_9362)
CANN8.5.1(V100R001C25SPC002B220)
Python3.11.14
PyTorch2.9.0+cpu(昇腾本地编译,算子运行于 NPU)
torch_npu2.9.0.post1+gitee7ba04
transformers4.57.6
safetensors0.7.0
numpy1.26.4
tokenizers0.22.2

完整依赖见 requirements.txt。

4. 模型下载

Optimus 5-Prime 模型已下载至 /data/models/multimolecule/optimus5prime (包含 config.json / model.safetensors / pytorch_model.bin / tokenizer_config.json / vocab.txt)。

如需自行下载,可参考(HF 走 hf-mirror 镜像):

HF_ENDPOINT=https://hf-mirror.com huggingface-cli download   multimolecule/optimus5prime   --local-dir /data/models/multimolecule/optimus5prime

模型路径可通过环境变量覆盖:

环境变量默认值说明
OPTIMUS5PRIME_MODEL_PATH/data/models/multimolecule/optimus5prime模型目录

5. 部署与推理

5.0 环境激活(venv,可选)

项目已提供 venv/(复用系统级 torch / torch_npu / CANN),激活后即可运行:

cd optimus5prime-NPU
source venv/bin/activate
python inference.py --mode env       # 环境自检
# 如未使用 venv,直接用系统 python3 亦可(本项目脚本在系统 python 下验证通过)

5.1 环境自检

python3 inference.py --mode env

输出示例(实测):NPU 可用,2 张 Ascend910_9362 就绪,模型权重已就位,快速前向自检通过 ✅。

5.2 单序列 MRL 预测(核心推理)

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --seq-name "microRNA 21"

指定设备 / 精度:

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA     --device npu:0 --dtype float32

5.3 批处理推理

python3 inference.py --mode batch     --sequences "UAGCUUAUCAGACUGAUGUUGA,UGAGAACUGAAUUCCAUGGGUU"

5.4 变异效应预测(ΔMRL)

# 参考序列 vs 单碱基变异序列(模型卡示例)
python3 inference.py --mode variant     --ref  GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC     --alt  GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGAUAGC

5.5 获取 pre-regression 的共享表示(pooler_output)

python3 inference.py --mode pooler --sequence UAGCUUAUCAGACUGAUGUUGA

5.6 其他模式

命令说明
python3 inference.py --mode loss --labels self基于自洽标签的 MSE 损失
python3 inference.py --mode loss --labels random --seed 42基于随机标签的 MSE 损失
python3 inference.py --mode padding序列长度、填充、N/T 及大小写处理验证
python3 inference.py --mode benchmark --batch 8不同序列长度与 batch 的前向基准测试
python3 inference.py --mode compareNPU 与 CPU 输出一致性
python3 inference.py --mode dtypefloat32 / bfloat16 / float16 精度对比
python3 inference.py --mode devicenpu:0 / npu:1 / cpu 设备间对比

5.7 参数说明

参数默认值说明
--modepredict运行模式(共 11 种)
--sequenceUAGCUUAUCAGACUGAUGUUGA输入 RNA 序列
--sequences无批量序列(以逗号分隔)
--seq-namesequence序列名称,用于输出标注
--seq-names无批量序列名称(以逗号分隔)
--ref / --alt模型卡示例variant 的参考序列与变异序列
--devicenpu:0推理设备(npu:0 / npu:1 / cpu)
--dtypefloat32推理精度(float32 / bfloat16 / float16)
--batch1benchmark 模式的 batch size
--lengths[16,32,50,64,96,128,256]benchmark 模式的序列长度列表
--labelsselfloss 模式的标签类型(self / random)
--seed7随机种子
--compactFalse紧凑输出:每个用例输出一行关键结果(用于批量测试)

6. 实测结果(Ascend 910B,单卡)

场景输入标准化 MRL备注
microRNA 21 5'UTRUAGCUUAUCAGACUGAUGUUGA(22 nt,pad 至 50)-0.109189模型卡中的 ncRNA 示例
microRNA 146a 5'UTRUGAGAACUGAAUUCCAUGGGUU(22 nt)-0.099806模型卡中的 ncRNA 示例
参考序列(50 nt)GGGACAUA...AGCUAGC(模型卡示例)1.254144作为基准的参考序列
单碱基变异 A→U参考位置 46 C→A1.263130(Δ=+0.008986)变异效应
5' 端 3 nt 替换CAG + 参考[3:]1.272771(Δ=+0.018627)变异效应
空输入(全零通道)``(0 nt)0.793978N 通道权重为 0,等效于全零输入
全 N 序列N×500.793978与空输入结果一致(通道 4 权重为 0)
  • 单序列前向耗时约为 1 ms(模型参数 0.48M,预热后);包含首次 NPU 算子图编译时约 0.2 s。
  • 短序列会在右侧补零至 50 nt;超长序列会截断为前 50 nt;T 会替换为 U;大小写不敏感;非法字符映射为 N。
  • 浮点精度对比(microRNA 21):float32 -0.109189 / bfloat16 -0.108887 / float16 -0.109131, 三种精度下结果一致,均可在 NPU 上正常运行。

7. 精度评测(NPU 与 CPU 一致性,本机实测)

序列NPU MRLCPU MRL绝对差
microRNA 21-0.109189-0.1091672.25e-05
microRNA 146a-0.099806-0.0997792.70e-05
参考 50 nt1.2541441.2541232.15e-05
microRNA 1550.1210520.1210681.67e-05
全 N0.7939760.7939696.52e-06

说明:NPU 与 CPU 前向在 float32 下逐元素一致(绝对差 < 3e-5,为浮点舍入差异), 证明模型权重加载与 NPU 算子计算正确。完整对比见第 9 节用例 080–085。

8. 完整输入输出示例(microRNA 21)

以 microRNA 21 的 5'UTR 为例,完整运行 MRL 预测:

$ python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --seq-name "microRNA 21" --compact

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:0 精度=float32 MRL=-0.109189 耗时=0.001s

输出说明:

  • [predict] MRL:模型预测的标准化平均核糖体装载量分数,数值越高,表示该 5'UTR 的翻译效率越高。
  • 长度:输入序列长度(< 50 时自动在右侧补零,> 50 时截断为前 50)。

9. 完整测试用例(114 组,附真实输出)

所有用例均在昇腾 NPU(Ascend 910B)上实测执行,命令与输出一一对应。 按 11 个大类组织,共 114 组 ≥ 114 组。

9.1 用例清单

类别编号说明数量
A001–002环境自检(双卡 / 指定可见卡)2
B003–032单序列 MRL 预测(真实序列 × 设备 × 精度 × 合成序列)30
C033–041批处理推理(batch 2–8,不同长度混合)9
D042–057变异效应 ΔMRL(单碱基 / 多碱基 / indel / 含 N)16
E058–063pooler_output 的预回归共享表示6
F064–073序列长度 / 填充 / N / T / 大小写 / 非法字符处理10
G074–079不同推理精度对比(float32 / bfloat16 / float16)6
H080–085NPU 与 CPU 输出一致性6
I086–093序列长度 × batch 前向基准8
J094–099MSE 损失计算(自洽 / 随机标签)6
K100–103不同推理设备对比(npu:0 / npu:1 / cpu)4
L104–114合成序列与极端输入(全 A/C/G/U、极短、空、poly)11

9.2 完整用例与输出

用例 001(A)— 环境自检(双卡 NPU)

python3 inference.py --mode env --compact

输出:

[env] python=3.11.14 torch=2.9.0+cpu torch_npu=2.9.0.post1+gitee7ba04 NPU可用=True 设备数=2 设备0=Ascend910_9362 权重OK=True 前向OK=True MRL=-0.1092


用例 002(A)— 环境自检(仅可见 NPU 设备 1)

ASCEND_RT_VISIBLE_DEVICES=1 python3 inference.py --mode env --compact

输出:

[env] python=3.11.14 torch=2.9.0+cpu torch_npu=2.9.0.post1+gitee7ba04 NPU可用=True 设备数=1 设备0=Ascend910_9362 权重OK=True 前向OK=True MRL=-0.1092


用例 003(B)— MRL 预测 microRNA 21(L=22)

python3 inference.py --mode predict --seq-name "microRNA 21" --sequence UAGCUUAUCAGACUGAUGUUGA --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:0 精度=float32 MRL=-0.109189 耗时=0.001s


用例 004(B)— MRL 预测 microRNA 146a(L=22)

python3 inference.py --mode predict --seq-name "microRNA 146a" --sequence UGAGAACUGAAUUCCAUGGGUU --compact

输出:

[predict] 名称=microRNA 146a 序列=UGAGAACUGAAUUCCAUGGGUU 长度=22 设备=npu:0 精度=float32 MRL=-0.099806 耗时=0.001s


用例 005(B)— MRL 预测 microRNA 155(L=24)

python3 inference.py --mode predict --seq-name "microRNA 155" --sequence UUAAUGCUAAUCGUGAUAGGGGUU --compact

输出:

[predict] 名称=microRNA 155 序列=UUAAUGCUAAUCGUGAUAGGGGUU 长度=24 设备=npu:0 精度=float32 MRL=0.121052 耗时=0.001s


用例 006(B)— MRL 预测 HIV-1 TAR-WT(L=57)

python3 inference.py --mode predict --seq-name "HIV-1 TAR-WT" --sequence GGUCUCUCUGGUUAGACCAGAUCUGAGCCUGGGAGCUCUCUGGCUAACUAGGGAACC --compact

输出:

[predict] 名称=HIV-1 TAR-WT 序列=GGUCUCUCUGGUUAGACCAGAUCUGAGCCUGGGAGCUCUCUGGCUAACUAGGGAACC 长度=57 设备=npu:0 精度=float32 MRL=0.753697 耗时=0.001s


用例 007(B)— MRL 预测 vault RNA 2-1(L=108)

python3 inference.py --mode predict --seq-name "vault RNA 2-1" --sequence CGGGUCGGAGUUAGCUCAAGCGGUUACCUCCUCAUGCCGGACUUUCUAUCUGUCCAUCUCUGUGCUGGGGUUCGAGACCCGCGGGUGCUUACUGACCCUUUUAUGCAA --compact

输出:

[predict] 名称=vault RNA 2-1 序列=CGGGUCGGAGUUAGCUCAAGCGGUUACCUCCUCAUGCCGGACUUUCUAUCUGUCCAUCUCUGUGCUGGGGUUCGAGACCCGCGGGUGCUUACUGACCCUUUUAUGCAA 长度=108 设备=npu:0 精度=float32 MRL=-1.009857 耗时=0.001s


用例 008(B)— MRL 预测 interleukin 10 mRNA(L=54)

python3 inference.py --mode predict --seq-name "interleukin 10 mRNA" --sequence AUGCACAGCUCAGCACUGCUCUGUUGCCUGGUCCUCCUGACUGGGGUGAGGGCC --compact

输出:

[predict] 名称=interleukin 10 mRNA 序列=AUGCACAGCUCAGCACUGCUCUGUUGCCUGGUCCUCCUGACUGGGGUGAGGGCC 长度=54 设备=npu:0 精度=float32 MRL=-0.415402 耗时=0.001s


用例 009(B)— MRL 预测朊蛋白 mRNA(L=66)

python3 inference.py --mode predict --seq-name "prion protein mRNA" --sequence AUGGCGAACCUUGGCUGCUGGAUGCUGGUUCUCUUUGUGGCCACAUGGAGUGACCUGGGCCUCUGC --compact

输出:

[predict] 名称=prion protein mRNA 序列=AUGGCGAACCUUGGCUGCUGGAUGCUGGUUCUCUUUGUGGCCACAUGGAGUGACCUGGGCCUCUGC 长度=66 设备=npu:0 精度=float32 MRL=-1.271092 耗时=0.001s


用例 010(B)— MRL 预测胰岛素 mRNA(L=333)

python3 inference.py --mode predict --seq-name "insulin mRNA" --sequence AUGGCCCUGUGGAUGCGCCUCCUGCCCCUGCUGGCGCUGCUGGCCCUCUGGGGACCUGACCCAGCCGCAGCCUUUGUGAACCAACACCUGUGCGGCUCACACCUGGUGGAAGCUCUCUACCUAGUGUGCGGGGAACGAGGCUUCUUCUACACACCCAAGACCCGCCGGGAGGCAGAGGACCUGCAGGUGGGGCAGGUGGAGCUGGGCGGGGGCCCUGGUGCAGGCAGCCUGCAGCCCUUGGCCCUGGAGGGGUCCCUGCAGAAGCGUGGCAUUGUGGAACAAUGCUGUACCAGCAUCUGCUCCCUCUACCAGCUGGAGAACUACUGCAACUAG --compact

输出:

[predict] 名称=insulin mRNA 序列=AUGGCCCUGUGGAUGCGCCUCCUGCCCCUGCUGGCGCUGCUGGCCCUCUGGGGACCUGACCCAGCCGCAGCCUUUGUGAACCAACACCUGUGCGGCUCACACCUGGUGGAAGCUCUCUACCUAGUGUGCGGGGAACGAGGCUUCUUCUACACACCCAAGACCCGCCGGGAGGCAGAGGACCUGCAGGUGGGGCAGGUGGAGCUGGGCGGGGGCCCUGGUGCAGGCAGCCUGCAGCCCUUGGCCCUGGAGGGGUCCCUGCAGAAGCGUGGCAUUGUGGAACAAUGCUGUACCAGCAUCUGCUCCCUCUACCAGCUGGAGAACUACUGCAACUAG 长度=333 设备=npu:0 精度=float32 MRL=-1.446203 耗时=0.001s


用例 011(B)— MRL 预测 NRAS 5'UTR(L=131)

python3 inference.py --mode predict --seq-name "NRAS 5'UTR" --sequence GGGGCCGGAAGUGCCGCUCCUUGGUGGGGGCUGUUCAUGGCGGUUCCGGGGUCUCCAACAUUUUUCCCGGCUGUGGUCCUAAAUCUGUCCAAAGCAGAGGCAGUGGAGCUUGAGGUUCUUGCUGGUGUGAA --compact

输出:

[predict] 名称=NRAS 5'UTR 序列=GGGGCCGGAAGUGCCGCUCCUUGGUGGGGGCUGUUCAUGGCGGUUCCGGGGUCUCCAACAUUUUUCCCGGCUGUGGUCCUAAAUCUGUCCAAAGCAGAGGCAGUGGAGCUUGAGGUUCUUGCUGGUGUGAA 长度=131 设备=npu:0 精度=float32 MRL=-1.308528 耗时=0.001s


用例 012(B)— MRL 预测 amyloid beta 5'UTR(L=150)

python3 inference.py --mode predict --seq-name "amyloid beta 5'UTR" --sequence GUCAGUUUCCUCGGCAGCGGUAGGCGAGAGCACGCGGAGGAGCGUGCGCGGGGGCCCCGGGAGACGGCGGCGGUGGCGGCGCGGGCAGAGCAAGGACGCGGCGGAUCCCACUCGCACAGCAGCGCACUCGGUGCCCCGCGCAGGGUCGCG --compact

输出:

[predict] 名称=amyloid beta 5'UTR 序列=GUCAGUUUCCUCGGCAGCGGUAGGCGAGAGCACGCGGAGGAGCGUGCGCGGGGGCCCCGGGAGACGGCGGCGGUGGCGGCGCGGGCAGAGCAAGGACGCGGCGGAUCCCACUCGCACAGCAGCGCACUCGGUGCCCCGCGCAGGGUCGCG 长度=150 设备=npu:0 精度=float32 MRL=0.482783 耗时=0.001s


用例 013(B)— MRL 预测 RUNX1 5'UTR(L=194)

python3 inference.py --mode predict --seq-name "RUNX1 5'UTR" --sequence ACUUCUUUGGGCCUCAUAAACAACCACAGAACCACAAGUUGGGUAGCCUGGCAGUGUCAGAAGUCUGAACCCAGCAUAGUGGUCAGCAGGCAGGACGAAUCACACUGAAUGCAAACCACAGGGUUUCGCAGCGUGGUAAAAGAAAUCAUUGAGUCCCCCGCCUUCAGAAGAGGGUGCAUUUUCAGGAGGAAGCG --compact

输出:

[predict] 名称=RUNX1 5'UTR 序列=ACUUCUUUGGGCCUCAUAAACAACCACAGAACCACAAGUUGGGUAGCCUGGCAGUGUCAGAAGUCUGAACCCAGCAUAGUGGUCAGCAGGCAGGACGAAUCACACUGAAUGCAAACCACAGGGUUUCGCAGCGUGGUAAAAGAAAUCAUUGAGUCCCCCGCCUUCAGAAGAGGGUGCAUUUUCAGGAGGAAGCG 长度=194 设备=npu:0 精度=float32 MRL=0.740996 耗时=0.001s


用例 014(B)— MRL 预测 FMR1 5'UTR(L=261)

python3 inference.py --mode predict --seq-name "FMR1 5'UTR" --sequence CUCAGUCAGGCGCUCAGCUCCGUUUCGGUUUCACUUCCGGUGGAGGGCCGCCUCUGAGCGGGCGGCGGGCCGACGGCGAGCGCGGGCGGCGGCGGUGACGGAGGCGCCGCUGCCAGGGGGCGUGCGGCAGCGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGAGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCUGGGCCUCGAGCGCCCGCAGCCCACCUCUCGGGGGCGGGCUCCCGGCGCUAGCAGGGCUGAAGAGAAG --compact

输出:

[predict] 名称=FMR1 5'UTR 序列=CUCAGUCAGGCGCUCAGCUCCGUUUCGGUUUCACUUCCGGUGGAGGGCCGCCUCUGAGCGGGCGGCGGGCCGACGGCGAGCGCGGGCGGCGGCGGUGACGGAGGCGCCGCUGCCAGGGGGCGUGCGGCAGCGCGGCGGCGGCGGCGGCGGCGGCGGCGGCGGAGGCGGCGGCGGCGGCGGCGGCGGCGGCGGCUGGGCCUCGAGCGCCCGCAGCCCACCUCUCGGGGGCGGGCUCCCGGCGCUAGCAGGGCUGAAGAGAAG 长度=261 设备=npu:0 精度=float32 MRL=0.427745 耗时=0.001s


用例 015(B)— MRL 预测 MYC 5'UTR(L=363)

python3 inference.py --mode predict --seq-name "MYC 5'UTR" --sequence AACUCGCUGUAGUAAUUCCAGCGAGAGGCAGAGGGAGCGAGCGGGCGGCCGGCUAGGGUGGAAGAGCCGGGCGAGCAGAGCUGCGCUGCGGGCGUCCUGGGAAGGGAGAUCCGGAGCGAAUAGGGGGCUUCGCCUCUGGCCCAGCCCUCCCGCUGAUCCCCCAGCCAGCGGUCCGCAACCCUUGCCGCAUCCACGAAACUUUGCCCAUAGCAGCGGGCGGGCACUUUGCACUGGAACUUACAACACCCGAGCAAGGACGCGACUCUCCCGACGCGGGGAGGCUAUUCUGCCCAUUUGGGGACACUUCCCCGCCGCUGCCAGGACCCGCUUCUCUGAAAGGCUCUCCUUGCAGCUGCUUAGACG --compact

输出:

[predict] 名称=MYC 5'UTR 序列=AACUCGCUGUAGUAAUUCCAGCGAGAGGCAGAGGGAGCGAGCGGGCGGCCGGCUAGGGUGGAAGAGCCGGGCGAGCAGAGCUGCGCUGCGGGCGUCCUGGGAAGGGAGAUCCGGAGCGAAUAGGGGGCUUCGCCUCUGGCCCAGCCCUCCCGCUGAUCCCCCAGCCAGCGGUCCGCAACCCUUGCCGCAUCCACGAAACUUUGCCCAUAGCAGCGGGCGGGCACUUUGCACUGGAACUUACAACACCCGAGCAAGGACGCGACUCUCCCGACGCGGGGAGGCUAUUCUGCCCAUUUGGGGACACUUCCCCGCCGCUGCCAGGACCCGCUUCUCUGAAAGGCUCUCCUUGCAGCUGCUUAGACG 长度=363 设备=npu:0 精度=float32 MRL=0.542048 耗时=0.001s


用例 016(B)— MRL 预测 ATF4 5'UTR(L=282)

python3 inference.py --mode predict --seq-name "ATF4 5'UTR" --sequence CAUUUCUACUUUGCCCGCCCACAGAUGUAGUUUUCUCUGCGCGUGUGCGUUUUCCCUCCUCCCCGCCCUCAGGGUCCACGGCCACCAUGGCGUAUUAGGGGCAGCAGUGCCUGCGGCAGCAUUGGCCUUUGCAGCGGCGGCAGCAGCACCAGGCUCUGCAGCGGCAACCCCCAGCGGCUUAAGCCAUGGCGCUUCUCACGGCAUUCAGCAGCAGCGUUGCUGUAACCGACAAAGACACCUUCGAAUUAAGCACAUUCCUCGAUUCCAGCAAAGCACCGCAAC --compact

输出:

[predict] 名称=ATF4 5'UTR 序列=CAUUUCUACUUUGCCCGCCCACAGAUGUAGUUUUCUCUGCGCGUGUGCGUUUUCCCUCCUCCCCGCCCUCAGGGUCCACGGCCACCAUGGCGUAUUAGGGGCAGCAGUGCCUGCGGCAGCAUUGGCCUUUGCAGCGGCGGCAGCAGCACCAGGCUCUGCAGCGGCAACCCCCAGCGGCUUAAGCCAUGGCGCUUCUCACGGCAUUCAGCAGCAGCGUUGCUGUAACCGACAAAGACACCUUCGAAUUAAGCACAUUCCUCGAUUCCAGCAAAGCACCGCAAC 长度=282 设备=npu:0 精度=float32 MRL=-0.795356 耗时=0.001s


用例 017(B)— MRL 预测 GPI p137 3'UTR(L=300)

python3 inference.py --mode predict --seq-name "GPI p137 3'UTR" --sequence UUUUUAAAAGGAAAAGAUACCAAAUGCCUGCUGCUACCACCCUUUUCAAUUGCUAUGUUUUGAAAGGCACCAGUAUGUGUUUUAGAUUGAUUUAAAUGUUUCAUUUAAAUCACGGACAGUAGUUUCAGUUCUGAUGGUAUAAGCAAAACAAAUAAAACGUUUAUAAAAGUUGUAUCUUGAAACACUGGUGUUCAACAGCUAGCAGCUUAUGUGAUUCACCCCAUGCCACGUUAGUGUCACAAAUUUUAUGGUUUAUCUCCAGCAACAUUUCUCUAGUACUUGCACUUAUUAUCUGAAUUC --compact

输出:

[predict] 名称=GPI p137 3'UTR 序列=UUUUUAAAAGGAAAAGAUACCAAAUGCCUGCUGCUACCACCCUUUUCAAUUGCUAUGUUUUGAAAGGCACCAGUAUGUGUUUUAGAUUGAUUUAAAUGUUUCAUUUAAAUCACGGACAGUAGUUUCAGUUCUGAUGGUAUAAGCAAAACAAAUAAAACGUUUAUAAAAGUUGUAUCUUGAAACACUGGUGUUCAACAGCUAGCAGCUUAUGUGAUUCACCCCAUGCCACGUUAGUGUCACAAAUUUUAUGGUUUAUCUCCAGCAACAUUUCUCUAGUACUUGCACUUAUUAUCUGAAUUC 长度=300 设备=npu:0 精度=float32 MRL=0.954142 耗时=0.001s


用例 018(B)— MRL 预测 NPM1 3'UTR(L=335)

python3 inference.py --mode predict --seq-name "NPM1 3'UTR" --sequence GAAAAUAGUUUAAACAAUUUGUUAAAAAAUUUUCCGUCUUAUUUCAUUUCUGUAACAGUUGAUAUCUGGCUGUCCUUUUUAUAAUGCAGAGUGAGAACUUUCCCUACCGUGUUUGAUAAAUGUUGUCCAGGUUCUAUUGCCAAGAAUGUGUUGUCCAAAAUGCCUGUUUAGUUUUUAAAGAUGGAACUCCACCCUUUGCUUGGUUUUAAGUAUGUAUGGAAUGUUAUGAUAGGACAUAGUAGUAGCGGUGGUCAGACAUGGAAAUGGUGGGGAGACAAAAAUAUACAUGUGAAAUAAAACUCAGUAUUUUAAUAAAGUAGCACGGUUUCUAUUGA --compact

输出:

[predict] 名称=NPM1 3'UTR 序列=GAAAAUAGUUUAAACAAUUUGUUAAAAAAUUUUCCGUCUUAUUUCAUUUCUGUAACAGUUGAUAUCUGGCUGUCCUUUUUAUAAUGCAGAGUGAGAACUUUCCCUACCGUGUUUGAUAAAUGUUGUCCAGGUUCUAUUGCCAAGAAUGUGUUGUCCAAAAUGCCUGUUUAGUUUUUAAAGAUGGAACUCCACCCUUUGCUUGGUUUUAAGUAUGUAUGGAAUGUUAUGAUAGGACAUAGUAGUAGCGGUGGUCAGACAUGGAAAUGGUGGGGAGACAAAAAUAUACAUGUGAAAUAAAACUCAGUAUUUUAAUAAAGUAGCACGGUUUCUAUUGA 长度=335 设备=npu:0 精度=float32 MRL=0.824072 耗时=0.001s


用例 019(B)— MRL 预测 telomerase RNA(L=451)

python3 inference.py --mode predict --seq-name "telomerase RNA" --sequence GGGUUGCGGAGGGUGGGCCUGGGAGGGGUGGUGGCCAUUUUUUGUCUAACCCUAACUGAGAAGGGCGUAGGCGCCGUGCUUUUGCUCCCCGCGCGCUGUUUUUCUCGCUGACUUUCAGCGGGCGGAAAAGCCUCGGCCUGCCGCCUUCCACCGUUCAUUCUAGAGCAAACAAAAAAUGUCAGCUGCUGGCCCGUUCGCCCCUCCCGGGGACCUGCGGCGGGUCGCCUGCCCAGCCCCCGAACCCCGCCUGGAGGCCGCGGUCGGCCCGGGGCUUCUCCGGAGGCACCCACUGCCACCGCGAAGAGUUGGGCUCUGUCAGCCGCGGGUCUCUCGGGGGCGAGGGCGAGGUUCAGGCCUUUCAGGCCGCAGGAAGAGGAACGGAGCGAGUCCCCGCGCGCGGCGCGAUUCCCUGAGCUGUGGGACGUGCACCCAGGACUCGGCUCACACAUGC --compact

输出:

[predict] 名称=telomerase RNA 序列=GGGUUGCGGAGGGUGGGCCUGGGAGGGGUGGUGGCCAUUUUUUGUCUAACCCUAACUGAGAAGGGCGUAGGCGCCGUGCUUUUGCUCCCCGCGCGCUGUUUUUCUCGCUGACUUUCAGCGGGCGGAAAAGCCUCGGCCUGCCGCCUUCCACCGUUCAUUCUAGAGCAAACAAAAAAUGUCAGCUGCUGGCCCGUUCGCCCCUCCCGGGGACCUGCGGCGGGUCGCCUGCCCAGCCCCCGAACCCCGCCUGGAGGCCGCGGUCGGCCCGGGGCUUCUCCGGAGGCACCCACUGCCACCGCGAAGAGUUGGGCUCUGUCAGCCGCGGGUCUCUCGGGGGCGAGGGCGAGGUUCAGGCCUUUCAGGCCGCAGGAAGAGGAACGGAGCGAGUCCCCGCGCGCGGCGCGAUUCCCUGAGCUGUGGGACGUGCACCCAGGACUCGGCUCACACAUGC 长度=451 设备=npu:0 精度=float32 MRL=0.096651 耗时=0.001s


用例 020(B)— MRL 对 7SK snRNA 的预测(L=332)

python3 inference.py --mode predict --seq-name "7SK snRNA" --sequence GGAUGUGAGGGCGAUCUGGCUGCGACAUCUGUCACCCCAUUGAUCGCCAGGGUUGAUUCGGCUGAUCUGGCUGGCUAGGCGGGUGUCCCCUUCCUCCCUCACCGCUCCAUGUGCGUCCCUCCCGAAGCUGCGCGCUCGGUCGAAGAGGACGACCAUCCCCGAUAGAGGAGGACCGGUCUUCGGUCAAGGGUAUACGAGUAGCUGCGCUCCCCUGCUAGAACCUCCAAACAAGCUCUCAAGGUCCAUUUGUAGGAGAACGUAGGGUAGUCAAGCUUCCAAGACUCCAGACACAUCCAAAUGAGGCGCUGCAUGUGGCAGUCUGCCUUUCUUUU --compact

输出:

[predict] 名称=7SK snRNA 序列=GGAUGUGAGGGCGAUCUGGCUGCGACAUCUGUCACCCCAUUGAUCGCCAGGGUUGAUUCGGCUGAUCUGGCUGGCUAGGCGGGUGUCCCCUUCCUCCCUCACCGCUCCAUGUGCGUCCCUCCCGAAGCUGCGCGCUCGGUCGAAGAGGACGACCAUCCCCGAUAGAGGAGGACCGGUCUUCGGUCAAGGGUAUACGAGUAGCUGCGCUCCCCUGCUAGAACCUCCAAACAAGCUCUCAAGGUCCAUUUGUAGGAGAACGUAGGGUAGUCAAGCUUCCAAGACUCCAGACACAUCCAAAUGAGGCGCUGCAUGUGGCAGUCUGCCUUUCUUUU 长度=332 设备=npu:0 精度=float32 MRL=-0.990503 耗时=0.001s


用例 021(B)— MRL 预测 brain cytoplasmic RNA 1(L=200)

python3 inference.py --mode predict --seq-name "brain cytoplasmic RNA 1" --sequence GGCCGGGCGCGGUGGCUCACGCCUGUAAUCCCAGCUCUCAGGGAGGCUAAGAGGCGGGAGGAUAGCUUGAGCCCAGGAGUUCGAGACCUGCCUGGGCAAUAUAGCGAGACCCCGUUCUCCAGAAAAAGGAAAAAAAAAAACAAAAGACAAAAAAAAAAUAAGCGUAACUUCCCUCAAAGCAACAACCCCCCCCCCCCUUU --compact

输出:

[predict] 名称=brain cytoplasmic RNA 1 序列=GGCCGGGCGCGGUGGCUCACGCCUGUAAUCCCAGCUCUCAGGGAGGCUAAGAGGCGGGAGGAUAGCUUGAGCCCAGGAGUUCGAGACCUGCCUGGGCAAUAUAGCGAGACCCCGUUCUCCAGAAAAAGGAAAAAAAAAAACAAAAGACAAAAAAAAAAUAAGCGUAACUUCCCUCAAAGCAACAACCCCCCCCCCCCUUU 长度=200 设备=npu:0 精度=float32 MRL=0.288587 耗时=0.001s


用例 022(B)— MRL 预测 microRNA 21 × 设备 npu:0

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --device npu:0 --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:0 精度=float32 MRL=-0.109189 耗时=0.001s


用例 023(B)— MRL 预测 microRNA 21 × 设备 npu:1

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --device npu:1 --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:1 精度=float32 MRL=-0.109189 耗时=0.018s


用例 024(B)— MRL 预测 microRNA 21 × 设备 cpu

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --device cpu --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=cpu 精度=float32 MRL=-0.109167 耗时=0.003s


用例 025(B)— MRL 预测 microRNA 21 × float32 精度

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --dtype float32 --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:0 精度=float32 MRL=-0.109189 耗时=0.001s


用例 026(B)— MRL 预测 microRNA 21 × bfloat16 精度

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --dtype bfloat16 --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:0 精度=bfloat16 MRL=-0.108887 耗时=0.041s


用例 027(B)— MRL 预测 microRNA 21,精度为 float16

python3 inference.py --mode predict --sequence UAGCUUAUCAGACUGAUGUUGA --dtype float16 --compact

输出:

[predict] 名称=microRNA 21 序列=UAGCUUAUCAGACUGAUGUUGA 长度=22 设备=npu:0 精度=float16 MRL=-0.109131 耗时=0.036s


用例 028(B)— MRL 预测 syn16(L=16 合成序列)

python3 inference.py --mode predict --seq-name "syn16" --sequence CUAAUCUCUAACAUCA --compact

输出:

[predict] 名称=syn16 序列=CUAAUCUCUAACAUCA 长度=16 设备=npu:0 精度=float32 MRL=0.776408 耗时=0.001s


用例 029(B)— MRL 预测 syn32(L=32 合成序列)

python3 inference.py --mode predict --seq-name "syn32" --sequence AUCAGUGUAUGCUUCUUUGAAACUUGAGUUUG --compact

输出:

[predict] 名称=syn32 序列=AUCAGUGUAUGCUUCUUUGAAACUUGAGUUUG 长度=32 设备=npu:0 精度=float32 MRL=0.803762 耗时=0.001s


用例 030(B)— MRL 对 syn48 的预测(L=48 合成序列)

python3 inference.py --mode predict --seq-name "syn48" --sequence GACUAAACCUGUCCGCUGAAACUGAGCGGGGUACUGCAGCCGAUGUAU --compact

输出:

[predict] 名称=syn48 序列=GACUAAACCUGUCCGCUGAAACUGAGCGGGGUACUGCAGCCGAUGUAU 长度=48 设备=npu:0 精度=float32 MRL=-0.227817 耗时=0.001s


用例 031(B)— MRL 预测 syn64(L=64 合成序列)

python3 inference.py --mode predict --seq-name "syn64" --sequence GGUCCAUAGCGAUCGUUCAAGAGGGAUAUCCCGCGAGGCGACGGUAAUGCCAGCAUGUUGUCUG --compact

输出:

[predict] 名称=syn64 序列=GGUCCAUAGCGAUCGUUCAAGAGGGAUAUCCCGCGAGGCGACGGUAAUGCCAGCAUGUUGUCUG 长度=64 设备=npu:0 精度=float32 MRL=-0.871905 耗时=0.001s


用例 032(B)— MRL 预测 syn80(L=80 的合成序列)

python3 inference.py --mode predict --seq-name "syn80" --sequence UGUCGGACAAUGUAGAUAUCCUAUACUCUGAGCGGCCGCCGCGUAGCGAAAGACUUUGAGCUUGCCUAACGGUUUACUUU --compact

输出:

[predict] 名称=syn80 序列=UGUCGGACAAUGUAGAUAUCCUAUACUCUGAGCGGCCGCCGCGUAGCGAAAGACUUUGAGCUUGCCUAACGGUUUACUUU 长度=80 设备=npu:0 精度=float32 MRL=-1.007995 耗时=0.001s


用例 033(C)— 批量处理 2 条序列(microRNA 21 + 146a)

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,UGAGAACUGAAUUCCAUGGGUU --compact

输出:

[batch] batch=2 设备=npu:0 精度=float32 logits=(2, 1) MRL=['-0.109189', '-0.099806'] 耗时=0.002s
[batch] 序列0: microRNA 21 L=22 MRL=-0.109189
[batch] 序列1: microRNA 146a L=22 MRL=-0.099806


用例 034(C)— 批处理 3 条序列

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,UGAGAACUGAAUUCCAUGGGUU,UUAAUGCUAAUCGUGAUAGGGGUU --compact

输出:

[batch] batch=3 设备=npu:0 精度=float32 logits=(3, 1) MRL=['-0.109189', '-0.099806', '0.121052'] 耗时=0.002s
[batch] 序列0: seq0 L=22 MRL=-0.109189
[batch] 序列1: seq1 L=22 MRL=-0.099806
[batch] 序列2: seq2 L=24 MRL=0.121052


用例 035(C)— 批处理 4 条序列(含 50nt)

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,UGAGAACUGAAUUCCAUGGGUU,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC,AUCAGUGUAUGCUUCUUUGAAACUUGAGUUUG --compact

输出:

[batch] batch=4 设备=npu:0 精度=float32 logits=(4, 1) MRL=['-0.109189', '-0.099806', '1.254144', '0.803762'] 耗时=0.002s
[batch] 序列0: seq0 L=22 MRL=-0.109189
[batch] 序列1: seq1 L=22 MRL=-0.099806
[batch] 序列2: seq2 L=50 MRL=1.254144
[batch] 序列3: seq3 L=32 MRL=0.803762


用例 036(C)— 批处理 5 条序列(含 64nt 超长序列)

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC,AUCAGUGUAUGCUUCUUUGAAACUUGAGUUUG,GGUCCAUAGCGAUCGUUCAAGAGGGAUAUCCCGCGAGGCGACGGUAAUGCCAGCAUGUUGUCUG,GCUAGCUGAGCCUCCGUCAGACAGAAUUGCCGUCGGUCCCACGAGUGUUCAAUCCGGGUACGGGUGUCUCGUGCUCAAGUUAUACAGACUCUCCUGCCAA --compact

输出:

[batch] batch=5 设备=npu:0 精度=float32 logits=(5, 1) MRL=['-0.109189', '1.254144', '0.803762', '-0.871905', '0.483292'] 耗时=0.041s
[batch] 序列0: seq0 L=22 MRL=-0.109189
[batch] 序列1: seq1 L=50 MRL=1.254144
[batch] 序列2: seq2 L=32 MRL=0.803762
[batch] 序列3: seq3 L=64 MRL=-0.871905
[batch] 序列4: seq4 L=100 MRL=0.483292


用例 037(C)— 批处理 8 条序列

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC,CUAAUCUCUAACAUCA,AUCAGUGUAUGCUUCUUUGAAACUUGAGUUUG,GACUAAACCUGUCCGCUGAAACUGAGCGGGGUACUGCAGCCGAUGUAU,GGUCCAUAGCGAUCGUUCAAGAGGGAUAUCCCGCGAGGCGACGGUAAUGCCAGCAUGUUGUCUG,UGUCGGACAAUGUAGAUAUCCUAUACUCUGAGCGGCCGCCGCGUAGCGAAAGACUUUGAGCUUGCCUAACGGUUUACUUU,GCUAGCUGAGCCUCCGUCAGACAGAAUUGCCGUCGGUCCCACGAGUGUUCAAUCCGGGUACGGGUGUCUCGUGCUCAAGUUAUACAGACUCUCCUGCCAA --compact

输出:

[batch] batch=8 设备=npu:0 精度=float32 logits=(8, 1) MRL=['-0.109189', '1.254144', '0.776408', '0.803762', '-0.227817', '-0.871905', '-1.007995', '0.483292'] 耗时=0.002s
[batch] 序列0: seq0 L=22 MRL=-0.109189
[batch] 序列1: seq1 L=50 MRL=1.254144
[batch] 序列2: seq2 L=16 MRL=0.776408
[batch] 序列3: seq3 L=32 MRL=0.803762
[batch] 序列4: seq4 L=48 MRL=-0.227817
[batch] 序列5: seq5 L=64 MRL=-0.871905
[batch] 序列6: seq6 L=80 MRL=-1.007995
[batch] 序列7: seq7 L=100 MRL=0.483292


用例 038(C)— 批量处理 4 条不同长度序列(22/48/50/100)

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,GACUAAACCUGUCCGCUGAAACUGAGCGGGGUACUGCAGCCGAUGUAU,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC,GCUAGCUGAGCCUCCGUCAGACAGAAUUGCCGUCGGUCCCACGAGUGUUCAAUCCGGGUACGGGUGUCUCGUGCUCAAGUUAUACAGACUCUCCUGCCAA --compact

输出:

[batch] batch=4 设备=npu:0 精度=float32 logits=(4, 1) MRL=['-0.109189', '-0.227817', '1.254144', '0.483292'] 耗时=0.001s
[batch] 序列0: seq0 L=22 MRL=-0.109189
[batch] 序列1: seq1 L=48 MRL=-0.227817
[batch] 序列2: seq2 L=50 MRL=1.254144
[batch] 序列3: seq3 L=100 MRL=0.483292


用例 039(C)— 批处理 × 设备 npu:1

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --device npu:1 --compact

输出:

[batch] batch=2 设备=npu:1 精度=float32 logits=(2, 1) MRL=['-0.109189', '1.254144'] 耗时=0.002s
[batch] 序列0: microRNA 21 L=22 MRL=-0.109189
[batch] 序列1: ref50 L=50 MRL=1.254144


用例 040(C)— 批处理 × 精度 bfloat16

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --dtype bfloat16 --compact

输出:

[batch] batch=2 设备=npu:0 精度=bfloat16 logits=(2, 1) MRL=['-0.108887', '1.257812'] 耗时=0.002s
[batch] 序列0: microRNA 21 L=22 MRL=-0.108887
[batch] 序列1: ref50 L=50 MRL=1.257812


用例 041(C)— 批处理 × 精度 float16

python3 inference.py --mode batch --sequences UAGCUUAUCAGACUGAUGUUGA,GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --dtype float16 --compact

输出:

[batch] batch=2 设备=npu:0 精度=float16 logits=(2, 1) MRL=['-0.109131', '1.253906'] 耗时=0.002s
[batch] 序列0: microRNA 21 L=22 MRL=-0.109131
[batch] 序列1: ref50 L=50 MRL=1.253906


用例 042(D)— 参考→单碱基 A→U

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGAUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.263130 ΔMRL=+0.008986 位点=C46A 设备=npu:0 耗时=0.001s


用例 043(D)— 参考 → 单碱基,位置 1,A→C

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt CGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=CGGACAUAGCUAGCUAGCUA... MRL=1.254517 ΔMRL=+0.000373 位点=G1C 设备=npu:0 耗时=0.001s


用例 044(D)— 参考→单碱基 第25位 G→A

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAACUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.260146 ΔMRL=+0.006002 位点=G25A 设备=npu:0 耗时=0.001s


用例 045(D)— 参考 → 单碱基,位置 50:C→U

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGU --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.294376 ΔMRL=+0.040232 位点=C50U 设备=npu:0 耗时=0.001s


用例 046(D)— 参考→双碱基 位点1&2

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt UCGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=UCGACAUAGCUAGCUAGCUA... MRL=1.248113 ΔMRL=-0.006031 位点=G2C 设备=npu:0 耗时=0.001s


用例 047(D)— 参考→双碱基 位置25&26

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAUCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.257336 ΔMRL=+0.003192 位点=G25U 设备=npu:0 耗时=0.001s


用例 048(D)— 参考→三联碱基 位置24-26

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUUGAUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.233964 ΔMRL=-0.020180 位点=C26A 设备=npu:0 耗时=0.001s


用例 049(D)— 参考→UTR 末端 3 nt 替换

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAUG --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.384033 ΔMRL=+0.129889 位点=C50G 设备=npu:0 耗时=0.001s


用例 050(D)— 参考→UTR 5' 端 3nt 替换

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt CAGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=CAGACAUAGCUAGCUAGCUA... MRL=1.272771 ΔMRL=+0.018627 位点=G2A 设备=npu:0 耗时=0.001s


用例 051(D)— 参考→删除 位置25

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUACUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.198563 ΔMRL=-0.055580 位点=N/A 设备=npu:0 耗时=0.001s


用例 052(D)— 参考 → 在位置 25 插入 U

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAGUCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.134567 ΔMRL=-0.119576 位点=N/A 设备=npu:0 耗时=0.001s


用例 053(D)— 参考序列→全序列 A→U 替换(短序列)

python3 inference.py --mode variant --ref UAGCUUAUCAGACUGAUGUUGA --alt UUGCUUUUCUGUCUGUUGUUGU --compact

输出:

[variant] 参考=UAGCUUAUCAGACUGAUGUU... MRL=-0.109189 变异=UUGCUUUUCUGUCUGUUGUU... MRL=1.112855 ΔMRL=+1.222045 位点=A22U 设备=npu:0 耗时=0.001s


用例 054(D)— microRNA 21 → 互补变异

python3 inference.py --mode variant --ref UAGCUUAUCAGACUGAUGUUGA --alt UUGCUUUUCUGUCUGUUGUUGU --compact

输出:

[variant] 参考=UAGCUUAUCAGACUGAUGUU... MRL=-0.109189 变异=UUGCUUUUCUGUCUGUUGUU... MRL=1.112855 ΔMRL=+1.222045 位点=A22U 设备=npu:0 耗时=0.001s


用例 055(D)— 参考→含 N 变异 位置 10

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGNUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGNUAGCUAGCUA... MRL=1.250373 ΔMRL=-0.003771 位点=C10N 设备=npu:0 耗时=0.001s


用例 056(D)— 变异效应 × 设备 npu:1

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGAUAGC --device npu:1 --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.254144 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.263130 ΔMRL=+0.008986 位点=C46A 设备=npu:1 耗时=0.001s


用例 057(D)— 变异效应 × bfloat16 精度

python3 inference.py --mode variant --ref GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --alt GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGAUAGC --dtype bfloat16 --compact

输出:

[variant] 参考=GGGACAUAGCUAGCUAGCUA... MRL=1.257812 变异=GGGACAUAGCUAGCUAGCUA... MRL=1.265625 ΔMRL=+0.007812 位点=C46A 设备=npu:0 耗时=0.001s


用例 058(E)— pooler_output microRNA 21

python3 inference.py --mode pooler --seq-name "microRNA 21" --sequence UAGCUUAUCAGACUGAUGUUGA --compact

输出:

[pooler] 名称=microRNA 21 长度=22 设备=npu:0 精度=float32 pooler_dim=40 耗时=0.001s
[pooler] 前8维: [0.0, 0.0, 0.0, 0.165016, 0.480091, 0.0, 0.0, 0.02055]
[pooler] 统计: min=0.000000 max=0.681726 mean=0.119085
[pooler] MRL(decoder): -0.109189


用例 059(E)— pooler_output 参考 50nt

python3 inference.py --mode pooler --seq-name "参考 50nt" --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[pooler] 名称=参考 50nt 长度=50 设备=npu:0 精度=float32 pooler_dim=40 耗时=0.001s
[pooler] 前8维: [0.0, 0.219238, 0.0, 0.085501, 1.839782, 0.020066, 0.0, 0.0]
[pooler] 统计: min=0.000000 max=3.574111 mean=0.324593
[pooler] MRL(decoder): 1.254144


用例 060(E)— pooler_output 合成 syn48

python3 inference.py --mode pooler --seq-name "合成 syn48" --sequence GACUAAACCUGUCCGCUGAAACUGAGCGGGGUACUGCAGCCGAUGUAU --compact

输出:

[pooler] 名称=合成 syn48 长度=48 设备=npu:0 精度=float32 pooler_dim=40 耗时=0.001s
[pooler] 前8维: [0.0, 0.320115, 0.0, 0.377636, 0.0, 0.0, 0.0, 0.134791]
[pooler] 统计: min=0.000000 max=0.436301 mean=0.096577
[pooler] MRL(decoder): -0.227817


用例 061(E)— pooler_output × bfloat16 精度

python3 inference.py --mode pooler --sequence UAGCUUAUCAGACUGAUGUUGA --dtype bfloat16 --compact

输出:

[pooler] 名称=microRNA 21 长度=22 设备=npu:0 精度=bfloat16 pooler_dim=40 耗时=0.001s
[pooler] 前8维: [0.0, 0.0, 0.0, 0.164062, 0.480469, 0.0, 0.0, 0.019897]
[pooler] 统计: min=0.000000 max=0.683594 mean=0.119044
[pooler] MRL(decoder): -0.108887


用例 062(E)— pooler_output × 设备 npu:1

python3 inference.py --mode pooler --sequence UAGCUUAUCAGACUGAUGUUGA --device npu:1 --compact

输出:

[pooler] 名称=microRNA 21 长度=22 设备=npu:1 精度=float32 pooler_dim=40 耗时=0.001s
[pooler] 前8维: [0.0, 0.0, 0.0, 0.165016, 0.480091, 0.0, 0.0, 0.02055]
[pooler] 统计: min=0.000000 max=0.681726 mean=0.119085
[pooler] MRL(decoder): -0.109189


用例 063(E)— pooler_output 合成 syn100(超长截断)

python3 inference.py --mode pooler --sequence GCUAGCUGAGCCUCCGUCAGACAGAAUUGCCGUCGGUCCCACGAGUGUUCAAUCCGGGUACGGGUGUCUCGUGCUCAAGUUAUACAGACUCUCCUGCCAA --seq-name syn100 --compact

输出:

[pooler] 名称=syn100 长度=100 设备=npu:0 精度=float32 pooler_dim=40 耗时=0.001s
[pooler] 前8维: [0.0, 0.470241, 0.0, 0.0, 0.618496, 0.0, 0.0, 0.0]
[pooler] 统计: min=0.000000 max=0.877107 mean=0.161018
[pooler] MRL(decoder): 0.483292


用例 064(F)— 默认长度扫描(以50nt参考序列为基准)

python3 inference.py --mode padding --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50 | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50 | 含T:L=50 | 小写:L=50 | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=1.254144 | 截短(前30nt)=0.985650 | 超长(150nt)=1.254144 | 含N=1.241821 | 含T=1.254144 | 小写=1.254144 | 非法字符=0.815843 | 全N=0.793978


用例 065(F)— 短序列 10nt 右侧补零

python3 inference.py --mode padding --sequence GGGACAUAGC --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=10(pad至50) | 截短(前30nt):L=10(pad至50) | 超长(150nt):L=30(pad至50) | 含N:L=10(pad至50) | 含T:L=10(pad至50) | 小写:L=10(pad至50) | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=0.808050 | 截短(前30nt)=0.808050 | 超长(150nt)=0.695457 | 含N=0.790020 | 含T=0.808050 | 小写=0.808050 | 非法字符=0.815843 | 全N=0.793978


用例 066(F)— 短序列 30nt 右侧补零

python3 inference.py --mode padding --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=30(pad至50) | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=30(pad至50) | 含T:L=30(pad至50) | 小写:L=30(pad至50) | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=0.985650 | 截短(前30nt)=0.985650 | 超长(150nt)=1.033737 | 含N=0.972528 | 含T=0.985650 | 小写=0.985650 | 非法字符=0.815843 | 全N=0.793978


用例 067(F)— 超长 150 nt 序列截断至前 50

python3 inference.py --mode padding --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCGGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCGGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50(截断) | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50(截断) | 含T:L=50(截断) | 小写:L=50(截断) | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=1.254144 | 截短(前30nt)=0.985650 | 超长(150nt)=1.254144 | 含N=1.241821 | 含T=1.254144 | 小写=1.254144 | 非法字符=0.815843 | 全N=0.793978


用例 068(F)— 含 N 碱基

python3 inference.py --mode padding --sequence GGGACNUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50 | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50 | 含T:L=50 | 小写:L=50 | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=1.241821 | 截短(前30nt)=0.972528 | 超长(150nt)=1.241821 | 含N=1.241821 | 含T=1.241821 | 小写=1.241821 | 非法字符=0.815843 | 全N=0.793978


用例 069(F)— 含 T(T→U 替换)

python3 inference.py --mode padding --sequence GGGACATAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGCTAGC --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50 | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50 | 含T:L=50 | 小写:L=50 | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=1.254144 | 截短(前30nt)=0.985650 | 超长(150nt)=1.254144 | 含N=1.241821 | 含T=1.254144 | 小写=1.254144 | 非法字符=0.815843 | 全N=0.793978


用例 070(F)— 小写输入(大小写不敏感)

python3 inference.py --mode padding --sequence gggacauagcuagcuagcuagcuagcuagcuagcuagcuagcuagcuagc --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50 | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50 | 含T:L=50 | 小写:L=50 | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=1.254144 | 截短(前30nt)=0.985650 | 超长(150nt)=1.254144 | 含N=1.241821 | 含T=1.254144 | 小写=1.254144 | 非法字符=0.815843 | 全N=0.793978


用例 071(F)— 非法字符 '-' → N

python3 inference.py --mode padding --sequence ACGU- --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=5(pad至50) | 截短(前30nt):L=5(pad至50) | 超长(150nt):L=15(pad至50) | 含N:L=6(pad至50) | 含T:L=5(pad至50) | 小写:L=5(pad至50) | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=0.815843 | 截短(前30nt)=0.815843 | 超长(150nt)=0.799498 | 含N=0.815843 | 含T=0.815843 | 小写=0.815843 | 非法字符=0.815843 | 全N=0.793978


测试用例 072(F)— 全 N 序列

python3 inference.py --mode padding --sequence NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50 | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50 | 含T:L=50 | 小写:L=50 | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=0.793978 | 截短(前30nt)=0.793978 | 超长(150nt)=0.793978 | 含N=0.793978 | 含T=0.793978 | 小写=0.793978 | 非法字符=0.815843 | 全N=0.793978


用例 073(F)— poly-A 50nt

python3 inference.py --mode padding --sequence AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --compact

输出:

[padding] 设备=npu:0 精度=float32 有效长度/处理: 原始(50nt):L=50 | 截短(前30nt):L=30(pad至50) | 超长(150nt):L=50(截断) | 含N:L=50 | 含T:L=50 | 小写:L=50 | 非法字符:L=5(pad至50) | 全N:L=50
[padding] 原始(50nt)=1.196788 | 截短(前30nt)=0.862899 | 超长(150nt)=1.196788 | 含N=1.193119 | 含T=1.196788 | 小写=1.196788 | 非法字符=0.815843 | 全N=0.793978


用例 074(G)— 精度对比 microRNA 21

python3 inference.py --mode dtype --seq-name "microRNA 21" --sequence UAGCUUAUCAGACUGAUGUUGA --compact

输出:

[dtype] 序列=microRNA 21 长度=22 设备=npu:0 float32:-0.109189 | bfloat16:-0.108887 | float16:-0.109131


用例 075(G)— 精度对比,参考 50nt

python3 inference.py --mode dtype --seq-name "参考 50nt" --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[dtype] 序列=参考 50nt 长度=50 设备=npu:0 float32:1.254144 | bfloat16:1.257812 | float16:1.253906


用例 076(G)— 变异序列精度对比

python3 inference.py --mode dtype --seq-name "变异序列" --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGAUAGC --compact

输出:

[dtype] 序列=变异序列 长度=50 设备=npu:0 float32:1.263130 | bfloat16:1.265625 | float16:1.262695


用例 077(G)— 精度对比 syn16

python3 inference.py --mode dtype --seq-name "syn16" --sequence CUAAUCUCUAACAUCA --compact

输出:

[dtype] 序列=syn16 长度=16 设备=npu:0 float32:0.776408 | bfloat16:0.777344 | float16:0.776367


用例 078(G)— poly-A 精度对比

python3 inference.py --mode dtype --seq-name "poly-A" --sequence AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA --compact

输出:

[dtype] 序列=poly-A 长度=50 设备=npu:0 float32:1.196788 | bfloat16:1.195312 | float16:1.196289


用例 079(G)— 精度对比:全 N

python3 inference.py --mode dtype --seq-name "全 N" --sequence NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN --compact

输出:

[dtype] 序列=全 N 长度=50 设备=npu:0 float32:0.793978 | bfloat16:0.792969 | float16:0.793945


用例 080(H)— NPU 与 CPU 一致性 microRNA 21

python3 inference.py --mode compare --seq-name "microRNA 21" --sequence UAGCUUAUCAGACUGAUGUUGA --compact

输出:

[compare] 序列=microRNA 21 长度=22 NPU_MRL=-0.109189 CPU_MRL=-0.109167 abs_diff=2.25e-05 一致=True


用例 081(H)— NPU 与 CPU 一致性 参考 50nt

python3 inference.py --mode compare --seq-name "参考 50nt" --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --compact

输出:

[compare] 序列=参考 50nt 长度=50 NPU_MRL=1.254144 CPU_MRL=1.254153 abs_diff=9.54e-06 一致=True


用例 082(H)— NPU 与 CPU 一致性 microRNA 146a

python3 inference.py --mode compare --seq-name "microRNA 146a" --sequence UGAGAACUGAAUUCCAUGGGUU --compact

输出:

[compare] 序列=microRNA 146a 长度=22 NPU_MRL=-0.099806 CPU_MRL=-0.099844 abs_diff=3.74e-05 一致=True


用例 083(H)— NPU 与 CPU 一致性 syn64

python3 inference.py --mode compare --seq-name "syn64" --sequence GGUCCAUAGCGAUCGUUCAAGAGGGAUAUCCCGCGAGGCGACGGUAAUGCCAGCAUGUUGUCUG --compact

输出:

[compare] 序列=syn64 长度=64 NPU_MRL=-0.871905 CPU_MRL=-0.871921 abs_diff=1.67e-05 一致=True


用例 084(H)— NPU 与 CPU 一致性:全 N

python3 inference.py --mode compare --seq-name "全 N" --sequence NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN --compact

输出:

[compare] 序列=全 N 长度=50 NPU_MRL=0.793978 CPU_MRL=0.793976 abs_diff=1.37e-06 一致=True


用例 085(H)— NPU 与 CPU 一致性:microRNA 155

python3 inference.py --mode compare --seq-name "microRNA 155" --sequence UUAAUGCUAAUCGUGAUAGGGGUU --compact

输出:

[compare] 序列=microRNA 155 长度=24 NPU_MRL=0.121052 CPU_MRL=0.121068 abs_diff=1.67e-05 一致=True


用例 086(I)— 基准长度 [16,32,50,64,96,128,256] batch=1

python3 inference.py --mode benchmark --compact --batch 1

输出:

[benchmark] batch=1 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0008s 吞吐=1180.8seq/s MRL=0.771903
[benchmark] 长度=  32 耗时=0.0008s 吞吐=1207.7seq/s MRL=-0.195681
[benchmark] 长度=  50 耗时=0.0008s 吞吐=1298.1seq/s MRL=-0.207370
[benchmark] 长度=  64 耗时=0.0008s 吞吐=1238.7seq/s MRL=-0.207370
[benchmark] 长度=  96 耗时=0.0011s 吞吐=929.8seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0011s 吞吐=934.1seq/s MRL=-0.207370
[benchmark] 长度= 256 耗时=0.0010s 吞吐=986.4seq/s MRL=-0.207370


用例 087(I)— 基准:长度[50,100,200,300,400,500],batch=1

python3 inference.py --mode benchmark --compact --lengths 50 100 200 300 400 500 --batch 1

输出:

[benchmark] batch=1 设备=npu:0 精度=float32
[benchmark] 长度=  50 耗时=0.0008s 吞吐=1320.6seq/s MRL=-0.207370
[benchmark] 长度= 100 耗时=0.0008s 吞吐=1330.7seq/s MRL=-0.207370
[benchmark] 长度= 200 耗时=0.0007s 吞吐=1341.7seq/s MRL=-0.207370
[benchmark] 长度= 300 耗时=0.0007s 吞吐=1339.2seq/s MRL=-0.207370
[benchmark] 长度= 400 耗时=0.0010s 吞吐=1034.9seq/s MRL=-0.207370
[benchmark] 长度= 500 耗时=0.0010s 吞吐=993.9seq/s MRL=-0.207370


用例 088(I)— 基准 长度[16,50,128] batch=4

python3 inference.py --mode benchmark --compact --lengths 16 50 128 --batch 4

输出:

[benchmark] batch=4 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0010s 吞吐=4004.1seq/s MRL=0.771903
[benchmark] 长度=  50 耗时=0.0007s 吞吐=5406.8seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0010s 吞吐=3999.3seq/s MRL=-0.207370


用例 089(I)— 基准 长度[16,50,128] batch=8

python3 inference.py --mode benchmark --compact --lengths 16 50 128 --batch 8

输出:

[benchmark] batch=8 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0010s 吞吐=8202.0seq/s MRL=0.771903
[benchmark] 长度=  50 耗时=0.0008s 吞吐=10295.9seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0010s 吞吐=8085.4seq/s MRL=-0.207370


用例 090(I)— 基准长度[16,50,128] batch=16

python3 inference.py --mode benchmark --compact --lengths 16 50 128 --batch 16

输出:

[benchmark] batch=16 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0010s 吞吐=16324.2seq/s MRL=0.771903
[benchmark] 长度=  50 耗时=0.0007s 吞吐=21725.1seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0010s 吞吐=16652.3seq/s MRL=-0.207370


用例 091(I)— 基准:长度[16,50,128],batch=32

python3 inference.py --mode benchmark --compact --lengths 16 50 128 --batch 32

输出:

[benchmark] batch=32 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0010s 吞吐=32680.2seq/s MRL=0.771903
[benchmark] 长度=  50 耗时=0.0008s 吞吐=39839.0seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0010s 吞吐=32752.0seq/s MRL=-0.207370


用例 092(I)— 基准长度 [16,50,128] batch=64

python3 inference.py --mode benchmark --compact --lengths 16 50 128 --batch 64

输出:

[benchmark] batch=64 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0010s 吞吐=65233.4seq/s MRL=0.771903
[benchmark] 长度=  50 耗时=0.0007s 吞吐=87466.8seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0010s 吞吐=66428.0seq/s MRL=-0.207370


用例 093(I)— 基准长度[16,50,128] batch=128

python3 inference.py --mode benchmark --compact --lengths 16 50 128 --batch 128

输出:

[benchmark] batch=128 设备=npu:0 精度=float32
[benchmark] 长度=  16 耗时=0.0010s 吞吐=124419.7seq/s MRL=0.771903
[benchmark] 长度=  50 耗时=0.0008s 吞吐=165598.7seq/s MRL=-0.207370
[benchmark] 长度= 128 耗时=0.0010s 吞吐=126114.8seq/s MRL=-0.207370


用例 094(J)— MSE 损失 自洽标签(loss≈0)

python3 inference.py --mode loss --labels self --seed 7 --compact

输出:

[loss] 序列=sequence 长度=22 标签=-0.1092 MSE_loss=0.000000 设备=npu:0


用例 095(J)— MSE 损失 随机标签 seed=7

python3 inference.py --mode loss --labels random --seed 7 --compact

输出:

[loss] 序列=sequence 长度=22 标签=-0.2936 MSE_loss=0.034004 设备=npu:0


用例 096(J)— MSE 损失:随机标签,seed=42

python3 inference.py --mode loss --labels random --seed 42 --compact

输出:

[loss] 序列=sequence 长度=22 标签=0.6734 MSE_loss=0.612416 设备=npu:0


用例 097(J)— MSE 损失 随机标签 seed=0

python3 inference.py --mode loss --labels random --seed 0 --compact

输出:

[loss] 序列=sequence 长度=22 标签=3.0820 MSE_loss=10.183639 设备=npu:0


用例 098(J)— MSE 损失 × 精度 bfloat16

python3 inference.py --mode loss --labels random --seed 7 --dtype bfloat16 --compact

输出:

[loss] 序列=sequence 长度=22 标签=-0.2936 MSE_loss=0.034115 设备=npu:0


用例 099(J)— MSE 损失 × 设备 npu:1

python3 inference.py --mode loss --labels random --seed 7 --device npu:1 --compact

输出:

[loss] 序列=sequence 长度=22 标签=-0.2936 MSE_loss=0.034004 设备=npu:1


用例 100(K)— 设备对比 microRNA 21(float32)

python3 inference.py --mode device --seq-name "microRNA 21" --sequence UAGCUUAUCAGACUGAUGUUGA --dtype float32 --compact

输出:

[device] 序列=microRNA 21 长度=22 精度=float32 npu:0:-0.109189 | npu:1:-0.109189 | cpu:-0.109167


用例 101(K)— 设备对比 microRNA 146a(float32)

python3 inference.py --mode device --seq-name "microRNA 146a" --sequence UGAGAACUGAAUUCCAUGGGUU --dtype float32 --compact

输出:

[device] 序列=microRNA 146a 长度=22 精度=float32 npu:0:-0.099806 | npu:1:-0.099806 | cpu:-0.099844


用例 102(K)— 设备对比,参考 50nt(float32)

python3 inference.py --mode device --seq-name "参考 50nt" --sequence GGGACAUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGCUAGC --dtype float32 --compact

输出:

[device] 序列=参考 50nt 长度=50 精度=float32 npu:0:1.254144 | npu:1:1.254144 | cpu:1.254153


用例 103(K)— 设备对比 microRNA 21(bfloat16)

python3 inference.py --mode device --seq-name "microRNA 21" --sequence UAGCUUAUCAGACUGAUGUUGA --dtype bfloat16 --compact

输出:

[device] 序列=microRNA 21 长度=22 精度=bfloat16 npu:0:-0.108887 | npu:1:-0.108887 | cpu:-0.111328


用例 104(L)— syn16 全A

python3 inference.py --mode predict --seq-name "syn16 全A" --sequence AAAAAAAAAAAAAAAA --compact

输出:

[predict] 名称=syn16 全A 序列=AAAAAAAAAAAAAAAA 长度=16 设备=npu:0 精度=float32 MRL=0.789875 耗时=0.001s


用例 105(L)— syn32 全 C

python3 inference.py --mode predict --seq-name "syn32 全C" --sequence CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC --compact

输出:

[predict] 名称=syn32 全C 序列=CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 长度=32 设备=npu:0 精度=float32 MRL=-0.924778 耗时=0.001s


用例 106(L)— syn48 全G

python3 inference.py --mode predict --seq-name "syn48 全G" --sequence GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG --compact

输出:

[predict] 名称=syn48 全G 序列=GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 长度=48 设备=npu:0 精度=float32 MRL=-1.796666 耗时=0.001s


用例 107(L)— syn50 全U

python3 inference.py --mode predict --seq-name "syn50 全U" --sequence UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU --compact

输出:

[predict] 名称=syn50 全U 序列=UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU 长度=50 设备=npu:0 精度=float32 MRL=0.753313 耗时=0.001s


用例 108(L)— syn64 混合(ACGU交替)

python3 inference.py --mode predict --seq-name "syn64 混合(ACGU交替)" --sequence ACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGU --compact

输出:

[predict] 名称=syn64 混合(ACGU交替) 序列=ACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGUACGU 长度=64 设备=npu:0 精度=float32 MRL=0.465604 耗时=0.001s


用例 109(L)— syn100 混合(ACGU随机 seed=9)

python3 inference.py --mode predict --seq-name "syn100 混合(ACGU随机 seed=9)" --sequence GAGCGAUGCCGAUAGCACUCCAAAGUAGACGGAAAGGACAUUCUGUCAACUACUGCCCAGGUGGAACUAGAGAAAUCAAUGAAUAACGCUAUCUUGUAAG --compact

输出:

[predict] 名称=syn100 混合(ACGU随机 seed=9) 序列=GAGCGAUGCCGAUAGCACUCCAAAGUAGACGGAAAGGACAUUCUGUCAACUACUGCCCAGGUGGAACUAGAGAAAUCAAUGAAUAACGCUAUCUUGUAAG 长度=100 设备=npu:0 精度=float32 MRL=0.641617 耗时=0.001s


用例 110(L)— syn200 长序列

python3 inference.py --mode predict --seq-name "syn200 长序列" --sequence CCAUACUACCACCGACAGAGAUAAUUGAUGGCAAGCUGCCCUCGCAGGGCACUCAUGCCGUGAUAGACUGAGUAUCGUUACAGAAACAUAAGAGGAUCAUCGGCGGUAAAAGGCCUAAGCCUCGCACCCAGUUCAAGAGUUUCGCCGAGCACCACGAGGCCAAAUCCAAAGGGAGUGUUUGGGCGUACCCUCUGCUCCUU --compact

输出:

[predict] 名称=syn200 长序列 序列=CCAUACUACCACCGACAGAGAUAAUUGAUGGCAAGCUGCCCUCGCAGGGCACUCAUGCCGUGAUAGACUGAGUAUCGUUACAGAAACAUAAGAGGAUCAUCGGCGGUAAAAGGCCUAAGCCUCGCACCCAGUUCAAGAGUUUCGCCGAGCACCACGAGGCCAAAUCCAAAGGGAGUGUUUGGGCGUACCCUCUGCUCCUU 长度=200 设备=npu:0 精度=float32 MRL=-0.868362 耗时=0.001s


用例 111(L)— 5'UTR 极短 5nt

python3 inference.py --mode predict --seq-name "5'UTR 极短 5nt" --sequence AUGGC --compact

输出:

[predict] 名称=5'UTR 极短 5nt 序列=AUGGC 长度=5 设备=npu:0 精度=float32 MRL=-1.055593 耗时=0.001s


用例 112(L)— 仅 N 1nt

python3 inference.py --mode predict --seq-name "仅 N 1nt" --sequence N --compact

输出:

[predict] 名称=仅 N 1nt 序列=N 长度=1 设备=npu:0 精度=float32 MRL=0.793978 耗时=0.001s


用例 113(L)— 空输入(映射为长度 0 → 全部填充)

python3 inference.py --mode predict --seq-name "空输入(映射为 0 长度→全填充)" --sequence  --compact

输出:

[predict] 名称=空输入(映射为 0 长度→全填充) 序列= 长度=0 设备=npu:0 精度=float32 MRL=0.793978 耗时=0.003s


用例 114(L)— poly-UC 重复

python3 inference.py --mode predict --seq-name "poly-UC 重复" --sequence UCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUC --compact

输出:

[predict] 名称=poly-UC 重复 序列=UCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUCUC 长度=50 设备=npu:0 精度=float32 MRL=0.960877 耗时=0.001s


10. 关键实现说明

  • 模型移植:Optimus 5-Prime 依赖 transformers v5(multimolecule 0.2.1 基于 transformers 5.9.0 构建),而昇腾 NPU 预装环境为 transformers 4.57.6。本项目将 modeling_optimus5prime.py / configuration_optimus5prime.py 移植为独立文件 optimus5prime_model.py:移除 @merge_with_config_defaults / @capture_outputs / @can_return_tuple 等 v5 专用装饰器、danling.NestedTensor 与 chanfig.FlatDict 依赖,并将 transformers.initialization 替换为 torch.nn.init,使其在 transformers 4.57.6 下可直接加载权重(键名 model.encoder.* / sequence_head.* 与结构一一对应,load_state_dict 零缺失)。
  • NPU 部署:通过 torch_npu 的 .to("npu:0") / .to("npu:1"),将模型精确部署到指定 Ascend 910B 卡(.npu() 仅移动到默认卡 npu:0,跨卡需使用 .to(device))。
  • one-hot 输入:RnaTokenizer(streamline 字母表 ACGUN)采用兼容编码,A/C/G/U → 通道 0–3,N/非法字符 → 通道 4(该通道卷积权重为 0,等价于全零通道);T 映射为 U,输入统一大写化,未知字符映射为 N。
  • 固定窗口:短序列右侧补零至 50 nt,长序列截断为前 50 nt;批处理内的不定长序列右侧补 N,并用 attention_mask 将补位区域置零,与单序列推理语义一致。
  • Keras Flatten 顺序:卷积输出 (B, 120, 50) 需先转置为 (B, 50, 120),再展平为 (B, 6000),与上游 checkpoint 的 dense 权重([40, 6000])元素顺序保持一致,否则结果错误。
  • 引擎选型:Optimus 5-Prime 为非自回归回归模型(无 attention、无 token 生成),vLLM-Ascend / sglang 无法托管,因此采用 torch_npu 推理引擎完成 NPU 前向。

11. 参考资料

  • Optimus 5-Prime 论文(Nature Biotechnology 2019)
  • multimolecule/optimus5prime(HuggingFace 模型卡)
  • MultiMolecule(Optimus 5-Prime 官方实现)
  • pjsample/human_5utr_modeling(原始仓库)
  • GSE114002(原始数据)
  • 昇腾 CANN / torch_npu 文档

贡献者: zzstudio | 赛道: 模型适配赛道