服务化参数调优实战

简介: 本文介绍了服务化性能调优的全流程,以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%。

相关文章
|
Ubuntu
ubuntu 换源 阿里源
ubuntu 换源 阿里源
2349 0
|
8月前
|
负载均衡 Docker Python
vLLM-Ascend 安装部署与环境配置指南
vLLM-Ascend 是 vLLM 项目专为华为昇腾 NPU 设计的硬件插件,支持主流大模型与多模态架构,提供高性能推理能力。项目结构清晰,涵盖核心算子、工具脚本与容器化部署方案,兼容单/多节点环境,助力高效构建昇腾上的 AI 推理服务。
4082 1
|
测试技术 Shell
MindIE LLM场景快速上手实验
MindIE是昇腾自研推理框架,本实验手册可指导小白用户快速掌握MindIE在LLM(large language model)场景的基本功能,包括:大模型推理功能测试、大模型性能测试、大模型精度测试、服务化推理部署、benchmark测试等。
1258 3
|
6月前
|
人工智能 并行计算 Docker
显卡驱动、CUDA、NVIDIA Container Toolkit 内网离线安装教程
本文详解无网络环境下私有化AI部署的离线环境搭建:涵盖NVIDIA驱动(550.142)、CUDA 12.4、NVIDIA Container Toolkit及Docker的全流程离线安装与配置,适配双RTX 3090服务器,含依赖处理、冲突解决与完整验证步骤。
4522 7
显卡驱动、CUDA、NVIDIA Container Toolkit 内网离线安装教程
|
11月前
|
机器学习/深度学习 缓存 人工智能
MoE模型加速秘籍:vLLM混合KV缓存管理解析​
vLLM是高效分布式大模型推理引擎,采用分页注意力、连续批处理等技术实现高吞吐与低延迟。本文详解其架构设计与关键技术,包括KV缓存管理、调度机制、推测解码与分布式扩展等,助你深入理解性能优化原理。
1685 1
|
JSON 自然语言处理 Kubernetes
MindIE PD分离部署Q&A
使用mindie进行PD分离部署
915 28
|
机器学习/深度学习 存储 缓存
大模型推理显存和计算量估计方法
最近做吞吐量调试涉及到输入batch_size的设置,为了把算力和显存用起来,同时不触发out of memory,需要提前估计大模型推理过程中的显存占用
2531 5
|
测试技术 容器
DeepSeek-R1-Distill-Qwen-1.5B基于MindIE推理实践
基于MindIE实现DeepSeek-R1-Distill-Qwen-1.5B的纯模型推理和服务化推理。
|
API Python
飞桨x昇腾生态适配方案:13_API离线推理
ais_bench 提供了基于昇腾硬件的 Python API,用于离线模型(.om模型)推理。支持静态与动态API场景,如单个或多个OM模型推理。通过 `InferSession` 类加载模型并执行推理,可灵活处理输入输出形状转换。示例代码涵盖图片读取、形状调整、多模型串联推理及资源释放等操作,满足多样化推理需求。
1020 26