Genos作为人类基因组领域的基础模型,依托数百个高质量人类基因组基准数据进行训练,实现了对人类基因组序列长达百万碱基的上下文建模能力。通过单碱基级的分辨率学习,该模型具备了识别基因组中隐含的深层序列规律与功能特征的能力,为科学家构建起连接遗传信息与生命活动的新研究方法。本次发布包含12亿参数与100亿参数两个版本,均采用混合专家(MoE)架构,通过动态路由机制实现计算资源的优化配置,显著提升模型在复杂调控网络解析中的表现。| 硬件名称 | 配置信息 |
|---|---|
| 机器型号 | Atlas800T A3 |
| CPU型号 | HUAWEI Kunpeng 920 |
| 数量 | 4 |
| AI加速芯片型号 | 昇腾910A3 |
| 数量 | 8 |
| Device内存 | 64G |
| 主机内存类型 | DDR4 |
| 数量 | 24 |
| 单条容量 | 64GB |
| 内存插槽数 | 32 |
| 硬盘数量 | 2 |
| 内部存储类型 | SSD |
| 单硬盘容量 | 3.2TB |
| 软件分类 | 软件对象 | 版本 | 备注 |
|---|---|---|---|
| Ascend HDK | Ascend-A3-hdk-npu-driver*.run Ascend-A3-hdk-npu-firmware*.run | 昇腾驱动、固件 | |
| CANN | Ascend-cann-toolkit*.run Ascend-cann-kernels-A3*.run | 华为针对AI场景推出的异构计算架构 | |
| PyTorch | torch | PyTorch框架 | |
| torch_npu | torch_npu-*.whl | PyTorch Ascend Adapter插件,使昇腾NPU适配PyTorch框架 |
类型 链接 代码仓下载 https://github.com/BGI-HangzhouAI/Genos 模型权重 https://www.modelscope.cn/models/zhejianglab/Genos-10B-v2 数据集 下载公开数据集human_enhancers_cohn:katarinagresova/Genomic_Benchmarks_human_enhancers_cohn at main
export IMAGE=quay.io/ascend/vllm-ascend:v0.13.0rc1
# 创建并启动容器
docker run --rm \
--name vllm-ascend \
--shm-size=1g \
--privileged \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /root/.cache:/root/.cache \
-p 8000:8000 \
-it $IMAGE bash# 安装依赖
cd /Genos/Technical_Notes/benchmarks-code/benchmarks/
pip install -r requirements.txt
# 测试工具还需要xgboost需要单独安装
pip install xgboost修改文件:/ Genos/Technical_Notes/benchmarks-code/ config.yaml
修改内容:
# 填写模型路径,用于embedding提取,模型名称将使用模型路径最后一层文件夹的路径
model_path: "/model/mode_path"
# 该框架中或许不一定支持部分模型类的embedding,如果无法正确加载模型提取embedding,请自行提取embedding,将model_path参数删除,填写model_name和num_layers,具体使用方式见后文
# 如果模型和模型层数可以正确读取,则删除model_name和num_layers两个参数
# 模型名称
model_name: "model_name"# 数据集路径
dataset_path: "/data "
# 数据集信息路径
datasets_feature_path: "benchmarks/datasets_info.yaml"
# 测试数据集,填写需要测试的数据集,如果需要测试自定义数据集,添加自定义数据集方式详见后文
eval_datasets:
- human_enhancers_cohn修改文件: schedule.py和embedding_extract.py
修改内容:
在import torch后添加torch_npu一键迁移逻辑
添加:
import torch_npu
from torch_npu.contrib import transfer_to_npu下载数据后为train和test两个parquet格式文件,需转换为jsonl格式
先查询parquet数据的列名:
# 下载依赖
pip install pandas pyarrow
# 查询数据
import pandas as pd
df = pd.read_parquet("train-00000-of-00001-308a8a054210be5f.parquet.parquet", engine="pyarrow")
print(df.columns)
# 得到 Index(['seq', 'label'], dtype='object')之后做parquet到jsonl的类型转换:
import pandas as pd
import json
# 分别得到train.jsonl和test.jsonl
parquet_file_path = " /Genos/Technical_Notes/data/train-00000-of-00001-308a8a054210be5f.parquet"
jsonl_file_path = "/home/h00517234/genos/Genos-main/Technical_Notes/data/human_enhancers_cohn/train.jsonl"
try:
df = pd.read_parquet(parquet_file_path)
print("Parquet 文件列名:", df.columns.tolist())
with open(jsonl_file_path, 'w', encoding='utf-8') as f:
for _, row in df.iterrows():
json_line = json.dumps(
{
"seq": row['seq'],
"label": row['label']
},
ensure_ascii=False
)
f.write(json_line + '\n')
print(f"转换完成!JSONL 文件已保存至:{jsonl_file_path}")
except FileNotFoundError:
print(f"错误:未找到 Parquet 文件 {parquet_file_path}")
except KeyError as e:
print(f"错误:Parquet 文件中缺少列 {e},请检查列名是否正确")
except Exception as e:
print(f"转换失败:{str(e)}")python benchmarks.py --config config.yaml
| GPU | NPU | |
|---|---|---|
| human_enhancers_cohn | 0.8547 | 0.8629 |
python infer_trans_Genos.py
export ASCEND_DEVICE_ID=0,1
export ASCEND_RT_VISIBLE_DEVICES=0,1
python infer_vllm_Genos.pyA3 基于vllm,max_tokens=1024 (测试20次取均值)
单卡2die,tp=2, bs=8: 17.790s,output: 472.86 toks/s, 2.22s/it
单卡2die,tp=2, bs=32: 18.148s,output: 1807.08 toks/s,1.76it/s
单卡2die,tp=2, bs=64: 19.677s,output: 3326.57 toks/s,3.25it/s
单卡2die,tp=2, bs=128: 22.952s,output: 5691.71 toks/s,5.58it/s
单卡2die,tp=2, bs=256: 29.249s,output: 8984.98 toks/s,8.75it/s
A3 基于transformers bs=1,seq_num=10
1die : 29.7021s