Gemma 是谷歌出品的一系列轻量级、最先进的开源模型家族, 它们源自用于创建Gemini模型的相同研究和技术。 这些模型为文本到文本、仅解码器的大型语言模型,提供英语版本, 公开了预训练变体和指令微调变体的权重。 Gemma模型非常适合多种文本生成任务,包括 问答、摘要和推理。它们相对较小的体积 使得在资源有限的环境(如笔记本电脑、台式机或您自己的云基础设施)中部署成为可能, 从而普及了最先进AI模型的访问并促进每个人的创新。
昇腾基于vLLM-Ascend推理框架支持Gemma,兼容当前vLLM-Ascend框架内主流的分布式并行能力,Gemma系列模型一经发布即实现低代码无缝使能,欢迎广大开发者下载体验,以下为手把手教程:
表1 硬件设备
| 设备型号 | NPU配置 |
|---|---|
| Atlas 800I A2 | 8*64G |
| Atlas 800T A2 | 8*64G |
表2 软件版本配套表
| 配套 | 版本 | 环境准备指导 |
|---|---|---|
| cann | 8.3.RC2 | - |
| Python | 3.11.13 | - |
| torch | 2.7.1+cpu | - |
| torch_npu | 2.7.1 | - |
| transformers | 4.57.1 | - |
| vllm | 0.11.0+empty | - |
| vllm_ascend | 0.11.0rc2 | - |
点击下载链接,打开网页后,选择 v0.11.0rc2 版本下载
1、执行以下命令下载
docker pull quay.io/ascend/vllm-ascend:v0.11.0rc2-openeuler2、执行以下命令查看镜像是否下载成功
docker images | grep v0.11.0rc2-openeulergemma2-9b 权重及配置文件说明
| 模型 | 权重 |
|---|---|
| gemma2-9b | huggingface下载链接 |
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
docker exec -it -u root vllm-ascend-wlh2 bash# 通过如下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分钟,服务启动成功
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
}'1、获取bus-id
npu-smi info2、根据bud-id获取numa node
cat /sys/bus/pci/devices/{bus-id}/numa_node3、查看对应numa node的cpu核
lscpu4、启动服务时,进行绑定上一步查询的cpu核
numactl -C 144-167 vllm serve ...
#若环境没有numactl,使用yum install numactl进行安装参考 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