BIOS配置
本节将介绍基于昇腾AI处理器上的一系列通过BIOS进行高性能配置的操作。
配置高性能模式
原理:通常昇腾AI处理器在能耗菜单(power policy)提供Efficiency 和 Performance两种配置。
- Efficiency表示节能模式,CPU支持动态调频调压, 可根据负载情况,动态调整工作频率。
- Performance表示性能模式,CPU无动态调频,固定运行在最大频率。
调优配置:将Power Policy设置为Performance,获得更优性能。
缺点:开启高性能模式,会产生较大的能耗。
推荐场景:建议推理场景下,打开高性能模式,可以有效提升CPU性能,减少CPU运行空泡,从而提升模型性能。
实验室在Atlas 800T A2上安装openEuler 22.03 sp4,部署llama2_7B、qwen2_7B模型,对开启高性能开关前后模型的推理性能进行了研究。以下实验数据基于MindIE进行测试,由于软硬件存在差异,以下数据仅作为参考,不作为性能标准。
|
模型 |
并发数 |
输入长度 |
实验次数 |
默认efficiency (tokens/s) |
performance (tokens/s) |
性能收益(%) |
|---|---|---|---|---|---|---|
|
llama_7b |
8 |
128 |
实验1 |
75.4373 |
76.1809 |
0.99 |
|
实验2 |
75.3953 |
76.0922 |
0.92 |
|||
|
实验3 |
75.4051 |
76.0719 |
0.88 |
|||
|
平均值 |
75.4126 |
76.1150 |
0.93 |
|||
|
8 |
256 |
实验1 |
76.5359 |
77.5444 |
1.32 |
|
|
实验2 |
76.5362 |
77.3321 |
1.04 |
|||
|
实验3 |
77.0832 |
77.9778 |
1.16 |
|||
|
平均值 |
76.7184 |
77.6181 |
1.17 |
|||
|
qwen2_7b |
8 |
128 |
实验1 |
83.5893 |
84.6158 |
1.23 |
|
实验2 |
83.4479 |
84.4310 |
1.18 |
|||
|
实验3 |
83.3766 |
84.3732 |
1.20 |
|||
|
平均值 |
83.4713 |
84.4733 |
1.20 |
|||
|
8 |
256 |
实验1 |
84.7990 |
85.8575 |
1.25 |
|
|
实验2 |
84.7267 |
85.5879 |
1.02 |
|||
|
实验3 |
84.8510 |
86.2523 |
1.65 |
|||
|
平均值 |
84.7922 |
85.8992 |
1.31 |
配置方式:通过BMC进入BIOS后,将配置项“PowerPolicy”的值设置为“Performance”,配置路径为“Advanced->Performance Config- >Power Policy”。
修改内存刷新速率
原理:DRAM内存内部使用电容来存储数据,由于电容有漏电现象,经过一段时间电荷会泄放,导致数据不能长时间存储。因此需要不断充电,这个充电的动作叫做刷新。刷新操作与读写操作无法同时进行,即刷新时会对内存的性能造成影响。BIOS为内存刷新速率选项提供了Auto选项,可以根据工作温度自动调节内存刷新速率,相比默认32ms配置可以提升内存性能。
调优配置:将内存刷新速率设置为Auto。
推荐场景:动态调整内存刷新速率,一定程度上可以提升内存拷贝性能,从而有助于模型性能提升。
实验室在Atlas 800T A2上安装openEuler 22.03 sp4,部署llama2_7B、qwen2_7B模型,对不同内存刷新速率对模型的推理性能进行了研究。以下实验数据基于MindIE进行测试,由于软硬件存在差异,以下数据仅作为参考,不作为性能标准。
|
模型 |
并发数 |
输入长度 |
请求数 |
实验次数 |
默认32ms (tokens/s) |
auto (tokens/s) |
性能收益(%) |
|---|---|---|---|---|---|---|---|
|
llama_7b |
8 |
128 |
2000 |
实验1 |
75.4373 |
80.4640 |
6.66 |
|
实验2 |
75.3953 |
80.3319 |
6.55 |
||||
|
实验3 |
75.4051 |
80.4814 |
6.73 |
||||
|
平均值 |
75.4126 |
80.4258 |
6.65 |
||||
|
8 |
256 |
2000 |
实验1 |
76.5359 |
81.8636 |
6.96 |
|
|
实验2 |
76.5362 |
81.8073 |
6.89 |
||||
|
实验3 |
77.0832 |
81.7618 |
6.07 |
||||
|
平均值 |
76.7184 |
81.8109 |
6.64 |
||||
|
qwen2_7b |
8 |
128 |
2000 |
实验1 |
83.5893 |
87.0385 |
4.13 |
|
实验2 |
83.4479 |
87.1340 |
4.42 |
||||
|
实验3 |
83.3766 |
86.9090 |
4.24 |
||||
|
平均值 |
83.4713 |
87.0272 |
4.26 |
||||
|
8 |
256 |
2000 |
实验1 |
84.7990 |
87.9068 |
3.66 |
|
|
实验2 |
84.7267 |
87.8995 |
3.74 |
||||
|
实验3 |
84.8510 |
87.8859 |
3.58 |
||||
|
平均值 |
84.7922 |
87.8974 |
3.66 |
配置方式:通过BMC进入BIOS后,将配置项“Custom Refresh Rate”的值设置为“Auto”,配置路径为“Advanced->Memory Config- >Custom Refresh Rate”。
修改CPU的预取开关
原理:CPU将内存中的数据读取到内部高速缓冲Cache时,会根据局部性原理,除了读取本次要访问的数据,还会预取本次数据的周边数据到Cache里面,如果预取的数据是下次要访问的数据,则性能会提升。
调优配置:打开CPU预取。
缺点:对于数据比较集中的场景,预取的命中率高,适合打开CPU预取,反之需要关闭CPU预取。
推荐场景:在推理场景下,打开CPU预取功能,可以有效提升CPU读取数据的性能,从而提升模型的性能。
实验室在Atlas 800T A2上安装openEuler 22.03 sp4,部署llama2_7B、qwen2_7B模型,对开启cpu预取开关前后模型的推理性能进行了研究。以下实验数据基于MindIE进行测试,由于软硬件存在差异,以下数据仅作为参考,不作为性能标准。
|
模型 |
并发数 |
输入长度 |
实验次数 |
默认开启CPU预取 (tokens/s) |
关闭CPU预取 (tokens/s) |
性能收益(%) |
|---|---|---|---|---|---|---|
|
llama_7b |
8 |
128 |
实验1 |
75.4373 |
74.7984 |
-0.85 |
|
实验2 |
75.3953 |
74.6472 |
-0.99 |
|||
|
实验3 |
75.4051 |
74.6587 |
-0.99 |
|||
|
平均值 |
75.4126 |
74.7014 |
-0.94 |
|||
|
8 |
256 |
实验1 |
76.5359 |
75.9913 |
-0.71 |
|
|
实验2 |
76.5362 |
75.9398 |
-0.78 |
|||
|
实验3 |
77.0832 |
76.4258 |
-0.85 |
|||
|
平均值 |
76.7184 |
76.1190 |
-0.78 |
|||
|
qwen2_7b |
8 |
128 |
实验1 |
83.5893 |
82.1724 |
-1.70 |
|
实验2 |
83.4479 |
81.9364 |
-1.81 |
|||
|
实验3 |
83.3766 |
82.0396 |
-1.60 |
|||
|
平均值 |
83.4713 |
82.0495 |
-1.70 |
|||
|
8 |
256 |
实验1 |
84.7990 |
83.6620 |
-1.34 |
|
|
实验2 |
84.7267 |
83.0590 |
-1.97 |
|||
|
实验3 |
84.8510 |
83.9055 |
-1.11 |
|||
|
平均值 |
84.7922 |
83.5422 |
-1.47 |
配置方式:通过BMC进入BIOS后,将配置项“CPU Prefetching Configuration”配置为“Enabled”,配置路径为“Advanced->MISC Config- >CPU Prefetching Configuration”。
关闭SMMU
原理:SMMU主要实现虚拟地址到物理地址的转换, 但是SMMU可能会增加额外的查表开销和延迟,从而降低系统的性能
调优配置:关闭SMMU。
推荐场景:在非虚拟机场景下(裸机、docker)关闭 SMMU,有助于提升模型性能。
实验室在Atlas 800T A2上安装openEuler 22.03 sp4,部署llama2_7B、qwen2_7B模型,对开启SMMU开关前后模型的推理性能进行了研究。以下实验数据基于MindIE进行测试,由于软硬件存在差异,以下数据仅作为参考,不作为性能标准。
|
模型 |
并发数 |
输入长度 |
实验次数 |
默认关闭SMMU (tokens/s) |
开启SMMU (tokens/s) |
性能收益(%) |
|---|---|---|---|---|---|---|
|
llama_7b |
8 |
128 |
实验1 |
75.4373 |
74.9460 |
-0.65 |
|
实验2 |
75.3953 |
74.7320 |
-0.88 |
|||
|
实验3 |
75.4051 |
75.0313 |
-0.50 |
|||
|
平均值 |
75.4126 |
74.9031 |
-0.68 |
|||
|
8 |
256 |
实验1 |
76.5359 |
75.7005 |
-1.09 |
|
|
实验2 |
76.5362 |
75.6460 |
-1.16 |
|||
|
实验3 |
77.0832 |
75.8298 |
-1.63 |
|||
|
平均值 |
76.7184 |
75.7254 |
-1.29 |
|||
|
qwen2_7b |
8 |
128 |
实验1 |
83.5893 |
81.5155 |
-2.48 |
|
实验2 |
83.4479 |
81.7802 |
-2.00 |
|||
|
实验3 |
83.3766 |
82.2530 |
-1.35 |
|||
|
平均值 |
83.4713 |
81.8496 |
-1.94 |
|||
|
8 |
256 |
实验1 |
84.7990 |
82.8234 |
-2.33 |
|
|
实验2 |
84.7267 |
82.7696 |
-2.31 |
|||
|
实验3 |
84.8510 |
82.7741 |
-2.45 |
|||
|
平均值 |
84.7922 |
82.7890 |
-2.36 |
配置方式:通过BMC进入BIOS后,将配置项“Support Smmu”配置为“Disabled”,配置路径为“Advanced->MISC Config- >Support Smmu”。