DeepSTARR(de Almeida et al., 2022)在果蝇 Drosophila melanogaster S2 细胞的 UMI-STARR-seq 增强子活性数据上训练,输入固定 249 bp 的增强子 DNA 窗口, 输出 2 个连续回归值:
是增强子序列 → 定量活性回归的经典模型,可用于增强子预测与合成增强子设计。
| 组件 | 版本 |
|---|---|
| torch | 2.9.0 |
| torch-npu | 2.9.0.post1 |
| transformers | 5.9.0 |
| multimolecule | 0.2.1 |
| fastapi | 0.123.10 |
| CANN | 8.5.1 |
| NPU | Ascend 910(64GB HBM) |
DeepSTARR 将 249 bp DNA 序列按 A/C/G/T/N one-hot 编码(5 通道)后送入 1D 卷积栈, 逐块 MaxPool 降采样,展平后经 2 层全连接回归 2 个增强子活性分数。关键配置:
| 配置项 | 值 |
|---|---|
| 模型类型 | DeepStarrForSequencePrediction |
| 输入窗口 | 固定 249 bp(嵌入层强校验,短序列双侧补 N / 长序列中心裁剪) |
| 卷积层 | 4 层(Conv1d 256@k7、60@k3、60@k5、120@k3)+ BatchNorm + ReLU |
| 池化层 | MaxPool1d(2),每个卷积块后各一次 |
| 全连接层 | 2 层(256 → 256) |
| 输出 | 2 个连续值:developmental / housekeeping 增强子活性 |
| 词表 | A/C/G/T/N(DnaTokenizer,U 自动转 T,pad=N) |
| 参数量 | 624,514 |
| 计算量 | FLOPs 21.03M / MACs 10.26M |
输入为增强子 DNA 序列(DnaTokenizer 按 A/C/G/T/N 编码,0-4),输出为两个 log2
富集度活性分数(原始 logits,无需 softmax / 后处理),数值越大代表该增强子
在该转录程序下的活性越强。
| # | 适配点 | 说明 |
|---|---|---|
| 1 | 非 LLM,不走 vLLM-Ascend | DeepSTARR 是基因组功能预测 CNN(回归任务,非自回归生成),vLLM / vllm-ascend 无法直接服务;采用 multimolecule + torch_npu + FastAPI 方案在昇腾 NPU 上推理 |
| 2 | 依赖版本约束 | multimolecule 0.2.1 依赖 transformers.initialization,需要 transformers>=5.0(本仓库固定 5.9.0,与 config.json 的 transformers_version 一致);这会与 vllm 0.18(要求 transformers<5)冲突,但本模型不使用 vLLM,无影响 |
| 3 | 推理设备 | 通过 torch_npu 注册 npu 后端,模型 .to("npu:0") 在昇腾 910 上计算;权重为 float32(约 2.4MB),峰值 HBM 约 146MB |
| 4 | 定长输入强校验 | 模型嵌入层 _check_input_length 要求输入恰好 input_length=249 bp;脚本自动将短序列双侧补 N、长序列中心裁剪到 249 bp(N 即 pad_token=4) |
| 5 | 输出语义 | 两个 logits 即为 developmental / housekeeping 增强子活性(log2 enrichment over input),直接输出,无需 softmax / 归一化 |
模型验证:在昇腾 NPU 上对 249 bp 确定性合成增强子 DNA(seed=42)推理, 输出 developmental = 0.099269、housekeeping = -0.228793;与 CPU 推理结果 余弦相似度 1.0(max abs diff < 0.001,纯浮点噪声),行为符合预期。
pip install -r requirements.txt若 vLLM-Ascend 环境已存在(transformers<5),建议使用独立 venv 安装本仓库依赖, 避免与 multimolecule 所需的 transformers 5.9.0 冲突。
# 方式一:GitCode 镜像
git clone https://gitcode.com/hf_mirrors/multimolecule/deepstarr.git
# (仓库权重为 Git LFS,需 git-lfs pull 或经 LFS batch API 下载 model.safetensors,2.4MB)
# 方式二:HuggingFace 镜像(hf-mirror.com)
git clone https://hf-mirror.com/multimolecule/deepstarr
# 方式三:multimolecule 直接加载(会自动下载)
python -c "from multimolecule import DeepStarrForSequencePrediction, DnaTokenizer; \
tok = DnaTokenizer.from_pretrained('multimolecule/deepstarr'); \
m = DeepStarrForSequencePrediction.from_pretrained('multimolecule/deepstarr')"# 缺省:自动生成 249 bp 确定性合成增强子 DNA(seed=42)做演示
python3 inference.py \
--model-path ./deepstarr \
--device npu:0
# 传入自定义增强子序列(短序列自动双侧补 N,长序列自动中心裁剪到 249 bp)
python3 inference.py \
--model-path ./deepstarr --device npu:0 \
--sequence "ACTCCCCTGCCCTCAACAAGAT..."
# 从 FASTA / 纯文本文件读取
python3 inference.py \
--model-path ./deepstarr --device npu:0 --sequence-file ./sequence.fa# 启动服务(默认 0.0.0.0:8000,此处演示用 127.0.0.1:8016)
export ASCEND_RT_VISIBLE_DEVICES=0
python3 inference.py --serve \
--model-path ./deepstarr \
--device npu:0 \
--host 127.0.0.1 --port 8016调用示例:
# 健康检查
curl http://127.0.0.1:8016/health
# 模型信息
curl http://127.0.0.1:8016/v1/models
# 增强子活性预测(sequence 缺省时按 seed 生成演示序列)
curl -X POST http://127.0.0.1:8016/v1/predict \
-H "Content-Type: application/json" \
-d '{"seed": 42}'
# 传入自定义增强子序列
curl -X POST http://127.0.0.1:8016/v1/predict \
-H "Content-Type: application/json" \
-d '{"sequence": "ACTCCCCTGCCCTCAACAAGAT..."}'
命令行推理输出(演示序列,昇腾 NPU):
[demo] 未提供序列,自动生成 249 bp 确定性合成增强子 DNA(seed=42)
模型路径: /opt/atomgit/models/deepstarr
设备: npu:0
原始序列: 249 bp(模型要求定长 249 bp,短序列补 N / 长序列中心裁剪)
正在加载模型(首次加载会编译算子,可能较慢)...
模型加载完成,耗时 7.3s,参数量 0.625M
推理耗时: 179.75 ms
输出: 增强子活性预测(log2 enrichment over input)
developmental = 0.099269(发育型增强子活性)
housekeeping = -0.228793(管家型增强子活性)
input_bp = 249 bp | raw_bp = 249 bp
SUCCESS服务化推理返回(POST /v1/predict,演示序列):
{
"developmental": 0.099269,
"housekeeping": -0.228793,
"input_bp": 249,
"raw_bp": 249,
"channels": ["developmental", "housekeeping"],
"output": "enhancer activity (log2 enrichment over input)",
"inference_ms": 184.33
}真实增强子示例(人源 TP53 区域 184 bp 序列,自动补 N 到 249 bp):
{
"developmental": 0.596969,
"housekeeping": -0.285269,
"input_bp": 249,
"raw_bp": 184,
"channels": ["developmental", "housekeeping"],
"output": "enhancer activity (log2 enrichment over input)",
"inference_ms": 3.95
}首次推理含算子编译约 180 ms;预热后单次推理约 1.5 ~ 4 ms。

服务健康检查返回:
{
"status": "ok",
"model": "multimolecule/deepstarr",
"device": "npu:0",
"npu": {"available": true, "device_count": 2, "name": "Ascend910_9362"}
}模型信息(GET /v1/models):
{
"object": "list",
"data": [
{
"id": "deepstarr",
"task": "regulatory-activity",
"library_name": "multimolecule",
"params": 624514,
"sequence_length": 249,
"num_labels": 2,
"pipeline_tag": "tabular-regression"
}
]
}峰值 HBM 占用约 146MB(npu-smi 实测,进程内存)。

# 1. 环境准备(依赖 + 权重)
pip install -r requirements.txt
git clone https://gitcode.com/hf_mirrors/multimolecule/deepstarr.git
# (下载 LFS 权重 model.safetensors,2.4MB,sha256 23e37aff...7f867531)
# 2. 命令行推理
python3 inference.py --model-path ./deepstarr --device npu:0
# 3. 服务化推理
python3 inference.py --serve --model-path ./deepstarr \
--device npu:0 --host 127.0.0.1 --port 8016
curl http://127.0.0.1:8016/health贡献者: liuhongwei-2026 | 赛道: 模型适配赛道