| 组件 | 版本 |
|---|---|
| torch | 2.9.0 |
| torch-npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| multimolecule | 0.2.1 |
| CANN | 8.5.1 |
| NPU | Ascend 910(64GB HBM) |
Borzoi 是 Enformer 的继任者,将输入窗口扩展到 512 kb、输出 bin 细化到 32 bp,并引入 U-Net 式上采样尾以提供更高分辨率的覆盖度预测:
| 组件 | 配置 | 说明 |
|---|---|---|
| One-hot 嵌入 | vocab=5(A/C/G/T/N) | F.one_hot 生成 (batch, 5, 524288) 输入,_dtype_reference 缓冲跟踪当前 dtype |
| 卷积 stem | Conv1d(5→512, k=15) + 池化 | 预激活残差 + attention-pool 下采样 |
| 卷积塔 | 608→736→896→1056→1280,k=5 | 宽度递增的残差下采样塔(5 级) |
| U-Net bottleneck | 池化 + 投影到 hidden_size=1536 | 进入 Transformer 主干前的降采样瓶颈 |
| Transformer 主干 | 8 层 × hidden=1536,8 头 | Transformer-XL 风格相对位置编码(central-mask 基,32 维) |
| U-Net 上采样尾 | 2 段 depthwise-separable 卷积 | 跳跃连接上采样,unet_kernel_size=3 |
| 中心裁剪 | target_length=6144 | 只保留窗口中心的 6144 个 bin(32 bp/bin) |
| 回归头 | Conv1d(→1920) + 逐 track 投影 | softplus 输出非负覆盖度,(batch, 6144, 7611) |
Borzoi 是判别式(discriminative)卷积 + Transformer 编码器模型(调控覆盖度回归),不是自回归文本生成模型。vLLM-Ascend 面向自回归文本生成架构(Qwen/Llama 等),无法加载此类模型;本适配通过
multimolecule+torch_npu直接在昇腾 NPU 上运行,并用 FastAPI 提供 OpenAI 兼容的服务化推理。
(batch, 6144, 7611) 覆盖度张量 —— 6144 个 bin(每 bin 32 bp)× 7611 条人类调控 track,经 softplus 保证非负| # | 要点 | 说明 |
|---|---|---|
| 1 | 服务化方案 | 模型为判别式回归模型,vLLM-Ascend 不支持;采用 multimolecule 加载 + torch_npu 映射到 NPU AICore + FastAPI OpenAI 兼容服务(/v1/models、/v1/predict、/v1/chat/completions、/v1/health) |
| 2 | 全标准算子 | F.one_hot / Conv1d / BatchNorm1d / ReLU / MaxPool1d / Linear / Softplus / Transformer-XL 相对注意力均为标准 PyTorch 算子,无 CUDA-only 依赖,torch_npu 直接映射到昇腾 NPU,无需源码改动 |
| 3 | fp32 精度 | 权重以 config 原生 fp32 加载(dtype: float32),避免 bf16/fp16 精度损失;186M 参数 fp32 权重约 743 MB,Ascend 910 64GB HBM 富余 |
| 4 | 本地加载 | from_pretrained(local_files_only=True) 加载权重与 DnaTokenizer,离线不联网 |
| 5 | 定长输入 | 模型要求固定 524288 bp 窗口;脚本 normalize_sequence 自动对短序列补 'N'(原生填充,覆盖度趋近背景)、对长序列保留 5' 端 |
| 6 | 轻量输出 | 输出张量 (1, 6144, 7611) 约 46.7M 元素(fp32 约 187 MB),脚本只搬运标量统计与 top-k track 回 CPU,避免冗余 H2D 传输 |
| 7 | 精度评测 | CPU fp32 参考 vs NPU fp32 输出余弦相似度 ≈ 1.0,--benchmark 一键验证(含延迟统计) |
# 配置华为镜像源(可选,加速下载)
export PIP_INDEX_URL=https://repo.huaweicloud.com/repository/pypi/simple/
pip install -r requirements.txt注意:
multimolecule顶层会 importdatasets/danling/chanfig/matplotlib/torchmetrics,requirements.txt 已一并列出,请勿只装multimolecule本体。
# 方式一:GitCode 镜像(推荐,git-lfs 拉取真实权重)
git clone https://gitcode.com/hf_mirrors/multimolecule/borzoi-human.git
cd borzoi-human && git lfs pull
# 方式二:Hugging Face
git clone https://huggingface.co/multimolecule/borzoi-human
cd borzoi-human && git lfs pull权重文件为 Git LFS 管理(model.safetensors,约 743 MB),克隆后需 git lfs pull 或按 LFS 指示下载。
python3 inference.py \
--model-path ./borzoi-human \
--device npu:0 \
--seq "GTTTCTTCTGCTTGGGCGCGCACGGTTCCACTGAGGTCCTCAGGTCCTGAGTCAACCTGGGGTGAGGTGGTGGGGTGCAGGGGTGTGGTGGAGGGATGGGGCTGAGGACCTGGTCCTCTGACTGCTCTTTTCACCCATCTACAGTCCCCCTTGCCGTCCCAAAGCATGGATGATTTGATGCTGTCCCCGGACGATATTGAACAATGGTTCACTGAAGACCCAGGTCCAGATGAAGCTCCCAGAATGCCAGAGGCTGCTCCCCGCGTGGCCCC"python3 inference.py --benchmark \
--model-path ./borzoi-human \
--device npu:0 --n-runs 10 --output report.jsonexport ASCEND_RT_VISIBLE_DEVICES=0
python3 inference.py --serve \
--model-path ./borzoi-human \
--port 8000 --device npu:0验证服务:
# 列出模型(OpenAI 兼容)
curl http://127.0.0.1:8000/v1/models
# 覆盖度预测
curl http://127.0.0.1:8000/v1/predict -H 'Content-Type: application/json' \
-d '{"sequence": "GTTTCTTCTGCTTGGGCGCGCACGGTTCCACTGAGGTCCTCA..."}'
# OpenAI 兼容对话包装
curl http://127.0.0.1:8000/v1/chat/completions -H 'Content-Type: application/json' \
-d '{"messages":[{"role":"user","content":"GTTTCTTCTGCTTGGGCGCGCACGGTTCCACTGAGGTCCTCA..."}]}'
# 健康检查(含 NPU 可用性)
curl http://127.0.0.1:8000/v1/health

# 1. 环境准备(依赖 + 权重)
pip install -r requirements.txt
git clone https://gitcode.com/hf_mirrors/multimolecule/borzoi-human.git
cd borzoi-human && git lfs pull
# 2. 单次推理(验证 NPU 输出)
python3 inference.py --model-path ./borzoi-human --device npu:0
# 3. 精度/性能基准
python3 inference.py --benchmark --model-path ./borzoi-human --device npu:0
# 4. 服务化推理
python3 inference.py --serve --model-path ./borzoi-human --port 8000 --device npu:0
curl http://127.0.0.1:8000/v1/health
curl http://127.0.0.1:8000/v1/predict -H 'Content-Type: application/json' -d '{"sequence":"ACGT..."}'贡献者: liuhongwei-2026 | 赛道: 模型适配赛道