以首token平均时延限制在8000ms以内、Decode平均时延限制50ms以内为目标,首token时延限制严格,且非首token时延也有限制的调试方式如下所示。
cpupower -c all frequency-set -g performance
echo always > /sys/kernel/mm/transparent_hugepage/enabled
./bin/mindieservice_daemon
回显如下则说明启动成功。
Daemon start success!
服务启动后,可通过info级打屏日志k_caches[0].shape=torch.Size([npuBlockNum, x, x, x])中torch.Size的第一个值获取npuBlockNum的值,如图1所示,与3.a中计算出来的值一致。
需要将“supportSelectBatch”参数设置为false,以获取更低的首token时延。
重开一个窗口,使用以下命令发送请求,获取当前首token平均值(Average)和DecodeTime的平均值(Average),如图2所示,此时首token平均时延为21252.0612ms,decode平均时延为73.7486ms。
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
以上结果超过了首token平均时延为8000ms和Decode平均时延为50ms的限制,所以需要调小“maxBatchSize”的值继续调试。
以上结果同样超过了首token平均时延为8000ms和Decode平均时延为50ms的限制,所以需要调小“maxBatchSize”的值继续调试。
以上结果可以看到首token平均时延和Decode平均时延已经在限制的8000ms和50ms以内,且Decode平均时延已经很接近50ms,此时几乎已达到限制首token时延和Decode时延下的最大吞吐量。如需获取Decode平均时延更接近50ms时的“maxBatchSize”值,请根据以上操作步骤继续调试。