cpupower -c all frequency-set -g performance
echo always > /sys/kernel/mm/transparent_hugepage/enabled
服务化进程可能与模型执行进程抢占CPU资源,导致性能时延波动;可以在启动服务时将服务化进程手动绑核至CPU奇数核,以减少CPU抢占影响,降低性能波动,具体方法如下所示。
lscpu
CPU相关配置回显信息如下所示:
NUMA: NUMA node(s): 8 NUMA node0 CPU(s): 0-23 NUMA node1 CPU(s): 24-47 NUMA node2 CPU(s): 48-71 NUMA node3 CPU(s): 72-95 NUMA node4 CPU(s): 96-119 NUMA node5 CPU(s): 120-143 NUMA node6 CPU(s): 144-167 NUMA node7 CPU(s): 168-191
taskset -c $cpus ./bin/mindieservice_daemon
$cpus:为CPU配置回显信息中node1、node3、node5或node7的值。
./bin/mindieservice_daemon
回显如下则说明启动成功。
Daemon start success!
服务启动后,可通过info级打屏日志k_caches[0].shape=torch.Size([npuBlockNum, x, x, x])中torch.Size的第一个值获取npuBlockNum的值,如图1所示,与3.a中计算出来的值一致。
重开一个窗口,使用以下命令发送请求,获取当前DecodeTime的平均值(Average),此时Decode平均时延为60.1889ms。
benchmark \ --DatasetPath "/{数据集路径}/GSM8K" \ --DatasetType "gsm8k" \ --ModelName LLaMa3-8B \ --ModelPath "/{模型路径}/LLaMa3-8B" \ --TestType client \ --Http https://{ipAddress}:{port} \ --ManagementHttp https://{managementIpAddress}:{managementPort} \ --Concurrency 1000 \ --TaskKind stream \ --Tokenizer True \ --MaxOutputLen 512
以上结果超过了Decode平均时延为50ms的限制,所以需要调小“maxBatchSize”的值继续调试。
以上结果可以看到Decode平均时延满足50ms以内的限制,但是还未接近50ms,所以需要调大“maxBatchSize”的值继续进行调试。
以上结果可以看到Decode平均时延已经很接近50ms,此时几乎已达到限制Decode时延下的最大吞吐量。如需获取Decode平均时延更接近50ms时的“maxBatchSize”值,请根据以上操作步骤继续调试。