服务化参数调优实战

简介: 本文介绍了服务化性能调优的全流程,以Llama3-8B模型为例。首先需完成MindIE环境安装、下载模型权重与测试数据集。接着通过计算npuMemSize和maxBatchSize,maxPrefillBatchSize(272)与maxPrefillTokens,并更新配置进行性能测试。结果显示,参数调优后吞吐量提升18%。此方法为大模型性能优化提供了实用指导。

服务化性能调优

前置准备

  • 完成MindIE环境的安装,参考链接
  • 下载好要调优的模型权重
  • 下载好性能测试数据集

调优流程

下面以Llama3-8B为例,讲解调优全流程

1.查看模型权重大小

Llama3-8B权重为15GB
1744788873547_image.png

2.计算npuMemSize

计算公式为:Floor[(单卡显存-空闲占用-权重/NPU卡数)* 系数],系数取值为0.8
单卡空闲显存:61GB
空闲占用:约3GB
1744789525739_image.png

npuMemSize = Floor[ (61 - 3 - 15/1 )] * 0.8 = 34GB

3.计算maxBatchSize

maxBatchSize = Total Block Num/Block Num,需要先计算出"Total Block Num"和"Block Num"的值

  • 计算"Total Block Num"的值
    Total Block Num = Floor(NPU显存 / (Block Size 模型网络层数 模型注意力头数 注意力头大小 Cache类型字节数 * Cache数))
    1744789767150_image.png

对于GQA类模型,注意力头大小=hidden_size/num_attention_heads
将以上参数值代入公式,得到Total Block Num = Floor[34102410241024/(128 32 8(4096/32)22)] = 2176

  • 计算单个请求的"Block Num"
    所需最大Block Num = Ceil(输入Token数/cacheBlockSize)+Ceil(最大输出Token数/cacheBlockSize)
    所需最小Block Num = Ceil(输入Token数/cacheBlockSize)
    所需平均Block Num = Ceil(输入Token数/cacheBlockSize)+Ceil(平均输出Token数/cacheBlockSize)

    从下面benchmark信息获取数据集信息:

          InputTokens: 60(avg), 186(max), 23(min)
          OutputTokens: 467(avg), maxIterTimes(max), 18(min)
    

    1744789966163_image.png

**所需最小Block Num = Ceil(60/128) = 1**
**所需最大Block Num = Ceil(60/128)+Ceil(512/128) = 5**
**所需平均Block Num = Ceil(60/128)+Ceil(346/128) = 4**
  • 计算"maxBatchSize"
    最小maxBatchSize = Floor[Total Block Num/所需最大Block Num] = 435
    最大maxBatchSize = Floor[Total Block Num/所需最小Block Num] = 2176
    平均maxBatchSize = Floor[Total Block Num/所需平均Block Num] = 544

4.计算maxPrefillBatchSize和maxPrefillTokens的值

  • maxPrefillBatchSize建议设置为:maxBatchSize值的一半
    maxPrefillBatchSize = Floor[maxBatchSize/2] = 544/2 = 272

  • maxPrefillTokens的值一般不超过8192
    maxPrefillTokens = maxPrefillBatchSize 数据集token id平均输入长度 = 27260 = 16320
    根据公式计算出的值大于8192,所以maxPrefillTokens的取值为8192

5.更新配置&性能测试

  • 更新配置如下:
    1744790453247_image.png
  • 实测性能
    默认参数测试结果:
    1744790483118_image.png

参数调优后测试结果:
1744790577292_image.png

可以看到,吞吐提升了18%。

相关文章
|
前端开发 JavaScript 搜索推荐
Marp 入门与教程:让你一分钟爱上代码写PPT的乐趣
Marp 是一个基于 Markdown 的开源幻灯片制作工具,可将 Markdown 文档轻松转换为精美幻灯片。支持 VS Code 插件实时预览、命令行工具批量处理、自定义主题等,适用于技术分享、工作汇报和教学等多种场景。相比 LaTeX Beamer,Marp 学习成本低,跨平台支持好,设计现代美观。
|
Ubuntu
ubuntu 换源 阿里源
ubuntu 换源 阿里源
2449 0
|
10月前
|
机器学习/深度学习 存储 人工智能
大模型部署算力账本:手把手教你算清GPU显存这笔账
本文详解大模型部署中GPU显存计算的关键:以Llama 70B为例,拆解模型权重、KV Cache、其他开销三大部分,揭示高并发下显存需求超1TB的真相,并提供量化、并行优化等降本策略,助你精准规划硬件投入,避免资源浪费或服务崩溃。
|
11月前
|
负载均衡 Docker Python
vLLM-Ascend 安装部署与环境配置指南
vLLM-Ascend 是 vLLM 项目专为华为昇腾 NPU 设计的硬件插件,支持主流大模型与多模态架构,提供高性能推理能力。项目结构清晰,涵盖核心算子、工具脚本与容器化部署方案,兼容单/多节点环境,助力高效构建昇腾上的 AI 推理服务。
4978 1
|
测试技术 Shell
MindIE LLM场景快速上手实验
MindIE是昇腾自研推理框架,本实验手册可指导小白用户快速掌握MindIE在LLM(large language model)场景的基本功能,包括:大模型推理功能测试、大模型性能测试、大模型精度测试、服务化推理部署、benchmark测试等。
1449 3
|
机器学习/深度学习 缓存 人工智能
MoE模型加速秘籍:vLLM混合KV缓存管理解析​
vLLM是高效分布式大模型推理引擎,采用分页注意力、连续批处理等技术实现高吞吐与低延迟。本文详解其架构设计与关键技术,包括KV缓存管理、调度机制、推测解码与分布式扩展等,助你深入理解性能优化原理。
1888 1
|
10月前
|
存储 人工智能 自然语言处理
2026年OpenClaw(原Moltbot/Clawdbot)快速部署Dify,高效搭建AI应用教程
阿里云无影AgentBay是面向企业级场景的AI智能体开发与管理平台,集成算力调度、权限管控、安全隔离、全生命周期管理等核心能力,可为企业版OpenClaw(原Moltbot/Clawdbot)提供稳定、安全的底层支撑。2026年,依托无影AgentBay构建企业版OpenClaw,可实现任务自动化、跨系统协同、数据安全管控等企业级核心功能,适配办公自动化、研发辅助、客户服务等多场景需求,全程遵循官方操作逻辑,无营销词汇,确保信息原汁原味,企业IT人员及新手均可按步骤落地。
2907 1
|
存储 缓存 调度
vLLM 吞吐量优化实战:10个KV-Cache调优方法让tokens/sec翻倍
十个经过实战检验的 vLLM KV-cache 优化方法 —— 量化、分块预填充、前缀重用、滑动窗口、ROPE 缩放、后端选择等等 —— 提升 tokens/sec。
3882 10
|
物联网 Shell Swift
NPU推理&微调大模型实战
本文为魔搭社区轻量级训练推理工具SWIFT微调实战教程系列
|
测试技术 容器
DeepSeek-R1-Distill-Qwen-1.5B基于MindIE推理实践
基于MindIE实现DeepSeek-R1-Distill-Qwen-1.5B的纯模型推理和服务化推理。