w
gcw_uQ09W7jl/openspliceai-mane.400
模型介绍
文件和版本
Pull Requests
讨论
分析

multimolecule/openspliceai-mane.400 on Ascend NPU

模型与任务

  • 模型:multimolecule/openspliceai-mane.400
  • Revision:eb24f956d1e6182eaa6e1110820cb30542f1ad66
  • 适配路线:splicing
  • 设备:npu:0

环境依赖

{
  "torch": "2.9.0+cpu",
  "torch_npu": "2.9.0.post1+gitee7ba04",
  "torch_npu_available": true,
  "device_name": "Ascend910_9362",
  "device_count": 2,
  "transformers": "5.9.0",
  "multimolecule": "0.1.dev1+gf46a10b1f",
  "cann": "8.5.1",
  "dtype": "float32"
}

安装:pip install -r requirements.txt

NPU 推理

默认执行:python inference.py

真实输入

{
  "alphabet": "ACGU/N (A0 C1 G2 U3 N4, pad N, T->U)",
  "strand": "5'->3' retained, replace_T_with_U true",
  "context_window": 400,
  "sequence_source": "model card traceable real RNA",
  "num_sequences": 2,
  "sequences": [
    {
      "name": "interleukin_10_signal",
      "length": 54,
      "sha256": "d47b009f29fb5202eeaa908b2b4a78329ecf843244a82b0f32fdcf6858d4b342",
      "preview": "AUGCACAGCUCAGCACUGCUCUGUUGCCUGG",
      "type": "mRNA signal peptide"
    },
    {
      "name": "insulin_transcript",
      "length": 333,
      "sha256": "f94af5b8cf66600fae963521f441dcb6c933e2d93165ba93bcafa3941ca946fc",
      "preview": "AUGGCCCUGUGGAUGCGCCUCCUGCCCCUGCUGGCGCUGCUGGCCCUCUGGGGA",
      "type": "mRNA insulin"
    }
  ],
  "tokenizer": "RnaTokenizer vocab 5 (A0 C1 G2 U3 N4), nmers=1, pad_token N, replace_T_with_U true",
  "input_ids_shape_short": [
    1,
    54
  ],
  "input_ids_shape_perf": [
    1,
    333
  ],
  "attention_mask_sum_short": 54,
  "padding": "no padding required, variable length",
  "dtype": "float32"
}

真实推理结果

{
  "task": "splice-site per-nucleotide 3-way classification",
  "output_channels": [
    "no_splice",
    "acceptor",
    "donor"
  ],
  "output_shape_short": [
    1,
    54,
    3
  ],
  "output_shape_perf": [
    1,
    333,
    3
  ],
  "dtype": "float32",
  "probabilities": "softmax over 3 channels",
  "cpu_logits_sample_pos0": [
    0.7856321334838867,
    -18.640565872192383,
    -20.786277770996094
  ],
  "cpu_logits_sample_pos_last": [
    2.473637104034424,
    -18.163305282592773,
    -15.241103172302246
  ],
  "npu_logits_sample_pos0": [
    0.7847151756286621,
    -18.64336395263672,
    -20.786109924316406
  ],
  "npu_logits_sample_pos_last": [
    2.4733691215515137,
    -18.164613723754883,
    -15.240544319152832
  ],
  "cpu_probs_sample_pos0": [
    1.0,
    3.658557012897745e-09,
    4.279944731955254e-10
  ],
  "npu_probs_sample_pos0": [
    1.0,
    3.6516758505911184e-09,
    4.284592125536335e-10
  ],
  "cpu_donor_max": 0.091018,
  "cpu_donor_argmax": 44,
  "cpu_acceptor_max": 3.655925183920772e-06,
  "npu_donor_max": 0.091121,
  "npu_donor_argmax": 44,
  "biological_interpretation": "per-nucleotide splice donor/acceptor probabilities, max donor ~0.091 at central position 44",
  "device_proof": "first_param:npu:0, input_ids:npu:0, logits:npu:0"
}

CPU-NPU 一致性

{
  "atol": 0.01,
  "rtol": 0.001,
  "max_abs_diff_logits": 0.0027980804443359375,
  "mean_abs_diff_logits": 0.0007469453561453172,
  "max_abs_diff_probs": 0.000104,
  "mean_abs_diff_probs": 1e-06,
  "passed": true,
  "shape": [
    1,
    54,
    3
  ],
  "elements": 162,
  "finite_cpu": true,
  "finite_npu": true,
  "compared_via": "compare_outputs.py atol 0.01 rtol 0.001"
}

性能

{
  "first_run_ms": 212.87,
  "avg_ms": 1.94,
  "min_ms": 1.85,
  "max_ms": 2.1,
  "p50_ms": 1.94,
  "p90_ms": 2.05,
  "throughput_seq_per_s": 515.25,
  "throughput_bases_per_s": 171579.5,
  "batch_size": 1,
  "sequence_length_perf": 333,
  "sequence_length_short": 54,
  "dtype": "float32",
  "device": "npu:0",
  "warmup": 3,
  "stable_runs": 10,
  "peak_memory_mb": 1.54,
  "synchronize": "torch.npu.synchronize() before/after each timing"
}

自验证截图

Agent workflow

NPU device call

Model result

三张图片均由 xterm.js 根据本次真实日志生成。

已知限制

  • 仅对本次记录的模型 revision、输入契约、dtype 与 Ascend 环境完成验证。
  • 输入为单条 RNA 序列可变长度,上下文窗口 400;长于窗口序列仍按卷积感受野处理,非截断。
  • CPU-NPU 容差基于 float32 实测制定。

标签

#NPU #Ascend #Ascend910