华为Ascend 910B部署Qwen2.5-VL-32B方案
<h3 align="center">华为Ascend 910B部署Qwen2.5-VL-32B方案</h3><p></p><div class="toc"><div class="toc-container-header">目录</div><ul><li>一、多模态大模型——Qwen2.5-VL-32B<ul><li>1.1 简介</li><li>1.2 显存测算<ul><li>1.2.1 Model Memory Calculator工具测算</li><li>1.2.2 按模型参数量一般测算</li></ul></li><li>1.3 算力测算<ul><li>1.3.1 单 Token 理论计算量估算</li></ul></li></ul></li><li>二、华为昇腾910B(64GB)<ul><li>2.1 简介</li><li>2.2 Atlas 800I A2 推理服务器</li></ul></li><li>三、Qwen2.5-VL-32B-Instruct部署到华为昇腾910B</li><li>四、测试<ul><li>4.1 硬件</li><li>4.2 软件</li><li>4.3 运行参数设置:</li></ul></li><li>参考资料</li><li>附表<ul><li>表1. 模型下载地址</li><li>表2. FP精度和特殊精度位数表</li><li>表3. 对比910B/A100/A800/H100/H800/H200</li></ul></li></ul></div><p></p>
<p><strong>部署Qwen2.5-VL-32B-Instruct模型至少需要2张华为昇腾910B(64GB)算力卡</strong>。具体测算依据如下:</p>
<h3 id="一多模态大模型qwen25-vl-32b">一、多模态大模型——Qwen2.5-VL-32B</h3>
<h4 id="11-简介">1.1 简介</h4>
<table>
<thead>
<tr>
<th style="text-align: right">项</th>
<th style="text-align: left">值</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right">最高上下文输入长度</td>
<td style="text-align: left">32K tokens</td>
</tr>
<tr>
<td style="text-align: right">最长输出结果</td>
<td style="text-align: left">2048 tokens</td>
</tr>
<tr>
<td style="text-align: right">模型类型</td>
<td style="text-align: left">多模态大模型</td>
</tr>
<tr>
<td style="text-align: right">发布时间</td>
<td style="text-align: left">2025-03-24</td>
</tr>
<tr>
<td style="text-align: right">模型预文件大小</td>
<td style="text-align: left">64GB</td>
</tr>
<tr>
<td style="text-align: right">代码开源状态</td>
<td style="text-align: left">Apache 2.0</td>
</tr>
<tr>
<td style="text-align: right">预训练权重开源</td>
<td style="text-align: left">Apache 2.0 - 免费商用授权</td>
</tr>
<tr>
<td style="text-align: right">GitHub 源码</td>
<td style="text-align: left">https://github.com/QwenLM/Qwen2.5-VL</td>
</tr>
<tr>
<td style="text-align: right">Hugging Face平台模型下载</td>
<td style="text-align: left">https://huggingface.co/Qwen/Qwen2.5-VL-32B-Instruct</td>
</tr>
<tr>
<td style="text-align: right">modelscope平台模型下载</td>
<td style="text-align: left">https://modelscope.cn/models/Qwen/Qwen2.5-VL-32B-Instruct/files</td>
</tr>
<tr>
<td style="text-align: right">在线体验</td>
<td style="text-align: left">https://chat.qwen.ai/、https://huggingface.co/spaces/Qwen/Qwen2.5-VL-32B-Instruct</td>
</tr>
<tr>
<td style="text-align: right">官方论文</td>
<td style="text-align: left">https://qwenlm.github.io/blog/qwen2.5-vl-32b/</td>
</tr>
</tbody>
</table>
<h4 id="12-显存测算">1.2 显存测算</h4>
<h5 id="121-model-memory-calculator工具测算">1.2.1 Model Memory Calculator工具测算</h5>
<p>使用Model Memory Calculator工具测算的显存占用结果如下:</p>
<table>
<thead>
<tr>
<th style="text-align: center">量化类型(精度)</th>
<th style="text-align: center">最大层</th>
<th style="text-align: center">推理显存</th>
<th style="text-align: center">推理显存(修正)</th>
<th style="text-align: center">Adam训练显存</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">float32</td>
<td style="text-align: center">2.9 GB</td>
<td style="text-align: center">119.15 GB</td>
<td style="text-align: center">142.98 GB</td>
<td style="text-align: center">476.62 GB</td>
</tr>
<tr>
<td style="text-align: center">float16</td>
<td style="text-align: center">1.45 GB</td>
<td style="text-align: center">59.58 GB</td>
<td style="text-align: center">71.496 GB</td>
<td style="text-align: center">238.31 GB</td>
</tr>
<tr>
<td style="text-align: center">int8</td>
<td style="text-align: center">742.5 MB</td>
<td style="text-align: center">29.79 GB</td>
<td style="text-align: center">35.748 GB</td>
<td style="text-align: center">N/A</td>
</tr>
<tr>
<td style="text-align: center">int4</td>
<td style="text-align: center">371.25 MB</td>
<td style="text-align: center">14.89 GB</td>
<td style="text-align: center">17.868 GB</td>
<td style="text-align: center">N/A</td>
</tr>
</tbody>
</table>
<blockquote>
<p>修正原因:EleutherAI在曾经的技术分析中提到推理所需的实际显存可能要比计算结果高20%左右。</p>
<p>HuggingFace官方工具Model Memory Calculator,一键计算大模型显存需求~ | 数据学习者官方网站(Datalearner)</p>
</blockquote>
<h5 id="122-按模型参数量一般测算">1.2.2 按模型参数量一般测算</h5>
<table>
<thead>
<tr>
<th style="text-align: center">量化类型(精度)</th>
<th style="text-align: center">所需基础显存</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">float32</td>
<td style="text-align: center">128 GB</td>
</tr>
<tr>
<td style="text-align: center">float16</td>
<td style="text-align: center">64GB</td>
</tr>
<tr>
<td style="text-align: center">int8</td>
<td style="text-align: center">32GB</td>
</tr>
<tr>
<td style="text-align: center">int4</td>
<td style="text-align: center">16GB</td>
</tr>
</tbody>
</table>
<blockquote>
<p>依据附表2,全参数激活(320亿参数)</p>
</blockquote>
<h4 id="13-算力测算">1.3 算力测算</h4>
<h5 id="131-单-token-理论计算量估算">1.3.1 单 Token 理论计算量估算</h5>
<p>根据 Transformer 模型的 FLOPs 计算公式:</p>
<p></p><div class="math display">\[FLOPs/token≈2×激活参数×序列长度
\]</div><p></p><p>对于Qwen2.5-VL-32B(激活参数:32B;序列长度:假设生成阶段为单步解码(序列长度=1)), 则单 Token 理论计算量约为:<span class="math inline">\(2×3.2×10^{10}=6.4×10^{10} FLOPs=64GFLOPs\)</span>, 即 <strong>0.064 TFLOPS/token</strong>。</p>
<h3 id="二华为昇腾910b64gb">二、华为昇腾910B(64GB)</h3>
<h4 id="21-简介">2.1 简介</h4>
<ul>
<li>显存:64GB</li>
<li>卡间互联带宽:392 GB/s(HCCS技术)</li>
<li>精度-算力:</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: center">精度</th>
<th style="text-align: center">算力(TFLOPS)</th>
<th style="text-align: center">单卡理论峰值(Tokens/s)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">FP16</td>
<td style="text-align: center">320</td>
<td style="text-align: center">5,000</td>
</tr>
<tr>
<td style="text-align: center">INT8</td>
<td style="text-align: center">640</td>
<td style="text-align: center">10,000</td>
</tr>
</tbody>
</table>
<blockquote>
<p>https://blog.csdn.net/hao_wujing/article/details/144820794</p>
</blockquote>
<h4 id="22-atlas-800i-a2-推理服务器">2.2 Atlas 800I A2 推理服务器</h4>
<blockquote>
<p>技术规格 - Atlas 800I A2 推理服务器 用户指南 09 - 华为</p>
</blockquote>
<h3 id="三qwen25-vl-32b-instruct部署到华为昇腾910b">三、Qwen2.5-VL-32B-Instruct部署到华为昇腾910B</h3>
<p>官方部署教程:https://www.hiascend.com/developer/ascendhub/detail/9eedc82e0c0644b2a2a9d0821ed5e7ad</p>
<p>其他部署教程:</p>
<p>【教程】阿里最新多模态大模型Qwen2.5-VL-32B ,本地部署实践|vl|视觉|qwen|知名企业|云计算费用|阿里巴巴集团_网易订阅</p>
<p>【本地部署教程】Qwen2.5-VL 阿里最新开源最强的开源视觉大模型,支持视频!_wx64449c2051655的技术博客_51CTO博客</p>
<p>基于昇腾MindIE开箱部署Qwen2.5-VL-32B,体验更聪明的多模态理解能力_昇腾 qwen2.5-vl-CSDN博客</p>
<p>在昇腾Ascend 910B上运行Qwen2.5推理 - 知乎</p>
<p>太好了,vLLM已支持华为昇腾910B,半小时可部署Deepseek - 知乎</p>
<h3 id="四测试">四、测试</h3>
<p>平台:Autodl</p>
<h4 id="41-硬件">4.1 硬件</h4>
<table>
<thead>
<tr>
<th style="text-align: right">名称</th>
<th style="text-align: left">型号</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right">NPU</td>
<td style="text-align: left">华为昇腾910B(64GB)X2</td>
</tr>
<tr>
<td style="text-align: right">CPU</td>
<td style="text-align: left">48 vCPU Kunpeng-920</td>
</tr>
<tr>
<td style="text-align: right">内存</td>
<td style="text-align: left">440GB</td>
</tr>
<tr>
<td style="text-align: right">磁盘</td>
<td style="text-align: left">150GB</td>
</tr>
</tbody>
</table>
<h4 id="42-软件">4.2 软件</h4>
<table>
<thead>
<tr>
<th style="text-align: right">名称</th>
<th style="text-align: left">版本</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: right">操作系统</td>
<td style="text-align: left">ubuntu22.04</td>
</tr>
<tr>
<td style="text-align: right">Python</td>
<td style="text-align: left">3.11.9</td>
</tr>
<tr>
<td style="text-align: right">CANN</td>
<td style="text-align: left">8.0.0</td>
</tr>
<tr>
<td style="text-align: right">torch</td>
<td style="text-align: left">2.5.1</td>
</tr>
<tr>
<td style="text-align: right">vllm</td>
<td style="text-align: left">0.7.3</td>
</tr>
<tr>
<td style="text-align: right">torchvision</td>
<td style="text-align: left">0.20.1</td>
</tr>
</tbody>
</table>
<h4 id="43-运行参数设置">4.3 运行参数设置:</h4>
<pre><code class="language-bash">vllm serve /root/autodl-tmp/data-local/qwen25VL \
--max_model 4096 \
--port 8000 \
--tensor-parallel-size 2 \
--trust-remote-code \
--served-model-name "Qwen25vl" \
--api-key 123321
--dtype float16
--quantization bitsandbytes
</code></pre>
<p>占用显存:116.41GB</p>
<p>实测速度:6.7 tokens/s</p>
<h3 id="参考资料">参考资料</h3>
<p>Models_Ecosystem/Qwen2.5-VL-32B-Instruct | 魔乐社区</p>
<p>基于昇腾MindIE开箱部署Qwen2.5-VL-32B,体验更聪明的多模态理解能力_昇腾 qwen2.5-vl-CSDN博客</p>
<p>大模型对硬件资源的需求报告 - 知乎</p>
<p>deepseek-ai/DeepSeek-R1</p>
<p>https://blog.csdn.net/m0_59163425/article/details/145640613?fromshare=blogdetail&sharetype=blogdetail&sharerId=145640613&sharerefer=PC&sharesource=qq_44670441&sharefrom=from_link</p>
<p>https://www.51cto.com/article/807960.html</p>
<p>GPU 进阶笔记(二):华为昇腾 910B GPU_昇腾910b-CSDN博客</p>
<p>GPU Performance (Data Sheets) Quick Reference (2023)</p>
<p>https://huggingface.co/spaces/hf-accelerate/model-memory-usage</p>
<p>https://blog.csdn.net/weixin_45555699/article/details/145805848</p>
<p>大模型精度:FP32、TF32、FP16、BF16、FP8、FP4、NF4、INT8 - AI产品经理大群的文章 - 知乎</p>
<p>大模型推理显存与GPU计算器 | 硬件需求估算</p>
<p>GPU 显存带宽的计算方法 - 简书</p>
<p>性能仅华为AI芯片的50%,英伟达GPU H20被中企砍单? - OFweek电子工程网</p>
<p>【智算卡】华为昇腾910B与英伟达GPU全方位技术对比及产品线差异解析_华为升腾芯片与英伟达芯片对比-CSDN博客</p>
<p>中美AI芯片对决:华为昇腾910B vs 英伟达H100性能实测 - 今日头条</p>
<p>英伟达 vs. 华为海思:GPU性能一览 - 知乎</p>
<p>昇腾社区官网-昇腾万里 让智能无所不及</p>
<h3 id="附表">附表</h3>
<h4 id="表1-模型下载地址">表1. 模型下载地址</h4>
<table>
<thead>
<tr>
<th>平台</th>
<th>地址</th>
</tr>
</thead>
<tbody>
<tr>
<td>modelscope</td>
<td>https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1</td>
</tr>
<tr>
<td>huggingface</td>
<td>https://huggingface.co/deepseek-ai/DeepSeek-R1</td>
</tr>
<tr>
<td>deepseek官网</td>
<td>https://deepseekv3.org/zh-Hans/download</td>
</tr>
<tr>
<td>ollama</td>
<td>https://ollama.com/library/deepseek-r1</td>
</tr>
</tbody>
</table>
<h4 id="表2-fp精度和特殊精度位数表">表2. FP精度和特殊精度位数表</h4>
<table>
<thead>
<tr>
<th style="text-align: center">dtype</th>
<th style="text-align: center">1B(10亿)参数<br>约占用显存(GB)</th>
<th style="text-align: center">符号位</th>
<th style="text-align: center">指数位</th>
<th style="text-align: center">小数位</th>
<th style="text-align: center">总位数</th>
<th style="text-align: center">字节数</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center">FP64</td>
<td style="text-align: center">8</td>
<td style="text-align: center">1</td>
<td style="text-align: center">11</td>
<td style="text-align: center">52</td>
<td style="text-align: center">64</td>
<td style="text-align: center">8</td>
</tr>
<tr>
<td style="text-align: center">FP32</td>
<td style="text-align: center">4</td>
<td style="text-align: center">1</td>
<td style="text-align: center">8</td>
<td style="text-align: center">23</td>
<td style="text-align: center">32</td>
<td style="text-align: center">4</td>
</tr>
<tr>
<td style="text-align: center">TF32</td>
<td style="text-align: center">4</td>
<td style="text-align: center">1</td>
<td style="text-align: center">8</td>
<td style="text-align: center">10</td>
<td style="text-align: center">19</td>
<td style="text-align: center">4</td>
</tr>
<tr>
<td style="text-align: center">BF16</td>
<td style="text-align: center">2</td>
<td style="text-align: center">1</td>
<td style="text-align: center">8</td>
<td style="text-align: center">7</td>
<td style="text-align: center">16</td>
<td style="text-align: center">2</td>
</tr>
<tr>
<td style="text-align: center">FP16</td>
<td style="text-align: center">2</td>
<td style="text-align: center">1</td>
<td style="text-align: center">5</td>
<td style="text-align: center">10</td>
<td style="text-align: center">16</td>
<td style="text-align: center">2</td>
</tr>
<tr>
<td style="text-align: center">FP8 E4M3</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">4</td>
<td style="text-align: center">3</td>
<td style="text-align: center">8</td>
<td style="text-align: center">1</td>
</tr>
<tr>
<td style="text-align: center">FP8 E5M2</td>
<td style="text-align: center">1</td>
<td style="text-align: center">1</td>
<td style="text-align: center">5</td>
<td style="text-align: center">2</td>
<td style="text-align: center">8</td>
<td style="text-align: center">1</td>
</tr>
<tr>
<td style="text-align: center">FP4</td>
<td style="text-align: center">0.5</td>
<td style="text-align: center">1</td>
<td style="text-align: center">2</td>
<td style="text-align: center">1</td>
<td style="text-align: center">4</td>
<td style="text-align: center">0.5</td>
</tr>
</tbody>
</table>
<p>具体计算过程如下:</p>
<p>全精度即为float32类型,已知1个float32类型参数占用4个字节,参考 勾勾黄:LLM精度问题(FP16、FP32、BF16),1B模型有10亿参数,需占内存 <span class="math inline">\(10^9×4\)</span>Bytes 。</p>
<p>已知 <span class="math inline">\(1GB=1024MB=1024^2KB=1024^3Bytes\)</span></p>
<p>那么,<span class="math inline">\(\frac{10^9×4Byte}{1024^3}≈4GB\)</span></p>
<blockquote>
<p>https://zhuanlan.zhihu.com/p/20329244481</p>
<p>大模型训练和推理时的显存占用怎么计算 - 知乎</p>
</blockquote>
<h4 id="表3-对比910ba100a800h100h800h200">表3. 对比910B/A100/A800/H100/H800/H200</h4>
<table>
<thead>
<tr>
<th style="text-align: left"></th>
<th style="text-align: left">A800 (PCIe/SXM)</th>
<th style="text-align: left">A100 (PCIe/SXM)</th>
<th style="text-align: left">Huawei Ascend 910B</th>
<th style="text-align: left">H800 (PCIe/SXM)</th>
<th style="text-align: left">H100 (PCIe/SXM)</th>
<th>H200 (PCIe/SXM)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">Year</td>
<td style="text-align: left">2022</td>
<td style="text-align: left">2020</td>
<td style="text-align: left">2023</td>
<td style="text-align: left">2022</td>
<td style="text-align: left">2022</td>
<td>2024</td>
</tr>
<tr>
<td style="text-align: left">Manufacturing</td>
<td style="text-align: left">7nm</td>
<td style="text-align: left">7nm</td>
<td style="text-align: left">7+nm</td>
<td style="text-align: left">4nm</td>
<td style="text-align: left">4nm</td>
<td>4nm</td>
</tr>
<tr>
<td style="text-align: left">Architecture</td>
<td style="text-align: left">Ampere</td>
<td style="text-align: left">Ampere</td>
<td style="text-align: left">HUAWEI Da Vinci</td>
<td style="text-align: left">Hopper</td>
<td style="text-align: left">Hopper</td>
<td>Hopper</td>
</tr>
<tr>
<td style="text-align: left">Max Power</td>
<td style="text-align: left">300/400 W</td>
<td style="text-align: left">300/400 W</td>
<td style="text-align: left">400 W</td>
<td style="text-align: left"></td>
<td style="text-align: left">350/700 W</td>
<td>700W</td>
</tr>
<tr>
<td style="text-align: left">GPU Mem</td>
<td style="text-align: left">80G HBM2e</td>
<td style="text-align: left">80G HBM2e</td>
<td style="text-align: left">64G HBM2e</td>
<td style="text-align: left">80G HBM3</td>
<td style="text-align: left">80G HBM3</td>
<td>141GB HBM3e</td>
</tr>
<tr>
<td style="text-align: left">GPU Mem BW</td>
<td style="text-align: left"></td>
<td style="text-align: left">1935/2039 GB/s</td>
<td style="text-align: left"></td>
<td style="text-align: left"></td>
<td style="text-align: left">2/3.35 TB/s</td>
<td>4.8 TB/s</td>
</tr>
<tr>
<td style="text-align: left">GPU Interconnect (<strong>one-to-one max bw</strong>)</td>
<td style="text-align: left">NVLINK 400GB/s</td>
<td style="text-align: left">PCIe Gen4 64GB/s, NVLINK 600GB/s</td>
<td style="text-align: left">HCCS <strong><code>56GB/s</code></strong></td>
<td style="text-align: left">NVLINK 400GB/s</td>
<td style="text-align: left">PCIe Gen5 128GB/s, NVLINK <strong><code>900GB/s</code></strong></td>
<td>PCIe Gen5 128GB/s, NVLINK 900 GB/s</td>
</tr>
<tr>
<td style="text-align: left">GPU Interconnect (<strong>one-to-many total bw</strong>)</td>
<td style="text-align: left">NVLINK 400GB/s</td>
<td style="text-align: left">PCIe Gen4 64GB/s, NVLINK 600GB/s</td>
<td style="text-align: left">HCCS <strong><code>392GB/s</code></strong></td>
<td style="text-align: left">NVLINK 400GB/s</td>
<td style="text-align: left">PCIe Gen5 128GB/s, NVLINK <strong><code>900GB/s</code></strong></td>
<td>PCIe Gen5 128GB/s, NVLINK 900 GB/s</td>
</tr>
<tr>
<td style="text-align: left">FP32 <code>TFLOPS</code></td>
<td style="text-align: left"></td>
<td style="text-align: left"><code>19.5</code></td>
<td style="text-align: left"></td>
<td style="text-align: left"></td>
<td style="text-align: left">`51</td>
<td>67*`</td>
</tr>
<tr>
<td style="text-align: left">TF32 <code>TFLOPS</code></td>
<td style="text-align: left"></td>
<td style="text-align: left">`156</td>
<td style="text-align: left">312*`</td>
<td style="text-align: left"></td>
<td style="text-align: left"></td>
<td>`756</td>
</tr>
<tr>
<td style="text-align: left">BF16 <code>TFLOPS</code></td>
<td style="text-align: left"></td>
<td style="text-align: left">`156</td>
<td style="text-align: left">312*`</td>
<td style="text-align: left"></td>
<td style="text-align: left"></td>
<td>`1513</td>
</tr>
<tr>
<td style="text-align: left">FP16 <code>TFLOPS</code></td>
<td style="text-align: left"></td>
<td style="text-align: left">`312</td>
<td style="text-align: left">624*`</td>
<td style="text-align: left"><code>320</code></td>
<td style="text-align: left"></td>
<td>`1513</td>
</tr>
<tr>
<td style="text-align: left">FP8 <code>TFLOPS</code></td>
<td style="text-align: left">NOT support</td>
<td style="text-align: left">NOT support</td>
<td style="text-align: left"></td>
<td style="text-align: left"></td>
<td style="text-align: left">`3026</td>
<td>3958*`</td>
</tr>
<tr>
<td style="text-align: left">INT8 <code>TFLOPS</code></td>
<td style="text-align: left"></td>
<td style="text-align: left">`624</td>
<td style="text-align: left">1248*`</td>
<td style="text-align: left"><code>640</code></td>
<td style="text-align: left"></td>
<td>`3026</td>
</tr>
</tbody>
</table>
<blockquote>
<p>GPU Performance (Data Sheets) Quick Reference (2023)</p>
</blockquote><br><br>
来源:https://www.cnblogs.com/wangalong/p/18923343
頁:
[1]