当前位置: 首页 > news >正文

基于昇腾 NPU 的 Gemma 2 推理实测:性能评测、脚本实现与可视化分析

基于昇腾 NPU 的 Gemma 2 推理实测:性能评测、脚本实现与可视化分析

前言

文章基于 Gemma 2 模型,在昇腾 NPU 环境下进行了系统化测试与多维度性能评估,涵盖推理速度、内存占用、语言理解、逻辑推理、代码生成等关键指标,通过自编测试脚本与可视化分析,为模型部署与硬件适配提供工程级的性能参考与实测数据支持。

环境准备与在这里插入图片描述

硬件配置检查

1、GitCode控制台激活NoteBook

2、NoteBook资源确认

  • Notebook 计算类型:NPU
  • NPU 配置:NPU basic・1 * NPU 910B・32v CPU・64GB
  • 容器镜像:euler2.9-py38-torch2.1.0-cann8.0-openmind0.6-notebook
  • 存储大小:[限时免费] 50G

在这里插入图片描述

3、等待实例启动后,进入终端,使用命令查询 NPU 设备的详细信息

npu-smi info

在这里插入图片描述

  • npu-smi 工具版本:23.0.6
  • NPU 设备(芯片 910B3)信息
  • 健康状态:OK
  • 功耗:93.7W
  • 温度:50℃
  • 总线 ID:0000:01:00.0
  • AI 核心使用率:0%
  • 内存使用:0 MB(总内存 0 MB)
  • HBM(高带宽内存)使用:3346 MB / 65536 MB
  • 大页内存使用:0 page / 0 page
  • 进程信息:NPU 1 无运行进程

在这里插入图片描述

4、pip show 直接查询 transformers 与 accelerate 模型工具库和硬件加速配置工具安装信息

  • 两个库均已正常安装,版本匹配度较高,位于同一 Python 环境中,依赖项齐全,可直接用于基于 PyTorch 的模型训练 / 推理(尤其结合昇腾 NPU 时,accelerate可辅助优化分布式训练配置)
# 检查 transformers
pip show transformers# 检查 accelerate
pip show accelerate

Gemma 2 模型下载与环境适配

1、国内使用 Hugging Face 镜像加速

# Hugging Face 镜像加速配置
export HF_ENDPOINT='https://hf-mirror.com'

2、通过国内镜像快速搭建适配昇腾 NPU 的环境

# 安装 ModelScope 库
pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade
# 安装 PyTorch 核心框架
pip install torch torchvision torchaudio
# 安装昇腾 NPU 的 PyTorch 适配库
pip install torch-npu
# 安装 transformers 库
pip install transformers accelerate -i 

在这里插入图片描述

3、Gemma 2 模型下载(终端直接运行命令)

在这里插入图片描述

  • Gemma 2模型下载需要auth_token,需要去huggingface获取,将下面代码的auth_token内容替换成自己的就行

在这里插入图片描述

from transformers import AutoModelForCausalLM# 模型核心配置
model_name = 'google/gemma-7b-it'
auth_token = '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'# 仅执行模型下载(自动缓存到本地)
try:print(f'开始下载模型:{model_name}(首次下载约14GB)')AutoModelForCausalLM.from_pretrained(model_name,torch_dtype='auto',low_cpu_mem_usage=True,trust_remote_code=True,token=auth_token# 移除 timeout 和 max_retries(旧版本不支持))print('✅ 模型下载完成(已缓存至本地)')
except Exception as e:print(f'❌ 下载失败:{str(e)}')

4、google/gemma-7b-it模型的分片权重文件下载进度,核心是下载模型运行必需的 4 个safetensors格式分片文件

在这里插入图片描述

推理测试脚本编写与评估逻辑

昇腾 NPU 上对 Gemma 7B 模型进行多维度推理能力测试的工具:通过加载预训练模型和分词器,对基础问答、逻辑推理等 5 个维度的测试题逐一推理,记录每道题的耗时、生成速度、显存占用等指标,最终汇总出成功率、平均性能及显存使用情况的详细报告

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Gemma 7B 昇腾NPU推理测试脚本(详细报告版)
特点:
✅ 每个能力维度5题测试
✅ 规整表格化输出
✅ 输出详细数据指标(耗时、显存、tokens)
✅ 增加维度级统计与最终汇总报告
"""import torch
import torch_npu
import time
import os
from transformers import AutoModelForCausalLM, AutoTokenizer
from statistics import meandef print_separator(title, char="=", length=90):print(f"\n{char * length}")print(f"{title.center(length)}")print(f"{char * length}")def test_model_capability(model, tokenizer, device, prompt, test_name, gen_config):"""统一的推理测试函数"""try:# Tokenizeinputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512).to(device)input_tokens = len(inputs["input_ids"][0])# Inferencestart_time = time.time()with torch.no_grad():outputs = model.generate(**inputs, **gen_config)end_time = time.time()# 统计信息gen_time = end_time - start_timetotal_tokens = len(outputs[0])gen_tokens = total_tokens - input_tokensspeed = gen_tokens / gen_time if gen_time > 0 else 0mem_used = torch.npu.memory_allocated() / 1e9# 输出文本generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)preview = generated_text[:200].replace("\n", " ") + ("..." if len(generated_text) > 200 else "")# 控制台打印结果print(f"【测试】{test_name}")print(f"  ➤ 输入Token: {input_tokens:>4} | 生成Token: {gen_tokens:>4} | 总Token: {total_tokens:>4}")print(f"  ➤ 耗时: {gen_time:>6.2f}s | 速度: {speed:>7.2f} tok/s | 显存: {mem_used:.2f} GB")print(f"  ➤ 生成结果预览: {preview}\n")return {"success": True, "time": gen_time, "speed": speed, "tokens": gen_tokens}except Exception as e:print(f"【测试】{test_name} ❌ 失败:{str(e)}\n")return {"success": False, "time": 0, "speed": 0, "tokens": 0}def run_dimension(model, tokenizer, device, dimension_name, prompts, gen_config):"""执行一个维度下的所有测试题"""print_separator(f"{dimension_name}(共{len(prompts)}题)", "-")results = []for idx, prompt in enumerate(prompts, 1):test_name = f"{dimension_name}-{idx}"result = test_model_capability(model, tokenizer, device, prompt, test_name, gen_config)results.append(result)# 汇总统计success_rate = sum(r["success"] for r in results) / len(results) * 100avg_speed = mean(r["speed"] for r in results if r["speed"] > 0)avg_time = mean(r["time"] for r in results if r["time"] > 0)print(f"✅ [{dimension_name}] 成功率: {success_rate:.1f}% | 平均耗时: {avg_time:.2f}s | 平均速度: {avg_speed:.2f} tok/s\n")return resultsdef main():print("=" * 90)print("Gemma 7B 昇腾NPU推理能力详细测试报告".center(90))print("=" * 90)# 配置:使用已找到的模型缓存路径,避免重复下载auth_token = "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"  # 你的Tokenmodel_name = "google/gemma-7b-it"device = "npu:0"# 关键修改:指向已下载模型的根缓存目录(从查找脚本获取)cache_dir = "/home/service/.cache/huggingface/hub"  # 模型存放的根目录os.environ["TRANSFORMERS_CACHE"] = cache_dir  # 同步环境变量os.environ["ASCEND_SKIP_CPU_FALLBACK_WARNING"] = "1"os.environ["PYTHONWARNINGS"] = "ignore::UserWarning:torch_npu.utils.path_manager"  # 屏蔽无关警告print_separator("1️⃣ 环境与模型加载")# 加载Tokenizer:指定缓存目录+Token验证tokenizer = AutoTokenizer.from_pretrained(model_name,trust_remote_code=True,cache_dir=cache_dir,token=auth_token  # 必须带Token,否则可能权限失败)# 加载模型:使用已下载的缓存,不重复下载model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype=torch.float16,  # 适配昇腾NPU的精度low_cpu_mem_usage=True,trust_remote_code=True,cache_dir=cache_dir,token=auth_token  # 必须带Token).to(device).eval()print(f"✅ 模型已加载至 {device}, 当前显存占用: {torch.npu.memory_allocated()/1e9:.2f} GB\n")# 生成参数GEN_CFG = {"max_new_tokens": 80,"min_new_tokens": 15,"do_sample": False,"temperature": 0.0,"top_p": 1.0,"pad_token_id": tokenizer.eos_token_id}# 五维度测试数据(每维度5条)TEST_DIMENSIONS = {"基础问答能力": ["什么是人工智能?请用三句话解释。","请简单说明神经网络的工作原理。","机器学习与深度学习的区别是什么?","请举例说明Transformer架构的优势。","为什么大模型需要大量训练数据?"],"逻辑推理能力": ["A比B高,C比B矮,谁最高?","如果所有猫都会爬树,而小花是一只猫,那么小花能爬树吗?","一个人买了一支笔花了10元,又花20元买了一本书,他总共花了多少钱?","甲说:乙在撒谎;乙说:甲在撒谎。如果其中一人说真话,请判断谁在说谎。","一个正方形的边长加倍,面积会变为原来的几倍?"],"多语言处理能力": ["请将以下中文翻译为英文:'今天天气很好,适合散步。'","请将这句话翻译成法语:'人工智能将改变未来。'","请用中文回答:Translate 'Knowledge is power' into Japanese.","将以下英文翻译成中文:'Large Language Models are transforming industries.'","请用韩语表达'欢迎来到中国'。"],"知识准确性": ["2023年诺贝尔物理学奖授予了哪些科学家?","世界上第一台电子计算机诞生于哪一年?","请列举三种可再生能源。","光的速度是多少米每秒?","请解释爱因斯坦的相对论的核心思想。"],"代码生成能力(适配NPU)": ["写一个Python函数计算一个数的阶乘。","写一个Python函数判断一个字符串是否为回文。","写一个Python函数找出列表中的最大值和最小值。","写一个Python函数实现冒泡排序。","写一个Python函数求两个数的最大公约数(欧几里得算法)。"]}# 执行所有维度测试all_results = []for dim_name, prompts in TEST_DIMENSIONS.items():dim_results = run_dimension(model, tokenizer, device, dim_name, prompts, GEN_CFG)all_results.extend(dim_results)# 汇总统计total_success = sum(r["success"] for r in all_results)total_tests = len(all_results)total_speed = mean(r["speed"] for r in all_results if r["speed"] > 0)total_time = mean(r["time"] for r in all_results if r["time"] > 0)print_separator("📊 最终汇总报告")print(f"🧩 总测试数量: {total_tests}")print(f"✅ 成功数量: {total_success} ({total_success/total_tests*100:.1f}%)")print(f"⚙️ 平均推理速度: {total_speed:.2f} tokens/秒")print(f"⏱️ 平均推理耗时: {total_time:.2f} 秒")print(f"📦 当前显存占用: {torch.npu.memory_allocated()/1e9:.2f} GB")print(f"📈 峰值显存占用: {torch.npu.max_memory_allocated()/1e9:.2f} GB")print("\n" + "=" * 90)print("✨ 所有测试完成,报告已生成 ✨".center(90))print("=" * 90)if __name__ == "__main__":main()

多维度模型能力实测报告

基础问答能力测试:概念理解与语言组织

在这里插入图片描述

Gemma 7B 模型在基础问答能力维度表现优异,5 道测试题全部成功完成,成功率 100%;平均推理耗时约 4.68 秒,生成速度达 16.37 tok/s,显存稳定在 17.08GB;模型对人工智能定义、神经网络原理等基础问题的回答逻辑清晰、解释丰富

逻辑推理能力测试:规则推导与结构分析

在这里插入图片描述

Gemma 7B 模型在逻辑推理能力维度表现出色,5 道测试题全部成功完成,成功率 100%;平均推理耗时仅 3.04 秒,生成速度达 17.20 tok/s,显存稳定在 17.08GB。从具体测试题来看,无论是 “高矮比较、三段论推、段论推理、三段论推理、数学计算、真假判断、几何逻辑” 等场景,模型都能准确推导结论,并给出清晰的逻辑解析

多语言处理能力测试:跨语种理解与翻译准确性

在这里插入图片描述

Gemma 7B 模型在多语言处理能力维度表现卓越,5 道测试题:涵盖中英、中法、中日、英中、中韩翻译表达,全部成功完成,成功率 100%;平均推理耗时仅 2.08 秒,生成速度达 16.88 tok/s,显存稳定在 17.08GB,从具体测试来看,无论是中文到英文的流畅翻译、法语的精准转换,还是日语、韩语的多语种表达,模型都能准确输出专业且地道的结果

知识准确性测试:事实核验与领域覆盖度

在这里插入图片描述

Gemma 7B 模型在知识准确性维度表现出色,5 道测试题包含诺贝尔物理学奖、计算机历史、可再生能源、光速、相对论等专业领域知识,也都能够成功完成,成功率 100%;平均推理耗时 3.97 秒,生成速度达 17.51 tok/s,显存稳定在 17.08GB,对各领域专业知识的回答非常准确

代码生成能力测试:函数逻辑与算法实现

在这里插入图片描述

Gemma 7B 模型在代码生成能力适配 NPU维度表现优异,5 道 Python 代码生成题:阶乘、回文判断、列表最值查找、冒泡排序、最大公约数,成功率 100%;平均推理耗时 4.68 秒,生成速度达 17.11 tok/s,显存稳定在 17.08GB,模型生成的代码结构规范、注释清晰,还能精准实现功能需求

综合性能评估与多维度汇总报告

在这里插入图片描述

测试报告可以看出,Gemma 7B 模型在昇腾 NPU 上展现出了全面且优异的推理能力:

  • 任务覆盖与成功率:覆盖基础问答、逻辑推理、多语言处理、知识准确性、代码生成5 大维度共 25 题测试,成功率 100%,说明模型在多场景下的推理能力高度可靠,无明显短板
  • 性能效率:平均推理速度 17.10 tokens / 秒,平均单题耗时 3.66 秒,总测试时长仅 127 秒,在昇腾 NPU 上的推理效率表现出色,能快速响应各类任务需求
  • 资源占用:显存占用稳定在 17.08GB(峰值 17.21GB),说明模型在昇腾 NPU 上的显存利用合理,没有出现资源溢出或大幅波动,硬件适配性良好

测试数据可视化分析与模型表现解读

在这里插入图片描述

逻辑推理能力:复杂业务逻辑拆解、量化分析等场景中表现亮眼,逻辑链条梳理快、结论准,能高效支撑规则推理、决策类功能的开发

多语言处理能力:多语种适配性极强,翻译语义精准且表达自然地道,可以直接用于国际化产品、跨语言客服等场景的多语言模块开发

代码生成能力:代码产出规范且可直接运行,对 Python 语法、经典算法逻辑理解透彻,能快速完成工具函数、基础算法模块的开发

知识准确性:多领域知识输出精准可靠,从科学常识到行业专业知识均能准确响应,可以直接作为知识图谱、智能问答类应用的核心能力

基础问答能力:基础概念解释清晰易懂,虽深度拓展性有限,但在客服 FAQ、入门知识科普等轻量化问答场景中表现稳定,能满足基础问答功能的开发需求

Gemma 7B 模型在昇腾 NPU 上的多维度能力均衡且优秀,尤其在逻辑推理、多语言处理、代码生成、知识准确性方面表现强劲,基础问答能力作为基础维度也能满足需求,整体综合性能的蓝色区域覆盖饱满,说明 Gemma 7B 在昇腾 NPU 环境下的适配性高,支撑多场景的 AI 推理任务:逻辑分析、跨语言交互、代码开发、知识问答等

总结

实测结果来看,Gemma 2 在昇腾 NPU 上的推理表现不仅稳定,而且高效:在 25 道多维度测试中实现 100% 成功率,平均速度约 17 tokens/s,显存占用控制良好,模型在逻辑推理、多语言理解和代码生成等复杂任务中展现出强适配性与工程可用性,具备良好的部署潜力与实用价值

昇腾官网:https://www.hiascend.com/
昇腾社区:https://www.hiascend.com/community
昇腾官方文档:https://www.hiascend.com/document
昇腾开源仓库:https://gitcode.com/ascend

http://www.dtcms.com/a/541558.html

相关文章:

  • 南京设计公司郑州粒米seo顾问
  • 承接电商网站建设中文网站模板大全
  • 折半查找及其判定树的性质
  • Day 6 PPI与Cox
  • 网站dns刷新庐江县建设局网站
  • 网站的按钮怎么做 视频3g 手机网站建设
  • 豆包凶猛,深度解析字节AI战略
  • 【案例实战】HarmonyOS云开发实战:5分钟快速构建全栈应用
  • 为什么你的React项目到中等规模就开始“烂尾“?问题可能出在文件结构
  • 做思维导图好看的网站企业网络规划开题报告
  • 企业网站建设合同模板wordpress密码可见
  • 基于 Element Plus 的 TableColumnGroup 组件使用说明
  • 学校网站代码这么做3d网站
  • 国外购物网站系统出入东莞最新通知今天
  • 如何删除 AEDT 中的排队模拟?
  • 做网站的公司面试邢台企业建站
  • 万站群cms平台怎么推广技巧
  • 一加13/13T手动偷渡ColorOS16系统-享受德芙丝滑+增量包下载
  • 数据结构——三十二、最短路径问题——BFS算法(王道408)
  • 最新的高端网站建设网站结构方面主要做哪些优化
  • 电子商务静态网站建设心得网站服务合同用交印花税吗
  • Day.js 使用文档
  • 云栖实录 | 阿里云助力金山办公打造智能搜索新标杆:WPS云文档搜索技术全面升级
  • 监利网站建设国外互动网站
  • docker离线镜像文件选择导入脚本
  • Lua-迭代器
  • 社交网站 设计单仁营销网站的建设
  • RT-Thread FAL:为何NOR Flash必须注册为MTD设备?——深入解析RTOS设备模型
  • 如何查看网站蜘蛛数码公司网站建设的意义
  • 在婚恋网站做销售好吗网站推广排名哪家公司好