不考虑时延的极限吞吐的调试方式如下所示。
./bin/mindieservice_daemon
回显如下则说明启动成功。
Daemon start success!
服务启动后,可通过info级打屏日志k_caches[0].shape=torch.Size([npuBlockNum, x, x, x])中torch.Size的第一个值获取npuBlockNum的值,如图1所示,与2.a中计算出来的值一致。
重开一个窗口,使用以下命令发送请求,获取当前的吞吐量(GenerateSpeedPerClient),如图2所示,此时吞吐量为2.8453 token/s。
benchmark \ --DatasetPath "/{模型库安装路径}/tests/modeltest/dataset/full/GSM8K" \ //数据集路径 --DatasetType "gsm8k" \ //数据集类型 --ModelName LLaMa3-8B \ //模型名称 --ModelPath "/{data}/LLaMa3-8B" \ //模型路径 --TestType client \ //模式选择 --Http https://{ipAddress}:{port} \ //请求url --Concurrency 1000 \ //并发数 --TaskKind stream \ //Client不同推理模式,此处为文本流式推理 --Tokenizer True \ //分词向量化标识 --MaxOutputLen 512 //最大输出长度
当“maxBatchSize”的值为600时,此时的吞吐量明显下降,停止调高“maxBatchSize”的值。
综上所述,当“maxBatchSize”的值在500左右时,可达到极限吞吐。如需获取达到极限吞吐时更精准的“maxBatchSize”值,请根据以上操作步骤继续调试。