Ascend-SACT/Gemma-2-9b
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

引言

Gemma 是谷歌出品的一系列轻量级、最先进的开源模型家族, 它们源自用于创建Gemini模型的相同研究和技术。 这些模型为文本到文本、仅解码器的大型语言模型,提供英语版本, 公开了预训练变体和指令微调变体的权重。 Gemma模型非常适合多种文本生成任务,包括 问答、摘要和推理。它们相对较小的体积 使得在资源有限的环境(如笔记本电脑、台式机或您自己的云基础设施)中部署成为可能, 从而普及了最先进AI模型的访问并促进每个人的创新。

昇腾基于vLLM-Ascend推理框架支持Gemma,兼容当前vLLM-Ascend框架内主流的分布式并行能力,Gemma系列模型一经发布即实现低代码无缝使能,欢迎广大开发者下载体验,以下为手把手教程:

一、准备运行环境

表1 硬件设备

设备型号NPU配置
Atlas 800I A28*64G
Atlas 800T A28*64G

表2 软件版本配套表

配套版本环境准备指导
cann8.3.RC2-
Python3.11.13-
torch2.7.1+cpu-
torch_npu2.7.1-
transformers4.57.1-
vllm0.11.0+empty-
vllm_ascend0.11.0rc2-

1.1 获取并安装vLLM Ascend镜像

1.1.1 软件包下载

点击下载链接,打开网页后,选择 v0.11.0rc2 版本下载

1、执行以下命令下载

docker pull quay.io/ascend/vllm-ascend:v0.11.0rc2-openeuler

2、执行以下命令查看镜像是否下载成功

docker images | grep v0.11.0rc2-openeuler

二、下载权重

gemma2-9b 权重及配置文件说明

模型权重
gemma2-9bhuggingface下载链接

三、运行指导

3.1 单机单卡部署

3.1.1 启动容器服务样例命令

docker run -itd -u root \
--net=host \
--privileged=true \
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-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:/root \
-p 8001:8001 \
--shm-size 1024g \
--name vllm-ascend-wlh2 \
quay.io/ascend/vllm-ascend: v0.11.0rc2-openeuler

3.1.2 进入容器

docker exec -it -u root vllm-ascend-wlh2 bash

3.1.3 启动推理服务

  • gemma2-9b(单机单卡)
# 通过如下ASCEND_RT_VISIBLE_DEVICES环境变量指定使用的NPU卡设备
export ASCEND_RT_VISIBLE_DEVICES=1

# 如下/disk1/xxx/gemma2-9b 为容器内权重文件的路径
vllm serve /disk1/xxx/gemma-2-9b --port 8001

启动推理等待大约3~10分钟,服务启动成功

3.2 推理服务验证

3.2.1 命令行方式

1、登录服务器,修改如下命令中{IP地址:端口号}为推理服务所在的IP:端口,通过curl命令进行调用:

curl http://localhost:8001/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/disk1/xxx/gemma-2-9b",
"prompt": "西安有什么好玩的地方",
"max_tokens": 100
}'

3.3 基础性能优化

3.3.1 绑核

1、获取bus-id

npu-smi info

2、根据bud-id获取numa node

cat /sys/bus/pci/devices/{bus-id}/numa_node

3、查看对应numa node的cpu核

lscpu

4、启动服务时,进行绑定上一步查询的cpu核

numactl -C 144-167 vllm serve ...
#若环境没有numactl,使用yum install numactl进行安装

3.4 性能测试

参考 https://gitee.com/aisbench/benchmark/blob/master/README.md 安装ais_bench

1、修改ais_bench/datasets/synthetic/synthetic_config.py (请求总数,输入、输出大小)

synthetic_config = {
    "Type": "string",
    "RequestCount": 200,
    "StringConfig": {
        "Input": {
            "Method": "uniform",
            "Params": {"MinValue": 2000, "MaxValue": 2001}  # 轾S佅¥轕¿度50-500
        },
        "Output": {
            "Method": "uniform",
            "Params": {"MinValue": 1000, "MaxValue": 1001}  # 轾S佇º轕¿度20-200
        }
    }
}

2、修改ais_bench/benchmark/configs/models/vllm_api/vllm_api_stream_chat.py(模型名称、并发数)

from ais_bench.benchmark.models import VLLMCustomAPIChatStream
from ais_bench.benchmark.utils.model_postprocessors import extract_non_reasoning_content

models = [
    dict(
        attr="service",
        type=VLLMCustomAPIChatStream,
        abbr='vllm-api-stream-chat',
        path="/disk1/xxx/gemma-2-9b",
        model="/disk1/xxx/gemma-2-9b",
        request_rate = 1,
        retry = 2,
        host_ip = "localhost",
        host_port = 8001,
        max_out_len = 512,
        batch_size=4,
        trust_remote_code=False,
        generation_kwargs = dict(
            temperature = 0.5,
            top_k = 10,
            top_p = 0.95,
            seed = None,
            ignore_eos = True,
            repetition_penalty = 1.03,
        ),
        pred_postprocessor=dict(type=extract_non_reasoning_content)
    )
]

3、执行测试命令

ais_bench --models vllm_api_stream_chat --datasets synthetic_gen  --debug -m perf