Ascend-SACT/Genos-10B-V2
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Genos-10B-V2迁移适配与推理性能/精度测试指导流程

1 模型概述

Genos作为人类基因组领域的基础模型,依托数百个高质量人类基因组基准数据进行训练,实现了对人类基因组序列长达百万碱基的上下文建模能力。通过单碱基级的分辨率学习,该模型具备了识别基因组中隐含的深层序列规律与功能特征的能力,为科学家构建起连接遗传信息与生命活动的新研究方法。本次发布包含12亿参数与100亿参数两个版本,均采用混合专家(MoE)架构,通过动态路由机制实现计算资源的优化配置,显著提升模型在复杂调控网络解析中的表现。

2 硬件信息

2.1 NPU测试硬件环境

硬件名称配置信息
机器型号Atlas800T A3
CPU型号HUAWEI Kunpeng 920
数量4
AI加速芯片型号昇腾910A3
数量8
Device内存64G
主机内存类型DDR4
数量24
单条容量64GB
内存插槽数32
硬盘数量2
内部存储类型SSD
单硬盘容量3.2TB

3 软件信息

3.1 测试软件环境

软件分类软件对象版本备注
Ascend HDKAscend-A3-hdk-npu-driver*.run
Ascend-A3-hdk-npu-firmware*.run
昇腾驱动、固件
CANNAscend-cann-toolkit*.run
Ascend-cann-kernels-A3*.run
华为针对AI场景推出的异构计算架构
PyTorchtorchPyTorch框架
torch_nputorch_npu-*.whlPyTorch Ascend Adapter插件,使昇腾NPU适配PyTorch框架

4 NPU环境搭建与代码准备

4.1 准备推理资源

类型 链接 代码仓下载 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

4.2 配置环境

1. 使用vllm-asecnd镜像

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

2. 安装依赖

# 安装依赖
cd /Genos/Technical_Notes/benchmarks-code/benchmarks/
pip install -r requirements.txt
# 测试工具还需要xgboost需要单独安装
pip install xgboost

5 精度测试

5.1 启动脚本修改

修改文件:/ Genos/Technical_Notes/benchmarks-code/ config.yaml

修改内容:

(1). 修改模型路径和模型名称

# 填写模型路径,用于embedding提取,模型名称将使用模型路径最后一层文件夹的路径
model_path: "/model/mode_path" 
# 该框架中或许不一定支持部分模型类的embedding,如果无法正确加载模型提取embedding,请自行提取embedding,将model_path参数删除,填写model_name和num_layers,具体使用方式见后文
# 如果模型和模型层数可以正确读取,则删除model_name和num_layers两个参数
# 模型名称
model_name: "model_name"
(2). 修改数据路径
# 数据集路径
dataset_path: "/data "
# 数据集信息路径
datasets_feature_path: "benchmarks/datasets_info.yaml"
# 测试数据集,填写需要测试的数据集,如果需要测试自定义数据集,添加自定义数据集方式详见后文
eval_datasets:
  - human_enhancers_cohn

5.2 测评代码修改

修改文件: schedule.py和embedding_extract.py

修改内容:

在import torch后添加torch_npu一键迁移逻辑

添加:

import torch_npu
from torch_npu.contrib import transfer_to_npu

5.3 数据处理

下载数据后为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)}")

5.4 执行脚本

python benchmarks.py --config config.yaml

5.5 精度对比

GPUNPU
human_enhancers_cohn0.85470.8629

6 性能测试

6.1 代码执行

(1)使用Transformers进行推理

python infer_trans_Genos.py

(2)使用vllm进行推理

export ASCEND_DEVICE_ID=0,1
export ASCEND_RT_VISIBLE_DEVICES=0,1
python infer_vllm_Genos.py

6.2 性能概况

A3 基于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